Может ли контейнер Docker запускаться "красиво"?
У меня есть образ докера, на котором размещен веб-сервер, и другой, который выполняет фоновые задачи. Большую часть времени веб-сервер простаивает, и фоновые задачи должны иметь возможность использовать 100% процессорных ресурсов, но каждый раз, когда веб-серверу требуются ресурсы, он должен иметь приоритет над процессорами, чтобы он мог быстро реагировать.
Если бы все работало на одной машине Linux, я мог бы использовать что-то вроде nice -n19 background-task
выполнять задачи, и они позволят веб-серверу столько процессорного времени, сколько ему нужно.
Есть ли способ запустить весь контейнер на nice
уровень? Я знаю, что могу ограничить количество процессорного времени, доступного для каждой фоновой задачи, с помощью cpu_quota, но это не решает проблему. Если веб-сервер хочет использовать все 4 ядра ЦП для обслуживания клиента, это должно быть разрешено. Если веб-сервер не занят, все 4 ядра ЦП должны работать в фоновом режиме.
Если я изменю команду в Dockerfile на:
nice -n19 background-task
Будет ли это работать между контейнерами? Процессы внутри контейнеров - это все нормальные процессы, работающие на одном и том же ядре, так что, похоже, так и будет, но я не уверен.
Это кажется чем-то совершенно очевидным. Я что-то пропустил?
1 ответ
docker
-процессы - это обычные процессы ОС.
Docker или нет - не проблема для планировщика процессов.
Так nice
/renice
работает для docker-процессов так же, как и для других.