Оптимизация производительности CPU в ESXI 5.x.x

Обновлено 26.11.2023

CPU performace tuningДобрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В минувший раз мы с вами разбирали ситуацию, как можно увеличить производительность твердотельных дисков на ESXI хосте, это был классный кейс. Идем далее и сегодня хочу поговорить про процессоры. Заметил ситуацию, что часто, с увеличением количества виртуальных машин на серверах VMware vSphere 5, несмотря на то, что нагрузка на CPU не более 50-60 процентов, виртуальные машины начали сильно "подвисать/тормозить". Давайте я покажу как это можно диагностировать и устранять. Думаю, это будет интересно.

Описание проблемы с производительностью CPU

начал разбираться в чем же проблема. Добавил параметр "counter CPU Ready (Millisecond)" на график и получил следующие цифры (С одной из наиболее загруженных виртуальных машин).

Оптимизация производительности. CPU performace tuning в ESXI 5.x.x-01

Оптимизация производительности. CPU performace tuning в ESXI 5.x.x-01

Срез за месяц следующие цифры:

  • Average - 256899 Milliseconds
  • Minimum - 44247 Milliseconds
  • Maximum -1378430!!!! Milliseconds

При том что приемлемыми считаются цифры:
CPU Ready < 2000мс    %RDU < 10%

Немного хочу напомнить теории. Counter CPU Ready (Millisecond) в VMware ESXi - это метрика, которая измеряет время ожидания виртуальной машины (ВМ) на доступ к физическому процессору хост-системы. Эта метрика показывает, сколько времени ВМ проводит в очереди ожидания доступа к вычислительным ресурсам процессора.

Когда виртуальная машина запрашивает доступ к процессору, она ставится в очередь, пока не освободится необходимый вычислительный ресурс. Если время ожидания в очереди становится слишком большим, это может указывать на проблемы с производительностью и возможные узкие места в использовании ресурсов.

Counter CPU Ready измеряется в миллисекундах и предоставляет информацию о времени ожидания ВМ в очереди. Чем выше значение этой метрики, тем дольше ВМ ждет доступа к процессору. Обычно, если значение превышает 5 миллисекунд, это может указывать на проблемы с производительностью. Counter CPU Ready является полезным инструментом для диагностики проблем с производительностью виртуальных машин.

Эта метрика может быть особенно полезна при масштабировании ресурсов хост-системы или при оптимизации размещения ВМ. Если значение Counter CPU Ready высокое, это может указывать на необходимость добавления дополнительных ресурсов процессора или перераспределения ВМ на другие хосты. Помимо этого, Counter CPU Ready также может помочь в определении причин возникновения проблем с производительностью. Например, высокое значение этой метрики может указывать на неэффективное использование ресурсов процессора ВМ или на конфликты в расписании доступа к процессору между ВМ.

Для более детальной диагностики и анализа проблем с производительностью можно использовать другие связанные метрики, такие как использование процессора ВМ (Counter CPU Usage), количество виртуальных процессоров и их конфигурация, а также общую загрузку хост-системы.

Далее началось исследование всех виртуальных машин на серверах ESXI и оказалось что для целей "повышения производительности" было отдано по 2-4 CPU, где надо и где не надо, в результате получился только performance degrade (Деградация).

Следующими шагами был анализ пиковых нагрузок CPU по метрикам:

  • Usage
  • Usage in MHz

И оказалось что большинство виртуальных машин использует от 30 до 50 процентов от отданных мощностей CPU. В результате было убрано большое количество излишних vCPU со всех виртуальных машин и картина с той же загруженной виртуальной машины стала выглядеть следующим образом. Согласитесь, что разница существенная с 10 000 снизилось до 3000.

Оптимизация производительности. CPU performace tuning в ESXI 5.x.x-02

Оптимизация производительности. CPU performace tuning в ESXI 5.x.x-02

Общий CPU Usage % упал на 10-15 процентов на всех серверах виртуальных машин.

Как оценить counter CPU Ready (Millisecond) через консоль ESXI

Для получения информации о счетчике CPU Ready (Millisecond) в SSH на ESXi, вы можете использовать команду esxtop.

  1. Войдите в SSH на ваш сервер ESXi с помощью учетных данных администратора.
  2. Запустите команду esxtop, введя следующую команду в терминале: esxtop
  3. После запуска esxtop вы увидите интерфейс мониторинга ресурсов ESXi.
  4. Нажмите клавишу "c" на клавиатуре, чтобы перейти к просмотру информации о процессоре.
  5. Найдите столбец "CSTP" (CPU Sched Group %) и найдите строку "READY". Значение в этой строке представляет собой время ожидания CPU Ready в миллисекундах.
  6. Используйте стрелки вверх и вниз на клавиатуре, чтобы прокрутить список процессоров, если у вас есть несколько.
  7. Чтобы выйти из esxtop, нажмите клавишу "q" на клавиатуре. Это позволит вам получить информацию о счетчике CP.

Как получить counter CPU Ready (Millisecond) с помощью PowerCLI

Для получения информации о счетчике CPU Ready (Millisecond) в ESXi с использованием PowerCLI, вы можете использовать следующий код:

# Подключение к vCenter Server
Connect-VIServer -Server <vCenter_Server>

# Получение списка всех хостов ESXi
$esxiHosts = Get-VMHost

# Перебор всех хостов и получение информации о счетчике CPU Ready
foreach ($esxiHost in $esxiHosts) {
# Получение объекта PerformanceManager для текущего хоста
$perfMgr = Get-View -Id $esxiHost.ExtensionData.PerfManager

# Получение объекта PerformanceCounter для счетчика CPU Ready (Millisecond)
$counter = $perfMgr.QueryPerfCounter("cpu.ready.summation")

# Получение объекта PerformanceMetricId для счетчика CPU Ready (Millisecond)
$counterId = New-Object VMware.Vim.PerformanceManagerCounterLevel
$counterId.CounterId = $counter.CounterId
$counterId.Instance = ""

# Получение данных о счетчике CPU Ready (Millisecond)
$stats = $perfMgr.QueryStats($esxiHost.ExtensionData.MoRef, $counterId)

# Вывод информации о счетчике CPU Ready (Millisecond)
Write-Host "Хост: $($esxiHost.Name)"
Write-Host "Счетчик CPU Ready (Millisecond): $($stats.Value)"
}

# Отключение от vCenter Server
Disconnect-VIServer -Server <vCenter_Server> -Confirm:$false

Замените <vCenter_Server> на адрес вашего vCenter Server. После выполнения кода, вы получите информацию о счетчике CPU Ready (Millisecond) для каждого хоста ESXi в вашей среде. На этом дело по оптимизации процессоров виртуальными машинами можно закрывать. С вами был Иван Сёмин, автор и создатель IT блога Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *