Привет, ЛОР.
Я решил привлечь к сборке gentoo свой домашний сервер-файлопомойку через distcc. Для этого поставил на сервере gentoo в контейнер lxc, чтобы не было проблем из-за разных версий gcc, и настроил всё по статье из wiki.
Суть проблемы:
Всё работает, в htop и distccmon-text видно, что сервер всеми четырьмя ядрами помогает компилировать. Но планировалось получить ускорение на уровне 15%-25%, а получилось не больше 7%. Так и должно быть, или я упускаю что-то важное?
На локалхосте, на котором живет компилируемая gentoo, стоит AMD Phenom(tm) II X6 1055T Processor.
На сервере стоит AMD Athlon(tm) X4 740 Quad Core Processor.
Конфиги на сервере:
# grep -v '^#\|^$' /etc/conf.d/distccd
DISTCCD_EXEC="/usr/bin/distccd"
DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"
DISTCCD_OPTS="--port 3632 --log-level notice --log-file /var/log/distccd.log -N 15 --allow 192.168.15.0/24"
Конфиги на локальной машине:
$ cat /etc/portage/make.conf
#CFLAGS="-march=native -O2 -pipe"
CFLAGS="-march=amdfam10 -O2 -pipe -mcx16 -msahf -mpopcnt -mabm -mlzcnt -mprfchw -mfxsr --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=amdfam10 -fstack-protector"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"
ABI_X86="64"
#MAKEOPTS="-j7"
MAKEOPTS="-j21 -l6"
FEATURES="distcc distcc-pump"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"
VIDEO_CARDS="radeon r600"
LINGUAS="ru"
SANE_BACKENDS="epkowa"
USE="mmx mmxext sse sse2 sse3 sse4a 3dnow 3dnowext \
bindist pulseaudio -gnome -kde \
bash-completion vdpau -avahi \
-bluetooth -qt5 infinality -ldap smp \
glamor udev -libav ffmpeg -vaapi ipv6"
CFLAGS
и MAKEOPTS
я сделал, следуя рекомендациям всё той же статьи из gentoo wiki.
$ grep -v '^#\|^$' /etc/conf.d/distccd
DISTCCD_EXEC="/usr/bin/distccd"
DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"
DISTCCD_OPTS="--port 3632 --log-level notice --log-file /var/log/distccd.log -N 15 --allow 192.168.15.0/24"
Результаты тестирования:
Проверял скорость сборки firefox командой { time emerge firefox ; } 2> /tmp/distcc
.
В /etc/portage/make.conf закоментировано всё, что относится к distcc, собираем силами одного Phenom II 1055T на локалхосте:
real 22m7.832s
user 83m18.755s
sys 5m37.575s
------------------
Включаем distcc в make.conf, в /etc/distcc/hosts написано localhost 192.168.15.61
:
real 22m20.462s
user 11m3.583s
sys 3m43.100s
------------------
Увеличиваю в /etc/distcc/hosts лимиты на количество процессов distcc — localhost/6 192.168.15.61/4
:
real 21m51.957s
user 11m7.690s
sys 3m32.900s
------------------
Читаю мануал дальше, делаю --randomize localhost/6 192.168.15.61,cpp,lzo
:
real 20m53.875s
user 53m16.153s
sys 5m7.439s
------------------
И убираю из /etc/distcc/hosts --randomize, в итоге в файле написано localhost/6 192.168.15.61,cpp,lzo
:
real 20m43.418s
user 54m1.178s
sys 5m7.274s