У меня есть виртуальная машина Linux, размещенная в облачной среде. Я подозреваю, что провайдер время от времени делает слишком много избыточного выделения ресурсов ЦП и операций ввода-вывода.
Например, postgresql сообщает 300 мс + запросов, которые выполняются менее чем за 5 мс в режиме объяснения анализа. Я также наблюдаю задержку с ssh, когда vCPU простаивает.
Какие инструменты можно использовать для отслеживания динамики производительности ЦП и операций ввода-вывода?
На самой коробке вы можете использовать vmstat
и iostat
(часть пакета sysstat).
vmstat 1
покажу вам steal
, который представляет собой количество циклов ЦП, которые гипервизор отвел от виртуальной машины для выделения другим виртуальным машинам. Вы также можете посмотреть iowait
, который представляет собой% циклов процессора, затраченных на ожидание завершения ввода-вывода.iostat -x -d 1
покажу вам svctm
и await
; соответственно, среднее время, затрачиваемое базовыми устройствами на обслуживание запросов (после того, как они были обработаны планировщиком ввода-вывода), и среднее время ожидания для запросов ввода-вывода. Если какое-либо значение превышает ожидаемое (~ 10 мс), это должно быть верным признаком разногласий.