Прочитав документ Docker's "Ограничение ресурсов контейнера" , я обнаружил, что можно настроить либо планировщик CFS, либо планировщик реального времени, чтобы указать ограничения ЦП контейнера.В связи с этим у меня есть три вопроса:
Когда вы указываете свои пределы с помощью команды --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.Но должна быть разница в степени, в которой планировщики гарантируют свое обслуживание.Кто-нибудь знает эти уровни гарантии?
Спасибо.