Планирование Docker-контейнеров с учетом их ограничений по процессору - PullRequest
0 голосов
/ 11 февраля 2019

Прочитав документ Docker's "Ограничение ресурсов контейнера" ​​, я обнаружил, что можно настроить либо планировщик CFS, либо планировщик реального времени, чтобы указать ограничения ЦП контейнера.В связи с этим у меня есть три вопроса:

  1. Когда вы указываете свои пределы с помощью команды --cpus в многоядерной среде, как контейнер распределяется на процессорах?Предположим, у нас есть 4 ядра, и мы указываем ограничение на --cpus=1.4.Насколько я понял, эта команда говорит, что контейнеру разрешено использовать до 140% циклов ЦП.Однако в этом примере эти 140% могут быть запланированы для четырех процессоров разными способами.Два возможных варианта:

    • 100% циклов ядра 1 + 40% циклов ядра 2
    • 60% циклов ядра 1 + 40% ядра 2 + 40% ядра3

Есть ли способ узнать, какое "отображение" будет использовано заранее?

Когда вы задаете свои пределы с помощью команд --cpu-period=p и --cpu-quota=q, контейнер может использовать ЦП до q us в каждом p us .Контейнер работает непрерывно в течение этого q us (без прерывания)?И можно ли сказать, когда начинается это " q us "?

Мой третий вопрос касается разницы между планировщиком CFS и планировщиком в реальном времени.Согласно документу, вы можете указать

Максимальное количество микросекунд, которое контейнер может запустить с приоритетом в реальном времени в пределах периода планировщика реального времени демона Docker.

с помощью команды --cpu-rt-runtime.Таким образом, это похоже на случай, когда вы указываете период и квоту при использовании планировщика CFS.Но должна быть разница в степени, в которой планировщики гарантируют свое обслуживание.Кто-нибудь знает эти уровни гарантии?

Спасибо.

...