Назад | Перейти на главную страницу

iostat в Solaris с ZFS - почему wait и% w всегда равны нулю?

У нас загруженный сервер, который, по крайней мере, задыхается от большой нагрузки ввода-вывода, у меня такое ощущение. Выход из 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-контроллера?