環境
- Ubuntu 18.04, 20.04 混在
- clang コンパイラ
- Ryzen 16 コアマシン x 2
設定
distccでビルドを速くする
https://mongonta.com/f281-short-buildtime-with-distcc/
あたりを参考にして設定するだけです.
njobs が少ない
/etc/default/distcc
で JOBS="32" とかにしているが,
distcc -j
とすると, 16 コア(32 threads)な CPU なのに 6
(メインノードを localhost で指定) や 8
(メイン, クライアントそれぞれを IP 指定) としか出ない.
ninja -j32
とかしても 8 jobs(8 プロセス) に制約される.
どうも distcc のデザイン自体が古いようで, 多コアな環境に対応していないっぽい?ようです.
localhost
だと 2 に制限されるのはここですね.
結論
なんか多コアでビルドする例もインターネットに無いようですし, 多コア向け distcc の開発もそんなに活発ではないようですので, 多コアでビルドしたい場合は IncrediBuild などの商用なツールを使ったほうがいいのかもしれません.
(あとはネットワークも 10 GbE or InfiniBand にしないとファイルの転送がボトルネックになりそう)
16 ~ 32 コアとかだと llvm みたいな大きめな C++ プロジェクトでも 7 分くらいで終わるので, ビルド時間が開発に大きなインパクトを与えるのでなければ, 無理して distcc で分散して早くする必要が無いというのもありそうです.