У нас загруженный сервер, который, по крайней мере, задыхается от большой нагрузки ввода-вывода, у меня такое ощущение. Выход из iostat -xz
выглядит так:
extended device statistics
device r/s w/s kr/s kw/s wait actv svc_t %w %b
sd5 224.8 157.8 10701.8 6114.7 0.0 9.5 24.7 0 100
sd5 243.2 110.4 11565.3 4065.0 0.0 9.7 27.5 0 100
Очевидно, что дисковая подсистема перегружена, поскольку время обслуживания в 25 мс неприемлемо для массива SATA с 6 дисками, а 100% занятость также означает, что мы перегружены дисковым вводом-выводом.
Но - почему wait
всегда 0.0
? И почему %w
тоже 0? %w
иногда идет в 1
, и быстро возвращается к 0
. Разве это не означает, что никакой процесс не ожидает ввода-вывода?
Контроллер RAID каким-либо образом вызывает такой результат / маскирует время ожидания?
Может кто-нибудь объяснить такое поведение?
Время svc_t измеряет в миллисекундах "круговой обход":
«низ» операционной системы - подсистема диска - «низ» операционной системы
Не совсем правильно, что «100% занято означает, что мы загружены дисковым вводом-выводом». Это означает, что диск был занят 100% времени чем-то, не обязательно, что он не может делать больше этого или что он не обслуживает запросы вовремя (это небольшая разница).
Обычно симптомами перегрузки дисков являются высокие значения в столбце% w и actc (постоянно более 200).
Может быть проблема с задержкой? Система запрашивает много случайных операций, чтобы контроллер тратил время на поиск 6-го блока данных?
Да, я думаю, вы правы в том, что RAID-контроллер испортил числа. Если он сообщает драйверу, что операция началась, как только она была запрошена, драйвер не узнает, что он все еще ждет дискового оборудования внутри RAID-контроллера. Можете ли вы получить статистику напрямую с RAID-контроллера?