2016-09-26 2 views
1

У меня есть несколько процессов, которые запускаются как контейнеры докеров и несколько, которые запускаются непосредственно на хосте. На самом деле один из этих хостов также запускает другие контейнеры докеров. Итак, переместить все в докер и запустить докер внутри докера не то, что я хочу сделать.Конкуренция процессора Docker с хост-процессами

При большой нагрузке, когда запускается несколько контейнеров докеров, они в конечном итоге принимают 100% процессорного уровня, практически не оставляя ничего для хост-процессов. Даже хост-процесс, который должен был убить эти контейнеры, не мог работать.

Можно ли ограничить общее использование ЦП для всех контейнеров докеров, что-то вроде 90%, поэтому даже при большой нагрузке хост-процессы получают 10% -ный процессор?

Настройка совместного использования cpu не помогает, поскольку они являются только относительными весами для всех контейнеров докеров. Они ничего не оставляют для хозяина.

Установка квоты CPU неоптимальна, они либо приводят к использованию при низком уровне использования, но и не останавливаются, когда нагрузка тяжелая.

ответ

1

Вы не можете ограничить нагрузку таким образом, если вы используете изначально.

Если вы используете виртуальную машину (например, работаете на OSX или Windows), вы можете ограничить ее с помощью настроек виртуальной машины, но в противном случае на самом деле нет эффективного способа сделать это с помощью докера.

Однако, если вы хотите ограничить общее количество доступных для этого процессоров, вы можете попробовать --cpuset (doc link), который позволяет указать общее количество доступных ЦП для контейнера.

В зависимости от вашей ситуации вы можете выполнить эту работу - если вы запустите на 4-ядерном компьютере, вы можете выделить 3 контейнера и оставить 1 для хоста. Это все еще неэффективно, но, возможно, достаточно хорошо для вашей ситуации.

Из документов:

$ docker run -it --cpuset-cpus="1,3" ubuntu:14.04 /bin/bash 

Но я не уверен, что это будет лучше, если вы уже найти вариант квоты процессора для ограничения.

0

Чтобы расширить последний ответ, количество процессоров, предназначенных для докеров, можно увидеть в дополнительных настройках (в версии Windows).

enter image description here

Смежные вопросы