Docker разделяет ЦП и гарантирует минимальный выделенный ЦП для контейнера

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

Распределение ЦП для контейнеров выполняется с помощью docker-compose следующим образом:

  • редис: cpu_shares: 1024
  • mysql: cpu_shares: 1024
  • приложение: cpu_shares: 4096

Меня беспокоит время ожидания запросов к Redis. Нагрузка минимальна, но Redis используется в пакетах с более длительными перерывами, по крайней мере, в среде разработки.

Следовательно, я предполагаю, что докер не выделяет достаточно ресурсов ЦП контейнеру Redis. Я уже думал о том, чтобы поставить постоянную искусственную нагрузку на Redis, чтобы докер мог выделить ему больше ресурсов ЦП.

Есть ли другой способ обеспечить определенную долю ЦП для контейнера?


person andreas    schedule 05.10.2016    source источник


Ответы (1)


С Docker для Mac все ваши контейнеры работают на виртуальной машине HyperKit. Виртуальная машина имеет распределение ЦП и памяти, которое является подмножеством общего количества на вашем Mac.

Вы можете изменить распределение в Настройки — по умолчанию виртуальная машина Docker имеет 2 Процессоры и 2 Гб оперативной памяти.

person Elton Stoneman    schedule 05.10.2016
comment
если я выделил 2 процессора для Docker для Mac, значит ли это, что все мои приложения для Mac смогут использовать не более N-2 ядер, даже если моя виртуальная машина Docker простаивает? - person sscarduzio; 16.03.2017