Одна из причин деградации скорости работы сервиса — это падение производительности процессора. При использовании локальных вычислительных систем без виртуализации их падение влияет только на сам сервер и запущенные на нем приложения. Установленный гипервизор, например от VMware, делит ресурсы физического процессора на все виртуальные машины, и аномальная нагрузка на одну из них может привести к критическому падению производительности на других.
Так же, как и в локальных средах, администратор виртуальной инфраструктуры должен уметь быстро определить причину падения производительности CPU в среде vSphere, используя наиболее информативные метрики.
На потребление ресурсов процессора влияет множество факторов, поэтому мониторинг и контроль ресурсоемкости должны быть хорошо проработаны. Типичными причинами перегрузки могут стать несколько виртуальных машин, на которых запущены очень «прожорливые» приложения, потребляющие слишком много ресурсов, или неэффективно настроенная конфигурация одной из виртуальных машин. В любом случае, если не отследить и вовремя не устранить проблему с производительностью, это может серьезным образом сказаться на критичных для бизнеса сервисах.
Топ-6 проблем с производительностью CPU
- High Ready Time
Проблема с этим параметром заключается в том, что виртуальная машина ожидает запуска в состоянии полной готовности, но не может быть запущена, так как гипервизор не находит для нее ресурсов физического процессора. Необходимо, чтобы Ready Time был меньше 10%, иначе повышается вероятность зависания гостевой операционной системы и сбоев в работе. Хотя некоторые приложения не так чувствительны к этому параметру и работают нормально, но лучше не допускать больше 10%.
- High Co-stoptime
Параметр Co-stoptime показывает, что виртуальных процессоров vCPU больше, чем необходимо. Как это ни парадоксально, порой большое число vCPU снижает, а не увеличивает производительность виртуальной машины.
- CPU Limits
Этот параметр ограничивает использование процессора виртуальной машиной, задает лимит. Соответственно, если машине надо больше мощности, она ее получит только в рамках предельного значения — для некоторых приложений это приведет к падению производительности.
- Host CPU Saturation
Параметр, который отслеживает загрузку процессора хоста. Когда средняя загрузка будет более 75% или пиковая достигнет 90%, узел vSphere решит, что ресурсов CPU не хватает, как результат — остановка виртуальных машин или проблемы с запуском.
- Guest CPU Saturation
Показывает перегрузку виртуального процессора. Если запущенное на виртуальной машине приложение «ест» больше 90% ресурсов процессора, производительность будет деградировать. Решение: добавить еще vCPU или разобраться с приложением — может, оно работает нестабильно или просто зависло.
- Low Guest Usage
Вот этот параметр как раз поможет определить некорректную настройку приложения или нехватку других ресурсов сервера (память, диск), когда добавление vCPU не решает проблему.
Имитируем загрузку CPU и изучаем особенности
Чтобы проверить корректность работы виртуального сервера, необходимо в тестовой среде запустить скрипт загрузки CPU и проанализировать поведение машины. Для этого в VMware vSphere Power CLI запускаем скрипт Start CPU Test.
Скрипт запускает две виртуальные машины и показывает их удаленные рабочие столы. На машинах PERF-WORKER-01A и PERF-WORKER-01B имитируется сильная нагрузка на vCPU и отображается производительность в режиме реального времени. В нашем случае она составляет около 15 000.
Теперь необходимо в окне vSphere зайти на вкладку мониторинга производительности виртуальной машины PERF-WORKER-01A и для отображения расширенных параметров включить опцию Advanced –> Chart Options.
Теперь мы можем выбрать те счетчики, которые позволят нам отследить производительность процессора и выявить проблемы.
Мы рекомендуем обратить внимание на следующие счетчики:
- Demand — показывает число CPU, необходимых (требуемых) для работы.
- Ready — показывает время, за которое машина может запуститься, но не делает этого из-за нехватки физических ресурсов.
- Usage — показывает число CPU, которое разрешено использовать машине в настоящий момент.
Выявление проблем путем анализа показателей счетчиков
В процессе тестирования обратим внимание на то, сколько ресурсов необходимо потреблять виртуальной машине и сколько она использует фактически.
На скриншоте мы видим, что значение счетчика Demand (потребление) сильно больше, чем значение счетчика Use (использование). А показатель Ready Time равен 9977 ms. Чтобы перевести значение из миллисекунд в проценты для режима реального времени (real-time), необходимо показатель Ready Time разделить на 200 — в случае одного используемого vCPU. Или воспользоваться калькулятором. Для нашего теста получилось значение 49,89%, что в значительной мере превышает рекомендуемые 10%, а значит, наблюдается серьезная проблема с производительностью.
Также рекомендуем посмотреть статистику CPU на уровне хоста. Для этого выбрать нужный узел на вкладке Monitor-Performance и включить опцию Advanced — теперь станут видны счетчики производительности хоста.
Отследим статистику нагрузки CPU на уровне физического хоста.
На скриншоте видно, что один из процессоров хоста нагружен на 100%, тогда как остальные практически не задействованы. Это является аномальным и сигнализирует о наличии проблемы.
Чтобы решить эту проблему, проверим правильность конфигураций тестовых виртуальных машин.
Проверка параметров виртуальных машин
Для проверки параметров виртуальной машины VMPERF-WORKER-01A выбираем в меню Actions команду Edit Settings.
Теперь проверим параметр CPU affinity, который может быть причиной возникновения такой аномалии.
В нашем случае его значение равно единице — это означает, что данной виртуальной машине назначен только один физический процессор и другие она использовать не может, даже в случае 100% нагрузки. Для правильной балансировки нагрузки между физическими процессорами хоста необходимо очистить это значение (оставить параметр пустым) и нажать «ОК». Те же манипуляции необходимо проделать и с настройками виртуальной машины PERF-WORKER-01B.
Мы не рекомендуем для виртуальных машин в среде VMware вручную выставлять значение affinity. Платформа vSphere отлично справляется с автоматической балансировкой нагрузки виртуальных машин между физическими процессорами. Также заданный вручную параметр affinity не позволяет воспользоваться технологией vMotion, что уменьшает функциональность виртуальной инфраструктуры.
Заключение
У надежных облачных провайдеров настроены системы мониторинга и контроля использования ресурсов. Но аренда виртуальной инфраструктуры IaaS дает клиенту широкие возможности настройки машин, а значит — и создания потенциальных ошибок. Умение определить и устранить проблемы самостоятельно крайне важно.
Мы рассмотрели проблемы, связанные с производительностью CPU, и рассказали, как с помощью тестов и счетчиков обнаружить слабые места виртуальной инфраструктуры. На виртуальную инфраструктуру надейся, но и сам за всем следи!
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.