Почему процесс использует в два раза больше ресурсов процессора на машине с двойным ядром? - PullRequest
0 голосов
/ 22 февраля 2020

Я надеюсь, что кто-то может указать мне правильное направление здесь, чтобы я мог узнать больше об этом.

У нас есть процесс, работающий на нашей 8-ядерной машине iMa c Pro, который использует ~ 78 % CPU.

Когда мы запускаем тот же процесс на нашем новом 16-ядерном компьютере Ma c Pro, он использует ~ 176% CPU.

Какие могут быть причины для этого? Мы надеялись, что дополнительные ядра позволят нам запускать больше процессов одновременно, однако, если каждое из них использует более чем вдвое больше ресурсов ЦП, это, безусловно, означает, что мы сможем запустить меньше процессов на новой машине?

Должно быть что-то Очевидно, я скучаю по архитектуре. Может ли кто-нибудь помочь, пожалуйста? Я понимаю, что не включил никаких примеров кода, я спрашиваю в более общем смысле о сценарии ios, который может привести к этому.

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Более высокая загрузка ЦП просто означает, что он может использовать больше оборудования. Хорошо. Вы должны ожидать, что оно будет использовать это оборудование в течение более короткого периода времени, и поэтому больше всего должно быть выполнено в одно и то же общее время.

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

Если ваша фактическая цель состоит в том, чтобы иметь больше процессов, а не пропускную способность (что может быть очень разумной целью), то вам нужно будет настроить процесс так, чтобы использовать меньше ресурсов, даже когда они доступны. , Как вы это сделаете, полностью зависит от кода. Нужно ли вам это делать, будет зависеть от тестирования того, как система ведет себя, когда существует конфликт между многими процессами. Во многих системах это позаботится о себе. Если нет проблем, нет проблем. Более высокий или низкий коэффициент использования ЦП сам по себе не является проблемой. Это зависит от системы, где находятся ваши узкие места и для чего вы пытаетесь оптимизировать.

1 голос
/ 22 февраля 2020

Я подозреваю, что диспетчер потоков ЦП пытается использовать столько ЦП, сколько может / нужно. Если процессам требуется больше времени, то циклы будут распределяться между собой более экономно. Предположительно ваша задача выполняется соответственно быстрее на новой Ma c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...