This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
EMERGE_DEFAULT_OPTS
Содержимое переменной EMERGE_DEFAULT_OPTS добавляется в командую строку emerge. Она часто используется для определения количества одновременно работающих задач с помощью параметров --jobs N
и --load-average X.Y
, которые сообщают Portage количество одновременно компилируемых пакетов и какая средняя нагрузка на систему (load average) может использоваться.
Популярные примеры использования
Параллельная компиляция
С --jobs N
(короткое обозначение: -jN
), emerge запускает N задач одновременно (без аргумента, параметр -j
займет все процессорное время, создавая задачи компиляции при малейшем появлении свободных ресурсов — это не рекомендуется). Типичное значение для N обычно равно количеству ядер.
Например, чтобы запустить 3 задачи параллельно:
/etc/portage/make.conf
Настройка для компиляции пакетов в 3 параллельных задачахEMERGE_DEFAULT_OPTS="--jobs 3"
В случае использования --load-average X.Y
(короткое обозначение: -lX.Y
), emerge попытается держать среднюю нагрузку на систему меньше чем X.Y, число с плавающей точкой. Если еще используется --jobs
, то также будет работать пределах, которые указаны в этом параметре.
Средняя величина нагрузки это тоже самое, что отображается в top и uptime. Для N-ядерных систем, средняя нагрузка в N.0
даст 100% нагрузку. Другое полезное правило установить X.Y=N*0.9
, что ограничит нагрузку на 90%, что тем самым сохранит отзывчивость системы.
Когда
MAKEOPTS="-jN"
используется вместе с EMERGE_DEFAULT_OPTS="--jobs K --load-average X.Y"
число возможно создаваемых задач может увеличится до N*K
. Поэтому обе переменные должны быть заданы с учетом друг друга, так как вместе они создают K задач, каждая из которых может создать N задач make.Эти две настройки позволяют наиболее подходящим образом использовать параметры --jobs
, в случае длительной компиляции программ с большим количеством файлов исходного кода. Они также могут привести к ошибкам компиляции в некоторых случаях, так что используйте их с осторожностью и будьте готовы закомментировать их, если возникают проблемы.