Как определить правильное значение для --load-average с помощью gnu Make? - PullRequest
13 голосов
/ 05 августа 2010

В Make этот флаг существует:

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

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

Ответы [ 2 ]

5 голосов
/ 13 августа 2010

Допустимая нагрузка зависит от количества ядер процессора. Если есть одно ядро, то средняя нагрузка больше 1 - это перегрузка. Если имеется четыре ядра, то средняя нагрузка, превышающая четыре, является перегрузкой.

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

См. Некоторые эмпирические числа здесь: https://stackoverflow.com/a/17749621/412080

4 голосов
/ 13 ноября 2012

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

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

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

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

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

...