Некоторое время я пытался выяснить, почему довольно многие из наших критически важных для бизнеса систем получают сообщения о «медлительности», варьирующейся от умеренной до экстремальной. Недавно я обратил свой взор на среду VMware, где размещены все рассматриваемые серверы.
Недавно я скачал и установил пробную версию пакета управления Veeam VMware для SCOM 2012, но мне трудно поверить (и мой начальник) в цифры, о которых он мне сообщает. Чтобы убедить моего начальника в том, что цифры, которые он мне говорит, соответствуют действительности, я начал изучать клиент VMware, чтобы проверить результаты.
Я посмотрел на эту статью VMware KB ; специально для определения Co-Stop, которое определяется как:
Количество времени, в течение которого виртуальная машина MP была готова к запуску, но возникла задержка из-за конфликта планирования со-vCPU
Который я перевожу на
Гостевой ОС требуется время от хоста, но он должен ждать, пока ресурсы станут доступными, и, следовательно, может рассматриваться как "не отвечающий"
Этот перевод кажется правильным?
Если это так, то здесь мне трудно поверить в то, что я вижу: хост, который содержит большинство «медленных» виртуальных машин, в настоящее время показывает среднее значение Co-stop ЦП 127 835,94 миллисекунды!
Означает ли это, что в среднем виртуальные машины на этом хосте должны ждать 2+ минуты для процессорного времени ???
Этот хост имеет два 4-х ядерных процессора и имеет гостевой процессор 1x8 и гостевой процессор 14x4.
источник
Ответы:
Я могу описать некоторые из опытов, которые я имел в этой области ...
Я не верю, что VMware делает адекватную работу по информированию клиентов ( или администраторов ) о передовых практиках, а также не обновляет прежние передовые практики по мере развития их продуктов. Этот вопрос является примером того, как основная концепция, такая как распределение vCPU, не полностью понята. Наилучший подход - начинать с малого, с одного vCPU, пока вы не определите, что виртуальной машине требуется больше.
Для OP хост-сервер ESXi имеет два четырехъядерных процессора, что дает 8 физических ядер.
Описанная схема виртуальной машины - всего 15 гостей; Системы 1 х 8 и 14 х 4. Это слишком перегружено, особенно с наличием одного гостя с 8 виртуальными ЦП . Это не имеет никакого смысла. Если вам нужна такая большая виртуальная машина, вам, скорее всего, нужен больший сервер.
Пожалуйста, попробуйте изменить размер ваших виртуальных машин. Я почти уверен, что большинство из них могут жить с 2 vCPU. Добавление виртуальных процессоров не ускоряет работу, поэтому, если это исправит проблему с производительностью, это неправильный подход.
В большинстве сред оперативная память является наиболее ограниченным ресурсом. Но процессор может быть проблемой, если есть слишком много конфликтов. У вас есть доказательства этого. ОЗУ также может быть проблемой, если слишком много выделено отдельным виртуальным машинам .
Это возможно контролировать. Метрика, которую вы ищете - «CPU Ready%». Вы можете получить доступ к этому от клиента Vsphere, выбрав VM и собирается
Performance
>Overview
> График CPU.Обратите внимание на желтую линию на графике ниже.
Не могли бы вы проверить это на проблемных виртуальных машинах и отчитаться?
источник
В комментариях вы указали, что у вас есть двухъядерный хост ESXi, и вы используете одну виртуальную машину 8vCPU и четырнадцать виртуальных машин 4vCPU.
Если бы это была моя среда, я бы считал , что быть грубо чрезмерно предусмотренном. Я бы выбрал от четырех до шести гостей 4vCPU на этом оборудовании. (Это предполагает, что у рассматриваемых виртуальных машин есть нагрузка, которая требует, чтобы у них был такой высокий показатель vCPU.)
Я предполагаю, что вы не знаете золотого правила ... с VMware вы никогда не должны назначать ВМ больше ядер, чем нужно. Причина? VMware использует довольно строгое совместное планирование, из-за которого виртуальным машинам сложно получать процессорное время, если не доступно столько ядер, сколько назначено виртуальной машине. Это означает, что виртуальная машина 4vCPU не может выполнить 1 единицу работы, если в одно и то же время не открыто 4 физических ядра. Другими словами, архитектурно лучше иметь виртуальную машину 1vCPU с нагрузкой на процессор 90%, чем виртуальную машину 2vCPU с нагрузкой 45% на ядро.
Итак ... ВСЕГДА создавайте виртуальные машины с минимумом виртуальных ЦП и добавляйте их только тогда, когда это будет необходимо.
В вашей ситуации используйте Veeam для мониторинга использования процессора вашими гостями. Уменьшите количество vCPU как можно больше. Я был бы готов поспорить, что вы можете перейти на 2vCPU практически на всех ваших гостях 4vCPU.
Конечно, если все эти виртуальные машины имеют нагрузку на процессор и требуют подсчета количества виртуальных ЦП, то вам просто нужно купить дополнительное оборудование.
источник
127 835,94 миллисекунды являются суммой, и вам нужно разделить на время выборки, чтобы получить правильные значения% RDY. Похоже, вы уже получаете правильные показания% RDY сейчас. Вы можете довольно сильно увеличить соотношение виртуальных процессоров и физических процессоров, но не так, как вы это делаете.
У вас слишком много четырех виртуальных машин vCPU и даже 8 виртуальных машин vCPU. Уже есть некоторые качественные ответы, в которых обсуждается правильное определение размеров и некоторые последствия не консолидации циклов с меньшим количеством виртуальных ЦП. Единственное, что я хотел уточнить, это то, что хотя виртуальная машина больше не должна ждать, пока количество физических процессоров, равное количеству виртуальных ЦП, не станет доступным, прежде чем любая инструкция может быть обработана, это очень вредно. иметь избыточное обеспечение этой величины отношением виртуальных машин с несколькими виртуальными ЦП к физическим ядрам. 64 виртуальных ЦП на 8 ядрах значительно превышают максимальное соотношение 4 к 1. Я предполагаю, что у вас есть HT на этих процессорах, поэтому у вас есть 16 логических ядер? Это может быть нормально с 1 и 2 виртуальными машинами vCPU, которые имеют небольшую нагрузку, но если у вас большая нагрузка на виртуальные машины, это будет трудно выполнить.
К сведению: Процессоры HT не используются в вычислениях% используемого ЦП. Это означает, что если у вас 32 логических ядра, работающих на сервере с частотой 2,4 ГГц, то вы используете 100% при достижении 38,4 ГГц. Поэтому, когда вы видите средние значения загрузки, показывающие более 1,0, вот почему.
Вот хост ESXi с соотношением виртуальных ЦП 3,5 к 1 к физическому ЦП (включая ядра HT) со средним% RDY 3%.
источник
С тех пор мы установили Veeam ONE, который пролил немного света на проблемы с производительностью. Посмотрев на экран «Узкие места ЦП» в Veeam ONE, затем воспользовавшись поиском и устранением неисправностей виртуальной машины, которая перестала отвечать: сравнение использования VMM и гостевого ЦП в качестве справки, мы выяснили, где находится наш «недопустимый» конфликт.
Один небольшой совет, которым я хотел поделиться, заключается в том, что в одном случае я не мог устранить конфликт ЦП, пока не удалил снимок, который был на ВМ. Надеюсь, это кому-нибудь поможет.
источник