laduwka
@laduwka
Unix администратор

Как оценить критическую нагрузку на дисковую подсистему?

Работаю с сервисом, который постоянно пишет-читает диск. Это система построенная на базе Elasticsearch, работает в тестовом режиме, пока нагрузок близких к боевым не было.
Встал вопрос мониторинга нагрузки на дисковую подсистему.
Снять нагрузку несложно, сложно интерпретировать результаты. Я мало сталкивалась с дисками, raid и схд, поэтому немного не понимаю, в какую сторону двигаться.
Собран RAID 10, контроллер PERC 6/i Integrated, диски SEAGATE, Centos7, xfs

=== START OF INFORMATION SECTION ===
Vendor: SEAGATE
Product: ST3600057SS
Revision: ES66
User Capacity: 600,127,266,816 bytes [600 GB]
Logical block size: 512 bytes
Rotation Rate: 15000 rpm
Form Factor: 3.5 inches
Logical Unit id: 0x5000c5007ece257f
Serial number: 6SL9L37D
Device type: disk
Transport protocol: SAS
Local Time is: Thu Sep 3 15:39:39 2015 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Temperature Warning: Disabled or Not Supported
Среднее время доступа одного диска 3.4 мс при чтении, 3.9 мс при записи
Среднее время ожидания 2 мс

Возьмем данные за последние 10 минут, например.
summary: 19 io/s, read 640 sectors (0kB/s), write 284120 sectors (236kB/s) in 600 seconds
Performance Data: tps=19io/s; read=546b/s; write=242449b/s;
Информация берется отсюда: /sys/block//stat

Выходит, что так как у меня raid, то один iops на чтение является реальным одним iops. На запись же выходит, что один iops на запись превращается в 2 iops по факту.

Когда начинать паниковать, что нагрузка на диск растет? По факту, если смотреть на графики, больше 40 iops вообще еще не бывало. Сколько секторов в секунду нормально, а сколько - уже плохо?
Не хотелось бы спохватиться по факту, когда диски заткнулись и все висит и ждет завершения ввода-вывода.
Какие значения iowait должны пугать?
Я проверяю диски на наличие ошибок в смарт, этого достаточно для понимания, когда диск начинает выходить из строя и его пора менять?
Хотелось бы разобраться с мониторингом и тюнингом дисковой подсистемы, буду благодарна любым ссылкам, объяснениям и литературе.
  • Вопрос задан
  • 4720 просмотров
Решения вопроса 1
ptchol
@ptchol
Linux system administrator
С iowait не все так просто вот здесь неплохое объяснение как оно работает.
Если у Вас есть мониторинг, я бы ориентировался на значения await/svctm из iostat. Посмотреть какое время random read заявляют производители дисков (обычно это 3-5мс) и считать эти показатели допустимыми.
Касательно объема читаемых данных вцелом нельзя сказать какое кол-во является нормальным, особенно имея смешанную нагрузку. Тут наверно стоит обращать внимание на utilization но также стоит соблюдать осторожность
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
amarao
@amarao
В линуксе самым очевидным индикатором утилизации дисков является flight_time. Если делать замеры каждую секунду, то разница между начальным и конечным значением покажет, сколько секунд в течение секунды диск был занят (значение обычно от нуля до 1).

Находится оно в /sys/block/sdX/device/stat (значение всех этих цифр - в Documentation исходников ядра).

На бытовом уровне - если блочных устройств мало, то просто atop (и дать секунд 11-12 отстояться) - и там будет показана утилизация диска.

Если блочных устройств много и они не влазят в вывод атопа, то я написал отдельно для себя простенький top по блочным устройствам https://github.com/amarao/blktop

Если нужно собирать эти метрики в автоматическом режиме, то обычно у соответствующих приложений (например, munin или ganglia) есть модули, которые эту информацию собирают.
Ответ написан
@ShamblerR
iotop -oka
Ответ написан
Комментировать
@mureevms
Лучшее объяснение которое видел по данной теме - Как правильно мерять производительность диска, написанная Amarao. Пригласите его, он сможет ответить на Ваши вопросы, если захочет :)
Ответ написан
Комментировать
laduwka
@laduwka Автор вопроса
Unix администратор
amarao буду благодарна, если поможете!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы