distccについて

2021-09-09 06:36:39 Thursday

公式のドキュメント Distcc を参照すると、以下のように記述されています。

一般的な戦略としては、 Nの値を「トータルの」(ローカルとリモートの)CPUコアの個数の2倍 + 1に設定し、 Mの値を「ローカルの」CPUコアの個数に設定します。 MAKEOPTS変数で-lMを使用すると過剰なタスクが起動されてしまうのを防ぐことができます。例えば、distccクラスタホストのいくつかが利用できなくなった時(他のシステムでの並列ジョブの量が増加した場合)や、ebuild でリモートビルドを禁止している時(gccなど)です。この仕組みは、システム負荷が M値以上になった時に、それ以上のジョブの追加を拒否することによって行われます。

/etc/portage/make.conf  MAKEOPTSとFEATURESの設定

NとMを計算した正しい値に置き換えてください
MAKEOPTS="-jN -lM"
FEATURES="distcc"

例えば、4コアPCのホスト2台と2コアPCのローカルがあったと仮定しましょう。すると MAKEOPTS 変数は次のようになります。

/etc/portage/make.conf4コア 2台(リモート)と2コア1台(ローカル)での MAKEOPTS の設定例

# 4コアのリモートホスト2台 = 8 コアのリモート
# 2コアのローカルホスト1台 = 2 コアのローカル
# コアの総数は、10 なので、 N = 2*10+1 と M=2
MAKEOPTS="-j21 -l2"

僕の環境の場合、

# 4コアのリモートホスト1台 = 4 コアのリモート
# 8コアのローカルホスト1台 = 8 コアのローカル
# コアの総数は、 12 なので、 N = 1*12+1 と M = 8
MAKEOPTS="-j13 -l8"

となります。

僕が運営しているdiscordサーバーのメンバーに質問したところ、「全部のコア+1」という意見をもらったので、 MAKEOPTS="-j13" となります。

どちらが正しいのかわからないので、詳しい方がいたら是非教えて頂きたく思います。

UQ mobile 【ALL CONNECT】