Я использовал экземпляр AWS c5.4xlarge с 16 виртуальными ЦП и запускал программу Python с 10 процессами. Однако загрузка ЦП каждым процессом постепенно упала до 10%, как показано на рисунке, всего за 10 секунд. Общая загрузка ЦП 16 экземпляров виртуальных ЦП составляла всего около 6%.
Я уменьшил количество процессов, но загрузка ЦП каждым процессом все еще была довольно низкой. На моей macOS все нормально.
Что в этом плохого?
У c5.4xlarge, похоже, нет графического процессора. Вне моей компетенции, но, возможно, полезно: github.com/tensorflow/tensorflow/issues/255
Да, я имею в виду, что если я запускаю эту программу с 3 дочерними процессами на моем Mac, каждый процесс будет использовать около 130% ЦП, и, таким образом, 4-ядерный ЦП моего Mac почти израсходован. Но когда я запускаю ту же программу с 3 дочерними процессами на экземпляре aws, каждый процесс занимает всего 30-40% использования ЦП, хотя всего 1600% виртуальных ЦП. Результат AWS действительно правильный. Я еще не сравнивал скорость, потому что на выполнение всей программы уходит много времени. @diginoise
На моем Mac также нет графического процессора, и я не собираюсь его использовать. Но это может вызвать проблемы ... Кстати, похоже, что прецессы обычно запускаются на одном процессоре. Каждый из 10 прецессов потреблял около 10% загрузки ЦП и 100% в сумме. А когда количество процессов было 3, каждый из них занимал порядка 30% - 40%. Странный..





Хорошо, я нашел ответ. Речь идет о сродстве к процессору. Для новичка в Linux: https://en.wikipedia.org/wiki/Processor_affinity
В Linux вы можете выделить процессор для определенного процесса в терминологии Linux:
$ taskset -cp CPU_ID PID
Например:
$ taskset -cp 0-1 1000
выделит CPU 0 и 1 для обработки с ID 1000.
Вы можете найти PID, используя
$ top
в вашем терминале.
что вы имеете в виду, что на вашем Mac все было нормально? Ядра ЦП были заняты больше? Был ли результат вычислений на AWS верным? Это произошло (намного) быстрее, чем на вашем Mac?