この記事は違うcpuでdistccを使う際の参考です。
この例の場合の条件
ネットワーク => 192.168.0.0/24(192.168.0.0/255.255.255.0) CPUが新しい => phenom(192.168.0.100) CPUが古い => pen3(192.168.0.200)
192.168.0.200 で現在のバージョンを確認します。
$ emerge -pv binutils gcc linux-headers glibc
192.168.0.100 で現在のバージョンを確認します。
emerge -pv cross-i686-pc-linux-gnu/binutils cross-i686-pc-linux-gnu/gcc cross-i686-pc-linux-gnu/linux-headers cross-i686-pc-linux-gnu/glibc
192.168.0.100 でマッチするバージョンをインストールします。
USEをそろえます。multilib はCPUを貸す側には追加されます。
crossdev でインストールします。
USE="-gtk -multilib -openmp mudflap" crossdev -t i686-pc-linux-gnu --binutils 2.18-r3 --gcc 4.3.4 --kernel 2.6.27-r2 --libc 2.9_p20081201-r2
192.168.0.100 で /etc/conf.d/distccd に設定します。
一つのサーバーでIPアドレスが複数ある場合は設定します。
DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.0.100"
192.168.0.200 で/etc/conf.d/distccdに設定します。
一つのサーバーでIPアドレスが複数ある場合は設定します。
DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.0.200"
192.168.0.200 で設定します。
$ distcc-config --set-hosts "192.168.0.100"
192.168.0.200 で /etc/portage/package.mask に設定します。
>sys-devel/binutils-2.18-r3 >sys-kernel/linux-headers-2.6.27-r2 >sys-devel/gcc-4.3.4 >sys-libs/glibc-2.9_p20081201-r2
192.168.0.200 で /etc/make.conf に設定します。
ccache を手前にすると ccache が先になります。
FEATURES="ccache distcc" # ccache, distcc を使う DISTCC_HOSTS="192.168.0.100" # distcc のCPUに余裕のあるIPアドレスの指定 CCACHE_SIZE="2G" # ccache のキャッシュファイルの最大容量 CCACHE_DIR="/var/tmp/ccache" # ccache の保存ディレクトリ MAKEOPTS="-j3" # emerge の gcc に渡す同時実行数(pump とは異なる)
192.168.0.100 で /etc/portage/package.mask に設定します。
>cross-i686-pc-linux-gnu/binutils-2.18-r3 >cross-i686-pc-linux-gnu/gcc-4.3.4 >cross-i686-pc-linux-gnu/linux-headers-2.6.27-r2 >cross-i686-pc-linux-gnu/glibc-2.9_p20081201-r2
両方のサーバーでdistccを起動します。
$ rc-update add distccd default $ /etc/init.d/distccd restart
192.168.0.200 で /etc/make.conf の -march=native を分解します。
-march=native をコンパイルオプションに含む場合 distcc は無効になります。
CFLAGS="-march=pentium3 --param l1-cache-size=16 --param l1-cache-line-size=32 -mtune=generic -fomit-frame-pointer -O2" CXXFLAGS="${CFLAGS}"
192.168.0.200 で emerge パッケージ名 などのコマンドを実行します。
$ emerge -eav system
192.168.0.100 でパケットを見ます。
$ tcpdump tcp port 3632 -n
以前 glibc のバージョンが違う場合で、かつ ppc が CPU を借りる側の場合に glibc が sunrpc に関するエラーでコンパイルできなかったので、バージョンを合わせるのはお勧めです。
gcc,glibcなどのパッケージの3つ目の番号が違う場合は、動きます。
xxx-3.4.5 => xxx-3.4.6
コンパイル以外の部分は早くなりません。
./configure ... checking xxx
参考
http://d.hatena.ne.jp/tmatsuu/20090110/1231557035
http://www.gentoo.org/doc/ja/distcc.xml
http://www-auklet.gentoo.org/doc/ja/handbook/handbook-sparc.xml?part=2&chap=3
0 件のコメント:
コメントを投稿