Я думаю, что описываемый случай является хорошим примером правильного (под данным понятием я подразумеваю достаточного, а не избыточного) выделения ресурсов виртуальной машине.
В кластере с большим количеством ВМ с избыточным уровнем переподиски также развёрнут сервер с 4 ЦПУ на котором работает БД на SQL.
На графике ниже видно, что до 24 июля среднее значение метрики CPU Ready было около 10%, а 24 числа резко скакнуло выше 30%. То есть, 30% времени виртуальная машина ждала, когда на физическом ЦПУ будут доступны ресурсы для выполнения. Приложение, работающее с данной БД испытывало серьёзные проблемы с производительностью из-за этого.
В тот же день количество vCPU было снижено с 4 до 2, и результат очевиден. Значение CPU Ready упало примерно до 1%, и оставалось на том же уровне и дальше. При этом производительность всех приложений, использующих данный БД, в том числе и vCenter Server, серьёзно выросла.
Правильное (достаточное) выделение ресурсов улучшает производительность не только данной ВМ, но и снижает уровень борьбы за ресурсы на всём кластере, что влияет на производительность всех ВМ.
Также важно отметить, что это урезаны ресурсы были только у одной машины, и чем больше ВМ будет отрегулировано в кластере, тем меньше будет значение CPU Ready, а производительность будет расти. Снижение нагрузки на кластер также позволяет увеличить значение консолидации ресурсов без снижения доступности или производительности.
Отдельно хотелось бы отметить, что лично я считаю, что данная ВМ могла бы использовать все преимущества и от 4 vCPU, но не в кластере с таким высоким уровнем борьбы за ресурсы.
Теперь вы верите в правильный сайзинг ВМ?
В кластере с большим количеством ВМ с избыточным уровнем переподиски также развёрнут сервер с 4 ЦПУ на котором работает БД на SQL.
На графике ниже видно, что до 24 июля среднее значение метрики CPU Ready было около 10%, а 24 числа резко скакнуло выше 30%. То есть, 30% времени виртуальная машина ждала, когда на физическом ЦПУ будут доступны ресурсы для выполнения. Приложение, работающее с данной БД испытывало серьёзные проблемы с производительностью из-за этого.
В тот же день количество vCPU было снижено с 4 до 2, и результат очевиден. Значение CPU Ready упало примерно до 1%, и оставалось на том же уровне и дальше. При этом производительность всех приложений, использующих данный БД, в том числе и vCenter Server, серьёзно выросла.
Правильное (достаточное) выделение ресурсов улучшает производительность не только данной ВМ, но и снижает уровень борьбы за ресурсы на всём кластере, что влияет на производительность всех ВМ.
Также важно отметить, что это урезаны ресурсы были только у одной машины, и чем больше ВМ будет отрегулировано в кластере, тем меньше будет значение CPU Ready, а производительность будет расти. Снижение нагрузки на кластер также позволяет увеличить значение консолидации ресурсов без снижения доступности или производительности.
Отдельно хотелось бы отметить, что лично я считаю, что данная ВМ могла бы использовать все преимущества и от 4 vCPU, но не в кластере с таким высоким уровнем борьбы за ресурсы.
Теперь вы верите в правильный сайзинг ВМ?
вы написали, что у вас кластер с избыточным количеством ресурсов. Почему наступил момент когда CPU Ready стал 30% ?
ОтветитьУдалитьСпасибо за комментарий, перефразировал текст для большей ясности.
ОтветитьУдалитьИнтересная статья, поясните пожалуйста, почему уменьшение количества vCPU с 4 до 2, привело к увеличению производительности?
ОтветитьУдалитьНа сколько я понимаю, ядра физического процессора, в данной ситуации не выделены конкретной ВМ, значит и оставшиеся 2 vCPU могут делить с кем то ресурс, что может привести к увеличению CPU Ready
Планировщику ресурсов необходимо выделить 4 ядра одновременно (сервер тоже 4-ёх ядерный), что может быть сложно в случае большого количества ВМ с разным количеством ЦПУ.
ОтветитьУдалитьАнонимный, возможно вам поможет углубиться в мир планировщика процессора вот эта ссылка: http://blog.vadmin.ru/search/label/CPU
ОтветитьУдалитьчто вы имеете ввиду?
УдалитьУ Вас будет возможность прочитать материалы в блоге, касающиеся процессорной мощности и управлением ею.
Удалитьправильно ли я вас понимаю, что лучше выдать 2 ядра и они будут использоваться на 50% каждое, чем 4 ядра и они будут использоваться по 25 % каждое?
ОтветитьУдалитьДа, Вы правильно понимаете. А еще лучше выдать одно ядро и нагрузить его на 100%.
Удалитьспасибо, за комментарий.
УдалитьDavid Davis в этом документе http://www.vkernel.com/resources/whitepapers/vcpu-sizing-considerations?src=blog на 12 странице рекомендует
Удалить"If the average is greater than 75%, and the peak is above 90%, then you should consider adding vCPU’s."
Читаем внимательно - если *средняя* нагрузка превышает 75%, а пики входят за 90%, то следует *подумать* насчет добавить vCPU.
УдалитьВЫ администратор и ВЫ знаете свой профиль нагрузки. По кой черт, например, добавлять процессоры машине, в которой работает однопоточное приложение? Даже если оно половину времени нагружает процессор на 100%.
Да, если однопоточное приложение, да на устаревшей ОС, то смысла может и нет. Все зависит от ситуации.
УдалитьУ нас в в.инфраструктуре несколько человек с адм.правами. И часто наблюдаю забавную картину, что новой ВМ сразу, по дефолту, иногда дают 4, а то и 6 vCPU. Аргумент: у нас еще только в среднем 40% общей процессорной мощности на сервере задействовано. Что тебе, жалко? :-) Сколько раз объяснял, что не будет ВМ лучше работать от этого, только хуже. Идти нужно с меньшего. Вроде понимают, а потом опять вижу 4vCPU со средней загрузкой 10-15%. Приходится в нерабочее время выключать и переконфигурировать.
Именно. Мощность надо выдавать не "тебе чо, жалко", а по минимуму. И только потом наращивать.
УдалитьОдна из проблем производительности на NUMA может быть связана как раз с неадекватным выделением ресурсов. http://blog.vadmin.ru/2010/05/numa.html
Этот комментарий был удален автором.
ОтветитьУдалить