Улучшение флагов для оптимизации загрузки emerge

Заметил следующее:

самая эффективная загрузка ЦПУ достигается не при MAKEOPTS=“-jN” (N - количество ядер + 1), а EMERGE_JOBS=“-jN” (при этом MAKEOPTS=“-j1”). Однако это тоже малоэффективно, когда в очереди зависящие друг от друга пакеты, которые не могут быть собраны одновременно.

Логично добавить -jN и в MAKEOPTS и EMERGE_JOBS, но тогда количество тяжёлых потоков будет равно квадрату кол-ва ядер, а это далеко за пределами формулы (cores_n + 1). Однако за счёт того, что и emerge, как и make, понимает --load-average, или -l, можно и в обе переменные засунуть -jN -lN:

# Количество доступных ядер
CPU_CORES=4
BTHREADS=$(( CPU_CORES + 1 ))

# Количество пакетов для одновременной сборки.
EMERGE_JOBS="-j${BTHREADS} -l${BTHREADS}"

#------------------------------------
# Настройки компилятора
#------------------------------------
# Количество параллельных процессов, запускаемых при установке пакета.
MAKEOPTS="-j${BTHREADS} -l${BTHREADS}"

Тогда и получится настоящая масштабируемость. При резком изменении в потребности нагрузки (например пытаясь работать в вебе пока идут обновления или пересборка мира) максимальный отклик - не больше минуты (может и меньше). При недостатке нагрузки - новые процессы появятся довольно быстро, а при избытке достаточно только дождаться, пока текущие отработают.

Думаю, такую схему стоит добавлять по дефолту. Можно даже в отдельный сниппет в /etc/portage/make.conf/.

У меня на gentoo так

## GCC settings
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -g -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j32 -l32"

Все работает что накрутили разрабы calculate я хз снес её

P.S флаг -g нужен мне для отладки кода если не программируете то удалить его

Ну да, возможно на ноуте и так нормально - чтобы держать стабильно загрузку ЦПУ 100% на максимальной частоте нужно мощное охлаждение с наисвежайшей порцией термопасты :slight_smile: .
У меня в cpupower - -g performance, -b 0, так частота только половину или треть времени на максимуме, остальное - думаю, тротлится до powersave.