make (использование параметра -j)

Я пытаюсь понять истинное значение параметра -j в команде make . Согласно руководству, с помощью этой опции пользователь может «указать количество одновременно выполняемых заданий». На самом деле я хочу понять связь между числовым значением, указанным в этой опции, и количеством ядер / потоков ПК. Итак, если, например, я использую:

make -j 8

, это означает, что мой компьютер имеет как минимум 8 ядер (или потоков)?

И, если эта ссылка существует, что произойдет, если указанное значение в опции -j больше, чем количество ядер / потоков ПК? Будет ли этот вариант просто проигнорирован?

Спасибо всем, кто так любезен ответить на мои (глупые) сомнения.

0
задан 27 November 2020 в 19:35

2 ответа

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

Многие заставляют задания использовать столько процессоров, сколько есть в системе. На моем компьютере четыре процессора, что эквивалентно установке «-j 4». Это позволит make завершить работу в кратчайшие сроки.

Однако, если вы используете все или слишком много процессоров, вы потеряете некоторый контроль над системой, так как свободных процессоров нет. Так что мне всегда говорили использовать опцию -j с одним МЕНЬШИМ ЦП, чем у вас есть на самом деле, поэтому, если вам нужно управлять -c make (например), оставшийся процессор сможет это сделать. В моем случае я бы использовал "-j 3".

Попробуйте использовать -j CPUs, или CPUs + 1, или CPUs * 2, и посмотрите, что лучше всего подходит для вас. Чтобы рассчитать время каждого запуска, добавьте к команде префикс time , и это даст вам конкретное время компиляции / выполнения.

1
ответ дан 3 January 2021 в 22:48

Этот параметр указывает, сколько потоков одновременно будет использоваться .

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

Если вы установите слишком мало потоков, не все ядра ЦП будут загружены.

Есть некоторые рекомендации использовать +1 или даже * 2. Я использую дважды # ядер ЦП.

Вы можете проверить, какой способ дает лучший результат.

2
ответ дан 3 January 2021 в 22:48

Другие вопросы по тегам:

Похожие вопросы: