узкое место пропускной способности памяти

узкое место пропускной способности памяти

У меня есть программа python pandas. Когда я запускаю ее на AWS Ec2 с 8 ядрами, я получаю 100% загрузки ЦП, и программа завершается за 8 минут. Затем, если я использую 16 ядер, я могу получить только 50% загрузки ЦП, и программа все равно завершается за 8 минут. Я подозреваю, что это упирается в узкое место пропускной способности памяти, поэтому я выбрал экземпляр X1,16xlarge, который имеет 64 ядра и заявленную пропускную способность памяти 300 ГБ/с. Однако это не помогло. программа использовала крошечный процент из 64 ядер и не завершилась даже через 10 минут. Экземпляр ec2 X1

Есть идеи, что происходит?

(кстати, эта же программа, запущенная на моем старом настольном компьютере с 4 ядрами, завершилась за 16 минут)

подробнее: программа использует GridSearchCV, который затем используетjoblibдля параллельного запуска многопроцессорной обработки. Количество процессов всегда равно количеству ядер в системе.

решение1

В Python есть «глобальная блокировка интерпретатора», которая ограничивает его способность эффективно использовать несколько потоков. Одинответилна этом сайте вам следует рассмотреть возможность написания критичных по времени функций на языке C/C++.

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

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