it-swarm-ru.tech

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

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

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

Моим идеальным инструментом было бы то, что печатает "Вы используете 35% пропускной способности вашего диска прямо сейчас". Любые идеи?

105
Pieter

Вы можете получить довольно хорошее представление об этом, используя инструмент 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%.

85
Dave Cheney

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

enter image description here

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

82
Tim Howland

Как предполагает Састанин в комментариях, вы можете напрямую обрабатывать значения, указанные в /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 для документации.

14
Skippy le Grand Gourou

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

8
Yvan

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

6
MikeyB

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

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

установите 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ГБ при разных размерах блока и разных опережающих чтениях

5
user2987

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

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

4
Alnitak

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

3
PixelSmack

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

0
inquam