Как ограничить использование процессора Google Compute Engine до 100%

782
user3335011

Я запускаю пакетные задания на n1-highcpu-32экземплярах Ubuntu 14.04, которые имеют 16 физических (32 виртуализированных) ядер. Это должно быть тривиальным случаем (по сравнению с MPI), но загрузка ЦП повсеместно, как сообщается top.

Некоторые задания выполняются с нагрузкой на процессор 300%, а другие - только на 10%. Следовательно, время завершения всей партии в 10 раз больше, чем должно быть. Каждое из заданий выполняется с одинаковым кодом, который не является многопоточным.

Есть ли способ предотвратить такое поведение? Может быть, ограничить загрузку процессора до 100% или что-то?

0

1 ответ на вопрос

0
Misha Brukman

Вы можете запустить каждый процесс в отдельном контейнере Docker. По умолчанию --cpu-quotaустановлено значение 0, что обеспечивает 100% одного процессора, поэтому вы должны быть полностью настроены. Если вы хотите выбрать значение вручную, используйте:

docker run -it --cpu-quota="..." [container] [command] [args] 

Кроме того, вы можете назначить конкретные процессоры для данного процесса Docker через --cpu-setcpusфлаг, например:

docker run -it --cpuset-cpus="1,3" [container] [command] [args] 

Более подробную информацию см в docker runдокументации :

Ограничение квоты процессора

--cpu-quotaФлаг ограничивает использование процессора контейнера. Значение по умолчанию 0 позволяет контейнеру использовать 100% ресурсов ЦП (1 ЦП). CFS (полностью честный планировщик) обрабатывает распределение ресурсов для выполняющихся процессов и является планировщиком Linux по умолчанию, используемым ядром. Установите это значение на 50000, чтобы ограничить контейнер до 50% ресурсов ЦП. Для нескольких процессоров отрегулируйте при --cpu-quotaнеобходимости. Для получения дополнительной информации см. Документацию CFS по ограничению пропускной способности.

Похожие вопросы