Вопрос: Как я могу контролировать нагрузку на жесткий диск на Linux?


Есть ли хорошая утилита командной строки для мониторинга загрузки жесткого диска на Linux? Что-то вроде top но затем мониторинг активности диска i.s.o. использование процессора.

Более конкретно, я подозреваю, что для некоторых (тяжеловесных) серверов после нескольких оптимизаций в различных частях программы (-ов), которые выполняются на нем, прямо сейчас узким местом является просто запись в файлы на диске. Но мне очень сложно оценить, сколько трафика могут обрабатывать серверы.

Мой идеальный инструмент был бы чем-то, что печатает: «Вы используете 35% своей пропускной способности на диске прямо сейчас». Есть идеи?


87
2018-05-18 13:56


Источник


Отличный вопрос, именно то, что я искал =) - rafa.ferreira
Можно читать sysfs напрямую, например /sys/block/sda/stat, Поле # 1 дает общее количество чтений, поле № 5 - общее количество записей, поле № 9 - количество операций ввода-вывода. См. Больше в kernel.org/doc/Documentation/iostats.txt Значения unsigned long и могут быть обернуты. - sastanin
Это очень хороший вопрос, потому что мы всегда боремся с этой проблемой на серверах Plesk. Однако чего не хватает how do you do it with SNMP?, Хорошо входить и проверять вещи, но действительно нужны исторические данные. - Eugene van der Merwe
unix.stackexchange.com/questions/55212/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


Ответы:


Вы можете получить довольно хорошую меру, используя iostat инструмент.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

Использование диска указано в последнем столбце. Это определяется как

Процент процессорного времени, в течение которого запросы ввода / вывода были выданы устройству   (использование ширины полосы для устройства). Насыщенность устройства   возникает, когда это значение близко к 100%.


76
2018-05-18 14:15



В каком пакете это находится в Debian, если таковые имеются? apt-cache dump ничего не делал для иостата - hBy2Py
@Brian: Это в пакете sysstat (через yum в любом случае ...) - Joe
@Joe Nifty, спасибо! - hBy2Py
Не удалось найти это на RHEL 6.5. Доступно ли это для RHEL? - Hazok
Может ли это работать без продолжения с задержкой? Пытаться запустить один экземпляр для получения данных с тем же номером, предположительно, поскольку он не может брать образцы ??? - Wilf


iotop это версия верха, которая смотрит, сколько IO использует каждый процесс. Он находится в стандартных репозиториях ubuntu; Я не знаю, находится ли он в RHEL или Fedora, но это должно быть.

enter image description here

Для старых ядер (скажем, CentOS 5.x или RHEL 5.x), которые не поддерживают iotop, вместо этого используйте topio (задокументировано здесь: http://yong321.freeshell.org/freeware/pio.html#linux, Он полагается на / proc // io для статистики io и предоставляет аналогичную функциональность как iotop. См. Ссылку для получения дополнительной информации.


74
2018-05-18 14:14



Действительно, он не установлен по умолчанию в Ubuntu, поэтому можно было бы решить: sudo apt-get install iotop, чтобы получить его - Moshe
Для iotop требуется ядро ​​выше 2.6.20, что, к сожалению, исключает как RedHat el4, так и el5. - Dave Cheney
Начиная с RedHat 5.4, бит, необходимый для работы iotop, был резервным. Наслаждайтесь! - Dave Cheney
Это в Fedora :). - jamie


Как было предложено sastanin в комментариях, вы можете обрабатывать непосредственно значения, указанные в /sys/block/sda/stat или /proc/diskstats, Это может быть полезно, когда ни один из других упомянутых инструментов недоступен, и вы не можете легко их установить.

Например, (IIUC) что-то вроде этого (в bash) должно указывать количество чтений в секунду:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Видеть https://www.kernel.org/doc/Documentation/iostats.txt а также https://www.kernel.org/doc/Documentation/block/stat.txt для документации.


12
2017-07-22 10:16





Вы должны взглянуть на сверху, который сочетает в себе мощность iotop / top / iftop, все в одном месте и выделяет критические части вашей системы.


5
2018-03-01 04:42





Я бы рекомендовал взглянуть на инструмент nmon. Он покажет вам живую нагрузку по ряду параметров системы, а также записывает данные в файл для последующего прочтения. Это бесплатный инструмент Вот:


4
2018-05-18 15:52





чтобы узнать, какова ваша общая пропускная способность, вы можете использовать hdparm -T /dev/sda для проверки производительности буферного кеша (fileio) hdparm -t /dev/sda для проверки производительности чтения устройства

примеры: мой ноутбук получает 82 МБ / с с диска SATA и 2 ГБ / сек из кеша. Мой dekstop получает 12 ГБ / сек от кеша и 500 Мбайт / с от массива HW RAID. Я подозреваю, что последние номера могут быть удвоены на аппаратном уровне сервера.

set readahead выше 256, 4096 работает лучше всего для меня

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

время чтения 1 ГБ при разных размерах блоков и разных режимах чтения


4
2018-05-18 15:58



Добро пожаловать в SF. Вы можете использовать подсветку кода в своих сообщениях, помещая backquotes вокруг строк или отступов. - ℝaphink
Две вещи - 1) --setra сейчас -a, и 2), hdparm -{T,t} команды выдают только диск чтения, в соответствии с strace, так же неразрушаемы. (Применяется стандартная оговорка о рекомендациях в Интернете) - i336_


Стандартный инструмент для отображения нагрузки на жесткий диск iostat,

Он не скажет вам, сколько процентов вы используете для использования дискового пространства, поскольку он не знает, сколько пропускной способности вашего диска. В любом случае на вашем диске имеется только цитируемый рисунок производителя для больших передач смежных данных.


3
2018-05-18 14:02





Я думаю, что RRDtool должен делать то, что вы хотите Вот он использует демон для сброса системных данных, а затем позволяет обрабатывать его, как вам нравится. Я часто использовал его для создания графиков и т. Д. Для измерения загрузки системы.


2
2018-05-18 14:03