Сколько процессов может быть эффективно запущено одновременно на 8-ядерном компьютере? - PullRequest
0 голосов
/ 04 мая 2020

Я использую многопроцессорный модуль python для открытия нескольких одновременных процессов на 8-ядерном iMa c. Что-то озадачивает меня на мониторе активности. Если я отправляю 5 процессов, то каждый из них сообщает, что использует почти 100% ЦП, но загрузка ЦП в целом составляет около 64%. Если я отправляю 8 одновременных процессов, это приводит к примерно 50% использованию.

Правильно ли я интерпретирую данные монитора активности, что означает, что я могу эффективно порождать более 8 процессов одновременно?

activity monitor screenshot

1 Ответ

2 голосов
/ 04 мая 2020

Предположительно, ваш "8-ядерный" компьютер поддерживает SMT (Hyperthreading), что означает, что он имеет 16 потоков выполнения или "логических процессоров". Если вы запускаете 8 процессов, связанных с процессором, вы занимаете 8 из этих 16, что приводит к 50% использования / 50% простоя.

Это немного вводит в заблуждение, поскольку SMT-потоки aren ' t независимые ядра; они делят ресурсы со своими «братьями по SMT» на том же ядре. Использование только половины из них не означает, что вы получаете только половину доступной вычислительной мощности. В зависимости от рабочей нагрузки, занятость обоих потоков SMT может получить 150% пропускной способности при использовании только одного; на самом деле это может быть медленнее из-за борьбы с кешем или где-то между ними.

Так что вам нужно проверить себя; Лучшее место для вашего приложения может быть между 8 и 16 параллельными процессами. Единственный способ узнать - это измерить.

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