はじめに
- 以前、以下のような高速化をはかり改善した
- 【TravisCI高速化】bundle installを毎回走らせないようにキャッシュする
- 【TravisCI高速化】並列実行で実行時間を短縮する
- 【TravisCI高速化】aptのキャッシュを利用する
背景
- TravisCIで以下のようなことを実行してみた
- openCVのインストール
- railsアプリの起動
- 単体/受け入れテスト
- ところが、openCVのインストールを当然ながら毎回するので、30分程度環境構築にかかってしまう
- それでは使い物にならないため、改善できるところがないか考えてみた
改善
- makeやmake installのオプションで高速化できるという記事があった
- http://d.hatena.ne.jp/rx7/20070927/p1
- やってみると超絶高速化することができた
オプションの指定
- make,make installに付けるオプションは-j2,-j4, -j8のようにすればジョブ数の指定ができる
- 目安として
$ make -j ${コア数 x 2}
と上の記事で書いてあったのでコア数を確認
Travisのインスタンスのコア数
- 以下の記事によればTravisで使用するインスタンスのコア数は2ということ
- http://nanapi.co.jp/blog/2014/04/16/travis-ci-vs-circleci/
TravisCIに適したオプション
- 他のサービスの.travis.ymlをいくつか覗いてみると、-j4や-j8と書かれていたものがちょこちょこ見られた
- -j(ジョブ数制限なし=無制限)はシステムに影響を与える可能性があると書いてあったが、-j4, -j8, -jオプション付きでそれぞれ試してみた
- 結果、-j4, -j8, -jに大差はなかった
- 結論として、TravisCIではmakeのオプションは-j4,-j8を使うのがアンパイなのかもしれない
- というかオプションなしでは遅すぎてCIどころじゃない
効果確認
- openCVのインストールを含めた環境構築に30分程度かかっていたものが8〜10分でできるようになった
curl -sL https://github.com/Itseez/opencv/archive/2.4.5.zip > opencv.zip
unzip opencv.zip > $HOME/opencv.log
cd opencv-2.4.5
mkdir build
cd build/
cmake -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D WITH_1394=OFF -D ENABLE_OPENMP=ON ../
make -j4 #<= オプション追加
sudo make -j4 install #<= オプション追加
sudo ldconfig
~ただの宣伝~
- 全国のSeleniumer必読
- Seleniumerといっていますが、Selenium, SauceLabs, Travis, Jenkinsに関するノウハウ書いているのでよかったら参考にしてみてください