Как определить хорошее значение для --load-average с помощью gnu Make?

В Сделать этот флаг существует:

-l [load], - load-average [= load]  Указывает, что никакие новые задания (команды) не должны запускаться, если выполняются другие задания, а средняя нагрузка равна, по крайней мере, нагрузке (число с плавающей запятой). Без аргумента удаляет предыдущий предел нагрузки.

Есть ли у вас хорошая стратегия для того, какую ценность использовать для ограничения нагрузки? Кажется, что между моими машинами очень много.

Ответ 1

Допустимая нагрузка зависит от количества ядер ЦП. Если есть одно ядро, чем среднее нагрузка более 1, это перегрузка. Если есть четыре ядра, чем средняя загрузка более четырех, это перегрузка.

Люди часто просто указывают количество ядер с помощью ключа -j.

См. здесь некоторые эмпирические числа: fooobar.com/questions/466743/...

Ответ 2

Я рекомендую не использовать параметр -l.

В принципе, -l кажется выше -j. -j говорит, начните это много заданий. -l говорит, убедитесь, что это работает много заданий. Часто, это почти одно и то же, но когда у вас связаны задания ввода-вывода - это другие странности, тогда -l должен быть лучше.

Тем не менее, понятие средней нагрузки немного сомнительно. Это обязательно выборка того, что происходит в системе. Поэтому, если вы запустите make -j -l N (для некоторых N), и у вас есть хорошо написанный make файл, тогда make немедленно запустит большое количество заданий и закончится файловыми дескрипторами или памятью, прежде чем даже первый образец загрузки системы могут быть приняты. Кроме того, учет среднего значения нагрузки различается в разных операционных системах, а некоторые неясные - вообще отсутствуют.

На практике вы будете использовать -j и будете иметь меньше головных болей. Чтобы получить больше производительности из сборки, настройте свои файлы make файлов, поиграйте с параметрами компилятора и используйте ccache или подобное.

(Я подозреваю, что первоначальная причина для опции -l связана с тем, что несколько процессоров были редкими, а I/O был очень медленным.)