Ответ
Steal Time (st) — это метрика в Linux, показывающая процент времени, когда виртуальная машина (ВМ) была готова к выполнению задач, но физический CPU гипервизора был занят обслуживанием других виртуальных машин. Это ключевой индикатор в облачных (AWS EC2, GCP Compute Engine) и виртуализированных средах.
Как посмотреть:
# В утилите top (строка %Cpu(s))
top - 11:22:33 up 1 day, 2:34, 1 user, load average: 0.15, 0.10, 0.05
Tasks: 120 total, 1 running, 70 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 1.2 sy, 0.0 ni, 96.0 id, 0.1 wa, 0.0 hi, 0.0 si, 0.4 st
^^^
# Или с помощью mpstat
mpstat 1 5
Linux 5.4.0 (...) 04/11/25 _x86_64_ (2 CPU)
11:22:34 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:22:35 all 2.12 0.00 0.75 0.12 0.00 0.12 0.25 0.00 0.00 96.63
^^^
Интерпретация и действия в DevOps:
- Низкий steal (<2-5%): Нормальная ситуация, гипервизор не перегружен.
- Высокий steal (>10%): Серьёзная проблема. Ваша ВМ недополучает вычислительные ресурсы.
- Причины: Соседние ВМ на том же физическом хосте активно потребляют CPU; ваш инстанс имеет слишком мало vCPU для нагрузки; проблемы с планировщиком гипервизора.
- Последствия: Увеличение latency приложений, снижение throughput, рост времени обработки запросов.
- Что делать:
- Мониторинг: Настроить алерты в Prometheus на
node_cpu_seconds_total{mode="steal"}. - Вертикальное масштабирование: Увеличить количество vCPU у инстанса (если позволяет тариф).
- Горизонтальное масштабирование: Добавить больше инстансов и распределить нагрузку.
- Миграция: Запросить миграцию инстанса на другой физический хост у провайдера или использовать группы размещения.
- Выделенные хосты: Для критичных нагрузок рассмотреть выделенные инстансы (AWS Dedicated Hosts и аналоги).
- Мониторинг: Настроить алерты в Prometheus на
Steal Time — прямой сигнал о необходимости вмешательства в инфраструктуру.