Может ли контейнер Docker запускаться "красиво"?

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

Если бы все работало на одной машине Linux, я мог бы использовать что-то вроде nice -n19 background-task выполнять задачи, и они позволят веб-серверу столько процессорного времени, сколько ему нужно.

Есть ли способ запустить весь контейнер на nice уровень? Я знаю, что могу ограничить количество процессорного времени, доступного для каждой фоновой задачи, с помощью cpu_quota, но это не решает проблему. Если веб-сервер хочет использовать все 4 ядра ЦП для обслуживания клиента, это должно быть разрешено. Если веб-сервер не занят, все 4 ядра ЦП должны работать в фоновом режиме.

Если я изменю команду в Dockerfile на:

nice -n19 background-task

Будет ли это работать между контейнерами? Процессы внутри контейнеров - это все нормальные процессы, работающие на одном и том же ядре, так что, похоже, так и будет, но я не уверен.

Это кажется чем-то совершенно очевидным. Я что-то пропустил?

1 ответ

docker-процессы - это обычные процессы ОС.

Docker или нет - не проблема для планировщика процессов.

Так nice/renice работает для docker-процессов так же, как и для других.

Другие вопросы по тегам