@ KellanM заслуженно [+ 1] для количественного мониторинга производительности
Я что-то упустил в своей реализации?
Да, вы абстрагируетесь от всех дополнительных расходов от управления процессами.
Несмотря на то, что вы выразили ожидание " линейного улучшения с дополнительными ядрами. ", это вряд ли могло бы появиться на практике по нескольким причинам (даже обман коммунизма не смог обеспечить все бесплатно).
Джин AMDAHL сформулировал начальный закон убывающей отдачи .
![enter image description here](https://i.stack.imgur.com/MwPSd.png)
Более поздняя, переформулированная версия , также учитывала влияние управления процессами {setup | terminate} - дополнительные расходы и пробовала справиться с атомарностью обработки (учитывая, что большие полезные нагрузки рабочих пакетов не могут быть легко перераспределены / перераспределены по доступному пулу свободных ядер ЦП в большинстве распространенных систем программирования (за исключением некоторых действительно специфических микро-расписаний) искусство, подобное тому, что продемонстрировано в PARLANSE или SISAL компании LLNL, было продемонстрировано в прошлом).
Лучший следующий шаг?
Если вы действительно заинтересованы в этой области, всегда можно экспериментально измерить и сравнить реальные затраты на управление процессами (плюс затраты на передачу данных, плюс затраты на выделение памяти ... до момента завершения процесса и повторной сборки результатов). в основном процессе) для количественной достоверной записи и оценки соотношения дополнительных затрат и выгод при использовании большего количества процессорных ядер (что в python
восстановит все состояние интерпретатора Python, включая все его состояние памяти перед выполнением первой полезной операции в первом процессе порождения и настройки).
Низкая производительность (для первого случая ниже)
если не катастрофические последствия (из последнего случая ниже),
любой из плохо спроектированных политик сопоставления ресурсов, будь то
an " under-booking"- ресурсы из пула CPU -core
или
и" over-booking"- ресурсы из пула RAM -space
обсуждается также здесь
Ссылка на переформулированный Закон Амдала выше поможет вам оценить точку убывающей прибыли, а не платить больше, чем когда-либо получит.
Эксперименты Hoefinger et Haunschmid могут послужить хорошим практическим доказательством того, как будет расти число обрабатывающих узлов (будь то локальное ядро CPU с управляемым O / S или узел распределенной архитектуры NUMA) начать уменьшать результирующую производительность,
где Точка убывающей отдачи (продемонстрировано в законе верховного агностика Амдала)
фактически станет Очком, после которого вы платите больше, чем получаете. :
Удачи на этом интересном поприще!
![enter image description here](https://i.stack.imgur.com/DqUkN.png)
И последнее, но не менее важное:
Проблемы NUMA / не-локальности услышат свое мнение при обсуждении масштабирования для настройки на уровне HPC (вычислительные стратегии in-Cache / in-RAM) и могут - как побочный эффект - помочь обнаружить недостатки (как сообщается @ eryksun выше). Вы можете свободно просматривать текущую NUMA-топологию своей платформы с помощью инструмента lstopo
, чтобы увидеть абстракцию, с которой пытается работать операционная система, запланировав «просто» - [CONCURRENT]
выполнение задачи по такой топологии NUMA-ресурсов:
![enter image description here](https://i.stack.imgur.com/7DtTQ.png)