У меня есть серверная серверная программа, которая запускает Docker-контейнеры с помощью Docker Engine API (Json API), и я хотел бы ограничить количество ядер ЦП на Docker-контейнер, например, до 1.
Docker Engine APIВ документации есть несколько опций для настройки параметров ЦП контейнера, см. https://docs.docker.com/engine/api/v1.24:
"HostConfig": {
"CpuPercent": 80,
"CpuShares": 512,
"CpuPeriod": 100000,
"CpuQuota": 50000,
"CpusetCpus": "0,1",
"CpusetMems": "0,1"
}
Я мог бы использовать CpusetCpus
для этого, но это довольно громоздко, так как мне нужно вести список контейнеров докеровназначены какие ядра процессора.(Мне все равно, на каком ядре процессора работает мой контейнер, я просто хочу избежать использования более чем одного ядра процессора.)
Я также мог бы установить CpuQuota
, чтобы каждый док-контейнер использовал тольконапример, 12,5% всех ядер ЦП, что соответствует 1 ядру ЦП на сервере с 8 ядрами ЦП.Проблема с этим подходом заключается в том, что если я запускаю свою серверную программу на другом сервере с другим числом ядер ЦП, настройка CpuQuota
в 12,5% больше не соответствует 1 ядру ЦП.
Оба варианта вышегромоздки и далеки от идеала.Должен быть лучший / более простой способ установить количество ядер ЦП на контейнер?!