В этой статье поговорим о локализации проблем функционирования ESXi/ESX.
Неисправности. Что может быть не так?
- ПО, работающее в гостевой виртуальной машине - медленно реагирует на команды управления;
- ПО, работающее в гостевой виртуальной машине, периодически прерывают работу;
- Гостевая виртуальная машина работает медленно или не отвечает на запросы.
Проблемы с производительностью могут случаться из-за ограничений центрального процессора (CPU), переполнения памяти или, например, задержкой сети. Если виртуалки работают плохо, скорее всего имеют место траблы с памятью. Устраним?
Решение (воркэраунд)
Ограничения центрального процессора (проблемы CPU)
Чтобы определить, связана ли низкая производительность виртуалки с ограничением центрального процессора, надо:
- Используйте команду
esxtop
для того, чтобы определить основные параметры производительности аппаратного сервера виртуалки- Проверьте командой
load average
загрузку. Если среднее значение нагрузки равно 1.00 , то физические ЦП (центральные процессоры) гипервизора ESXi/ESX полностью используются, а среднее значение нагрузки, равное0.5
, значит, что используются наполовину. Логика, думаю, вам понятна. Значение нагрузки, равное2.00
, означает, что система в целом переполнена (бегите в серверную с огнетушителем 👀) - Проверьте поле
%READY
на процент времени на момент, когда виртуальная машина была готова, но не смогла запуститься на физическом ЦП. При нормальных условиях эксплуатации это значение должно находиться в пределах 5%. Если это значение высокое, и виртуальная машина имеет плохую производительность, тогда проверьте ограничение центрального процессора:- Убедитесь, что на виртуальной машине не установлен предел ЦП.
- Убедитесь, что на виртуальной машине не установлен пул ресурсов (Resource Pool).
- Увеличьте значение физического ограничения ЦП на хост
- Или уменьшите виртуальное ограничение ЦП, выделенное хосту. Чтобы уменьшить это ограничение, сделайте:
- Уменьшите общее количество ЦП, выделенных всем виртуальным машинам, работающих на узле ESX
- Или уменьшите количество виртуальных машин, работающих на хосте (но это весьма грубый способ, как мы считаем)
- Проверьте командой
- Если Вы используете ESX 3.5, проверьте доступ к IRQ.
Переполнение памяти
Чтобы определить, связана ли низкая производительность с избыточностью памяти:
- Используйте команду
esxtop
для того, чтобы определить основные параметры производительности аппаратного сервера виртуалки.- Проверьте параметр MEM в первой строке вывода. Это значение отражает отношение запрошенной памяти к доступной, минус 1. Например:
- Если виртуальным машинам требуется 4 ГБ ОЗУ, а хост имеет 4 ГБ ОЗУ, то справедливо соотношение 1:1. После вычитания 1 (из 1/1) поле MEM overcommit avg считывает 0. Вывод - избытка нет и не требуется дополнительной оперативной памяти.
- Если виртуальным машинам требуется 6 ГБ ОЗУ, а хост имеет 4 ГБ ОЗУ, то есть соотношение 1,5:1. После вычитания 1 (из 1,5/1), поле overcommit avg МЭМ считывает 0,5. Объем оперативной памяти превышен на 50%, что означает, что требуется на 50% больше доступной оперативной памяти.
- Увеличьте количество физической оперативной памяти на хосте
- Или уменьшите объем оперативной памяти, выделенной виртуальным машинам. Для уменьшения объема выделенной оперативной памяти:
- Уменьшите общий объем оперативной памяти, выделяемой всем виртуальным машинам на узле
- Или уменьшите общее число виртуальных машин на узле.
- Проверьте параметр MEM в первой строке вывода. Это значение отражает отношение запрошенной памяти к доступной, минус 1. Например:
-
Определите, являются ли виртуальные машины "раздувающимися" или/и заменяемыми. Для обнаружения раздувания или замены:
- Запустите
esxtop
- Введите
m
для просмотра памяти - Введите
f
для управления колонками вывода (полями) - Выберите букву
J
в поле Memory Swap Statistics "Статистика раздувания памяти" (MCTL) - Посмотрите на значение
MCTLSZ
. MCTLSZ (MB)отображает объем физической памяти гостя, возвращаемой драйвером баллона (Memory Ballooning). - Введите
f
для управления колонками вывода (полями) - Выберите букву для статистики свопов памяти (SWAP STATS)
- Посмотрите на значение
SWCUR
. SWCUR (MB) отображает текущее использование обмена.
- Запустите
Период ожидания запоминающего устройства
Чтобы определить, связана ли низкая производительность с задержкой хранения данных:
- Определите, связана ли проблема с локальным хранилищем. Если связана, то перенесите виртуальные машины в другое место хранения.
- Уменьшите количество виртуальных машин на одно логическое устройство.
- Найдите записи журнала в Windows guests, которые выглядят следующим образом:
The device, DeviceScsiPort0, did not respond within the timeout period.
- Используя
esxtop
, найдите высокое время задержки DAVG. - Определите максимальную пропускную способность ввода-вывода, которую можно получить с помощью команды
iometer
. - Сравните результаты
iometer
для виртуальной машины с результатами для физической машины, подключенной к тому же хранилищу. - Проверьте наличие конфликтного обращения к ресурсу SCSI.
- Если вы используете ресурсы хранения iSCSI и группу данных jumbo, убедитесь, что все настроено правильно.
- Если вы используете ресурсы хранения iSCSI и передачу по нескольким трактам с использованием программного инициатора iSCSI, убедитесь, что все настроено правильно.
При выявлении проблемы, связанной с хранением:
- Убедитесь, что аппаратный массив устройства и платы HBA сертифицированы для ESX/ESXi.
- Убедитесь, что BIOS физического сервера обновлена.
- Убедитесь, что встроенное ПО вашего HBA-адаптера обновлено.
- Убедитесь, что ESX может распознать правильный режим и политику пути для типа массива хранения SATP и выбора пути PSP.
Задержка сети
На производительность сети может сильно влиять производительность ЦП. Исключите проблему производительности ЦП перед исследованием сетевой задержки.
Чтобы определить, вызвана ли низкая производительность задержкой сети, выполните следующие действия:
- Проверьте максимальную пропускную способность виртуальной машины с помощью инструмента Iperf.
- При использовании Iperf измените размер окон TCP на 64 K. Производительность также зависит от этого значения. Чтобы изменить размер окон TCP:
- На стороне сервера введите следующую команду:
iperf –s
- На стороне клиента введите следующую команду:
iperf.exe -c sqlsed -P 1 -i 1 -p 5001 -w 64K -f m -t 10 900M
- На стороне сервера введите следующую команду:
- При использовании Iperf измените размер окон TCP на 64 K. Производительность также зависит от этого значения. Чтобы изменить размер окон TCP:
- Запустите Iperf с компьютера вне хоста ESXi/ESX. Сравните результаты с ожидаемыми, в зависимости от физической среды.
- Выполните команду Iperf с другого компьютера вне хоста ESXi/ESX в той же VLAN на том же физическом коммутаторе. Если производительность хорошая, и проблему можно воспроизвести только на машине в другом географическом месте, то проблема связана с вашей сетевой средой.
- Выполните команду Iperf между двумя виртуальными машинами на одном сервере ESX/portgroup/vswitch. Если результат хороший, можно исключить проблему с ЦП, памятью или хранилищем.
Если вы определяете параметры, которые ограничивают производительность системы в сети:
- Если вы используете ресурсы хранения iSCSI и кадры jumbo, убедитесь, что все настроено правильно.
- Если вы используете Network I/O Control,то убедитесь, что общие ресурсы и ограничения правильно настроены для вашего трафика.
- Проверьте правильность настройки формирования траффика.