Я читаю руководство администратора облака openstack. На странице 47 в теме настройки Flavors определены следующие термины.
В необязательный cpu_shares элемент определяет пропорционально взвешенную долю для домена. Если этот элемент опущен, служба по умолчанию использует значения по умолчанию, предоставленные ОС. Единицы измерения нет, это относительная мера, основанная на настройках других виртуальных машин. Например, виртуальная машина, настроенная со значением 2048, получит в два раза больше процессорного времени, чем виртуальная машина, настроенная со значением 1024.
В необязательный cpu_period определяет интервал применения (единица измерения: микросекунды) для гипервизоров QEMU и LXC. В течение периода каждому VCPU домена не будет разрешено использовать время выполнения, превышающее квоту. Значение должно быть в диапазоне [1000, 1000000]. Точка со значением 0 означает отсутствие значения.
Необязательный cpu_quota элемент определяет максимально допустимую полосу пропускания (единица измерения: микросекунды). Любое отрицательное значение домена с квотой указывает на то, что у домена неограниченная пропускная способность, а это означает, что пропускная способность не контролируется. Значение должно быть в диапазоне [1000, 18446744073709551] или меньше 0. Квота со значением 0 означает отсутствие значения. Вы можете использовать эту функцию, чтобы гарантировать, что все виртуальные ЦП работают с одинаковой скоростью. Пример:
nova flavor-key m1.low_cpu set cpu_quota=10000
nova flavor-key m1.low_cpu set cpu_period=20000
В этом примере экземпляр m1.low_cpu может потреблять максимум 50% вычислительных возможностей физического процессора.
Мои вопросы
Что такое cpu_period. В приведенном выше примере, что означает значение 20000.
Что такое cpu_quota. В приведенном выше примере, что означает значение 10000.
Может ли кто-нибудь уточнить пример?
В данном примере cpu_period
составляет 20000 микросекунд, cpu_quota
10000 микросекунд.
Для каждых 20000 мкс периода времени m1.low_cpu
разрешено использовать 10 000 мкс процессорного времени.
Источник: Я прочитал цитируемый текст 3 раза.
(Добавляем уточняющий ответ, основанный на следующем вопросе Зейна)
Вы правы в своем выводе. Ссылаясь на новые --cpus
установка, которая в основном зависит от cpu_period и cpu_quota, документация сообщает нам, что:
.. если на хост-машине два процессора и вы установили
--cpus="1.5"
, контейнер гарантирован не более полтора процессора. Это эквивалент установки --cpu-period = "100000 "и --cpu-quota ="150000 ". Доступно в Docker 1.13 и выше.
Так, для их примера это означает, что для использования ЦП в течение 100% от общего периода ЦП может использоваться 150% мощности одного ЦП. Это бессмысленно для одного ЦП, потому что это невозможно, поэтому в этом примере есть 2 ЦП, и поэтому логически 50% избыток в этом примере идет на второй ЦП. Более простой способ представить этот пример - это, по сути, 75% общей мощности ЦП для двухъядерной системы. Другими словами:
(1,5 / 2) * 100 = 75% .. где 1,5 - это --cpus
2 - количество ядер ЦП.
Увеличение количества процессоров при сохранении --cpus
установка того же значения фактически не позволит контейнеру увеличиваться вместе с машиной. Если требуется масштабирование, то это число должно быть фактором желаемой мощности и количества доступных процессоров.
Учитывая ваш пример, если вы всегда хотели закрыть свой контейнер 20% всех доступных ресурсов ЦП, которые вы бы установили --cpus
кому: (количество процессоров) x (20/ 100) .. или просто .. количество процессоров x 0,2
Я бы отметил, что этот новый --cpus
настройка была доступна после публикации первоначального вопроса, и теперь ее рекомендуется использовать вместо комбинации --cpu-period
и --cpu-quota
. Очевидно, это упрощает понимание.