размещает ли nohup каждый процесс на одном ядре?

размещает ли nohup каждый процесс на одном ядре?

я читалэта ссылкатолько что и это заставило меня задуматься.

Некоторое время назад я запускал симуляции на 30 ядрах 32-ядерной виртуальной машины и делал это с помощью скрипта-обертки, который вызывал nohup perl ...<rest of command>...и перенаправлял STOUT/STDERR. Я не уверен, что подробности настолько важны, поэтому я избавлю вас от подробностей.

Концептуально я доволен многопоточной обработкой задач, но я наивно полагал, что перевода каждого процесса в фоновый режим в моем вызове nohup (каждый процесс представлял собой отдельную симуляцию, которая затем выполнялась в течение нескольких недель) будет достаточно для помещения каждого дочернего процесса в собственное ядро/поток, а затем простого продолжения до завершения, без обращения к GNU Parallels или чему-то подобному.

Я периодически проверял их и всегда видел, что над задачами работали 30 виртуальных ЦП, все завершалось в разумные сроки, так что, похоже, с моей логикой пока все в порядке...

Кто-то (кажется, где-то на странице SO) сказал мне, что это может привести к «перегрузке ЦП».

Итак, мой вопрос состоит из нескольких взаимосвязанных частей:

  • Во-первых, был ли я неправ, полагая, что nohup и/или фоновый режим достаточны для закрепления процесса на определенном ядре? (И можно ли отобразить в терминале процесс, запущенный на определенном ядре? Top сообщает только о том, какие ядра заняты, а не о том, какую задачу они выполняют, насколько мне известно?)
  • Во-вторых, будет ли происходить перегрузка ЦП, даже если есть 2 свободных ЦП для обработки других задач системы?
  • И последнее, если я не ошибаюсь, закреплен ли данный процесс за определенным процессором?и только этот процессорили они будут перескакивать между потоками в зависимости от порядка вызовов/времени и т. д., т. е. если я зацикливаюсь на файлах, будет ли первый из них закреплен за процессором 0, затем 1, 2 и так далее до завершения?

решение1

Во-первых, был ли я неправ, предполагая, что nohup и/или фоновый режим — это процесс, который выполняется на определенном ядре, отображаемом в терминале? Top сообщает только о том, какие ядра заняты, а не о том, какую задачу они выполняют, насколько мне известно?) достаточно, чтобы закрепить процесс на определенном ядре? (И может ли

Nohup запускает команды точно так же, как если бы они были запущены без него, единственное отличие в том, что они удаляются из списка pid, которым отправляется сигнал при выходе. (disown работает для процессов, не запущенных с помощью nohup).

Во-вторых, будет ли происходить перегрузка ЦП, даже если есть два свободных ЦП для обработки других задач системы?

Только если загрузка процессора происходит без nohup...

Наконец, если я не ошибаюсь, закрепляется ли данный процесс за определенным ЦП и только за этим ЦП, или он будет переключаться между потоками в зависимости от порядка вызовов/времени и т. д., т. е. если я зацикливаюсь на файлах, первый будет закреплен за ЦП 0, затем 1, 2 и так далее до завершения?

то же самое, что и без nohup...

С помощью ps можно просмотреть, на каком ядре процессора запущен процесс, а с помощью taskset можно ограничить или изменить ограничения для ядер.

ps -eo pid,sgi_p,cmd --sort sgi_p

taskset -c -p 0 1234

решение2

nohupничего не устанавливает для удержания процесса на определенном ядре. Обычно вы используетеtasksetвместе с тем, nohupчтобы сделать это. topможет показать, на каком ядре процесс был запланирован в последний раз, это столбец P.

Планирование процессов и потоков стало довольно сложным за последние годы, поскольку приходится учитывать все больше и больше факторов: соответствие ЦП, соответствие кэшу, обработка прерываний, энергетические пакеты... Но я бы не ожидал никакого торможения, если вы запускаете меньше заданий, чем у вас есть доступных ядер, предполагая, что система не слишком занята другими задачами. Аналогичным образом, вы не можете предсказать, на каком ЦП будет выполняться задача, но если это уместно, планировщик, скорее всего, сохранит ее на том же ядре, как только оно будет выбрано.

Связанный контент