Разбираемся с Gentoo и MAKEOPTS=”-j${core} +1″

Восстанавливаю похеренный пост. Значится так, задался я вопросом оптимизации. Начал читать всякое, что еще можно в Gentoo подкрутить, чтобы система работала быстрее. И нашел один пост, автор (участник Gentoo Linux ARM Development, наверное что-то да соображает) пишет, что сборка по формуле j={core} + 1 чуть медленнее, чем просто j={core}.

Посмотрев на его результаты, решил проверить все на своем калькуляторе с 6-ти ядерным AMD Phenom II X6 1055T. Я выделил только результаты со значением j от 5 до 7, ибо понятно, что при значениях меньше 5 и больше 7 будет сильная регрессия. И потом, просто для интереса, добавил опции --load-average=6 и --jobs=6, а также переключил процессор в режим perfomance командой "cpupower frequency-set -g performance".

Сборка происходит в оперативной памяти, emerge собирает с опциями "-q1OB".

Опция -q уменьшает объем сообщений emerge, опция -B создает бинарый пакет, но не устанавливает его, -O устанавливает пакет без его зависимостей, -1 не заносит пакет в world файл.

Итак, приступим. Первый кандидат на тест - Firefox 40.0.2

Стандартные значения, процессор переключен в режим ondemand

job 5 = 19m27.126s
job 6 = 17m0.438s
job 7 = 17m17.294s

Процессор переключен в режим perfomance

job 5 = 18m44.965s
job 6 = 16m25.896s
job 7 = 16m39.971s

Добавлена опция --jobs=6

job 5 = 18m46.808s
job 6 = 16m26.300s
job 7 = 16m42.490s

Добавлена опция --load-average=6

job 5 = 21m6.846s
job 6 = 18m24.210s
job 7 = 19m10.559s

Потом последовал пакет Kdelibs 4.14.8, опции те же самые.

Процессор переключен в режим ondemand

job 5 = 9m18.974s
job 6 = 8m8.003s
job 7 = 8m20.969s

Процессор переключен в режим perfomance

job 5 = 8m51.200s
job 6 = 7m50.196s
job 7 = 7m58.345s

Добавлена опция --jobs=6

job 5 = 8m53.102s
job 6 = 7m50.039s
job 7 = 7m58.541s

Добавлена опция --load-average=6

job 5 = 9m3.678s
job 6 = 8m37.215s
job 7 = 8m52.021s

И на последок - сборка @system.

Вот что собиралось

>>> Emerging (1 of 44) sys-apps/man-pages-4.00::gentoo
>>> Emerging (2 of 44) sys-apps/util-linux-2.25.2-r2::gentoo
>>> Emerging (3 of 44) sys-apps/grep-2.21-r1::gentoo
>>> Emerging (4 of 44) sys-apps/kbd-1.15.5-r1::gentoo
>>> Emerging (5 of 44) sys-apps/busybox-1.23.1-r1::gentoo
>>> Emerging (6 of 44) virtual/service-manager-0::gentoo
>>> Emerging (7 of 44) sys-devel/binutils-2.24-r3::gentoo
>>> Emerging (8 of 44) virtual/man-0-r1::gentoo
>>> Emerging (9 of 44) sys-apps/net-tools-1.60_p20130513023548::gentoo
>>> Emerging (10 of 44) virtual/shadow-0::gentoo
>>> Emerging (11 of 44) virtual/modutils-0-r1::calculate
>>> Emerging (12 of 44) sys-apps/gawk-4.0.2::gentoo
>>> Emerging (13 of 44) app-arch/xz-utils-5.0.8::gentoo
>>> Emerging (14 of 44) sys-apps/sed-4.2.1-r1::gentoo
>>> Emerging (15 of 44) sys-process/psmisc-22.21-r2::gentoo
>>> Emerging (16 of 44) sys-fs/e2fsprogs-1.42.13::gentoo
>>> Emerging (17 of 44) sys-apps/file-5.22::gentoo
>>> Emerging (18 of 44) app-arch/bzip2-1.0.6-r6::gentoo
>>> Emerging (19 of 44) app-arch/tar-1.27.1-r2::gentoo
>>> Emerging (20 of 44) virtual/package-manager-0::gentoo
>>> Emerging (21 of 44) net-misc/rsync-3.1.1::gentoo
>>> Emerging (22 of 44) sys-apps/openrc-0.17::gentoo
>>> Emerging (23 of 44) virtual/editor-0::gentoo
>>> Emerging (24 of 44) sys-apps/coreutils-8.23::gentoo
>>> Emerging (25 of 44) sys-devel/make-4.1-r1::gentoo
>>> Emerging (26 of 44) sys-process/procps-3.3.9-r2::gentoo
>>> Emerging (27 of 44) sys-apps/iproute2-3.19.0::gentoo
>>> Emerging (28 of 44) virtual/ssh-0::gentoo
>>> Emerging (29 of 44) virtual/dev-manager-0::gentoo
>>> Emerging (30 of 44) sys-apps/findutils-4.4.2-r1::gentoo
>>> Emerging (31 of 44) virtual/os-headers-0::gentoo
>>> Emerging (32 of 44) app-arch/gzip-1.6::gentoo
>>> Emerging (33 of 44) net-misc/wget-1.16::gentoo
>>> Emerging (34 of 44) sys-apps/which-2.20-r1::gentoo
>>> Emerging (35 of 44) net-misc/iputils-20121221-r1::gentoo
>>> Emerging (36 of 44) virtual/pager-0::gentoo
>>> Emerging (37 of 44) sys-apps/diffutils-3.3::gentoo
>>> Emerging (38 of 44) sys-apps/baselayout-2.2::gentoo
>>> Emerging (39 of 44) sys-apps/less-478::gentoo
>>> Emerging (40 of 44) app-shells/bash-4.3_p39::gentoo
>>> Emerging (41 of 44) sys-devel/patch-2.7.5::gentoo
>>> Emerging (42 of 44) virtual/libc-0::gentoo
>>> Emerging (43 of 44) sys-devel/gnuconfig-20150308::gentoo
>>> Emerging (44 of 44) sys-devel/gcc-4.8.4::gentoo

Процессор переключен в режим ondemand

-j5 = 48m32.519s
-j6 = 46m2.547s
-j7 = 46m39.452s

Процессор переключен в режим perfomance

-j5 = 28m55.455s
-j6 = 28m27.521s
-j7 = 29m15.811s

Добавлена опция --jobs=6

-j5 = 29m13.803s
-j6 = 27m6.803s
-j7 = 27m18.675s

Добавлена опция --load-average=6

-j5 = 37m52.365s
-j6 = 35m25.080s
-j7 = 35m47.117s

Как видно, при значении опции j={core} компиляция проходит чуть быстрее. И еще в скрипте сборки в оперативной памяти (которым всегда пользуюсь, ссылка в начале поста) я добавил переключение процессора в режим perfomance в начале сборки и возврат в режим ondemand после её окончания ибо это дает дополнительный прирост скорости.

 

Добавить комментарий

Ваш e-mail не будет опубликован.