Есть ли хорошая утилита командной строки для мониторинга загрузки жесткого диска в Linux? Что-то вроде top
но затем отслеживание активности диска i.s.o. использование процессора.
В частности, я подозреваю, что для некоторых (сильно загруженных) серверов после нескольких оптимизаций в различных частях программы (программ), которые на нем работают, сейчас узким местом является просто запись в файлы на диске. Но мне очень сложно оценить, сколько трафика могут обработать серверы.
Моим идеальным инструментом было бы что-то, что напечатало бы «Сейчас вы используете 35% пропускной способности вашего диска». Любые идеи?
Вы можете довольно хорошо измерить это, используя 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%.
iotop это версия top, которая смотрит, сколько операций ввода-вывода использует каждый процесс. Он находится в стандартных репозиториях ubuntu; Не знаю, в RHEL или Fedora, но должно быть.
Для старых ядер (скажем, CentOS 5.x или RHEL 5.x), которые не поддерживают iotop, используйте вместо этого topio (описано здесь: http://yong321.freeshell.org/freeware/pio.html#linux. Он использует / proc // io для статистики io и предоставляет те же функции, что и iotop. См. Ссылку для получения дополнительной информации.
Как предлагает састанин в комментариях, вы можете напрямую обрабатывать значения, указанные в /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 для документации.
Вы должны взглянуть на наверху, который объединяет возможности iotop / top / iftop в одном месте и выделяет важные части вашей системы.
Я бы рекомендовал взглянуть на инструмент nmon. Он покажет вам живую нагрузку на ряд системных параметров, а также запись данных в файл для последующего изучения. Это бесплатный инструмент Вот:
чтобы узнать, какова ваша общая пропускная способность, вы можете использовать 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 ГБ при разных размерах блока и разном упреждающем чтении
Стандартный инструмент для отображения нагрузки на жесткий диск: iostat
.
Он не скажет вам, сколько% возрастной пропускной способности диска вы используете, так как он не знает, сколько пропускной способности имеет ваш диск. В любом случае на вашем диске указана цифра, указанная производителем только для больших объемов непрерывных данных.
Я думаю, что RRDtool должен делать то, что вы хотите Вот он использует демон для сброса системных данных, а затем позволяет обрабатывать их, как вам нравится. Я часто использовал его для построения графиков и т.д. для измерения нагрузки на систему.
htop - хороший инструмент для проверки информации о процессе. Вы можете добавлять или удалять столбцы, среди которых скорость чтения и записи процессов.