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

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

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

Мой идеальный инструмент - это то, что печатает «Сейчас вы используете 35% своей пропускной способности на диске». Любые идеи?

87 голосов | спросил Pieter 18 Maypm09 2009, 17:56:00

8 ответов


76

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

ответил Dave Cheney 18 Maypm09 2009, 18:15:58
74

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

введите описание изображения здесь>> </p>

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

ответил Tim Howland 18 Maypm09 2009, 18:14:10
12

Как было предложено 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 для документации.

ответил Skippy le Grand Gourou 22 J000000Monday13 2013, 14:16:38
5

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

ответил Yvan 1 MaramSun, 01 Mar 2015 07:42:15 +03002015-03-01T07:42:15+03:0007 2015, 07:42:15
4

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

ответил MikeyB 18 Maypm09 2009, 19:52:15
4

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

Примеры

: мой ноутбук получает 82 МБ /сек с диска SATA и 2 ГБ /сек из кеша. Мой dekstop получает 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 ГБ при разных размерах блоков и разных режимах чтения

ответил user2987 18 Maypm09 2009, 19:58:12
3

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

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

ответил Alnitak 18 Maypm09 2009, 18:02:02
2

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

ответил PixelSmack 18 Maypm09 2009, 18:03:46

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132