Как определить, что виртуальной машине не хватает ресурсов из-за перегруженного гипервизора?

«Как определить, что виртуальной машине не хватает ресурсов из-за перегруженного гипервизора?» — вопрос из категории Виртуализация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Проблема нехватки ресурсов на гипервизоре (конкуренция) проявляется внутри гостевой ОС через специфичные метрики. Вот ключевые индикаторы для проверки:

1. CPU Steal Time (самый важный показатель): Это время, которое ВМ готова была выполнять работу, но гипервизор не предоставил ей физический CPU.

# В утилите top (столбец 'st')
top

# С помощью vmstat (столбец 'st')
vmstat 1 5

# Прямой запрос к ядру
grep -E '^cpu ' /proc/stat | awk '{print "Steal:", ($5+$9)*100/($2+$3+$4+$5+$6+$7+$8+$9+$10+$11)"%"}'

Интерпретация: Значение st > 5-10% на протяжении времени указывает на серьёзную конкуренцию за CPU.

2. Проблемы с памятью (Memory Ballooning / Swapping): Гипервизор может "забирать" память у одной ВМ для другой.

# Проверка на события Out-Of-Memory Killer в ядре гостевой ОС
dmesg | grep -i "killed process"

# Наблюдение за использованием swap
free -h
vmstat 1  # Столбцы 'si' (swap in) и 'so' (swap out)

3. Высокие задержки ввода-вывода (Disk I/O Wait):

# Использование iostat для анализа задержек
# Установка: yum install sysstat / apt install sysstat
iostat -x 1

Обращайте внимание на столбец await — это среднее время обслуживания запроса в мс. Значения > 20-30 мс могут указывать на перегруженность хранилища гипервизора.

4. Сетевые задержки и потери:

# Проверка на отброшенные (dropped) пакеты
ip -s link show

5. Облачный мониторинг: В AWS EC2 используйте метрики CloudWatch: CPU Credit Balance (для T-инстансов), CPUCreditUsage, EBSBalance (для burstable дисков). В vSphere — мониторинг через vCenter.