Как получить общее количество операций чтения и записи в Linux?

32

Как получить чтение и запись IOPS отдельно в Linux, используя командную строку или программным способом? Я установил sysstatпакет.

Подскажите, пожалуйста, как мне рассчитать их отдельно, используя sysstatкоманды пакета.

Или их можно рассчитать, используя файловую систему?

пример: /proc или /sysили/dev

шас
источник

Ответы:

46

iostatявляется частью sysstatпакета, который может показывать все iops, если это необходимо, или показывать их разделенными чтением / записью.

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

Попробуйте запустить iostat -dxи посмотреть на резюме, чтобы почувствовать результат. Вы также можете использовать iostat -dx 1для отображения постоянно обновляющегося вывода, который полезен для устранения неполадок или мониторинга в реальном времени,

Использование awkполя 4 даст вам чтения / секунду , а поле 5 даст вам записи / секунду .

Только чтение / секунда:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4; }'

Пишет / сек только:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $5; }'

Чтение / сек и запись / сек, разделенные косой чертой:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4"/"$5; }'

Общий IOPS (о чем говорит большинство людей):

iostat -d <your disk name> | grep <your disk name> | awk '{ print $2; }'

Например, выполнение последней команды с моим основным диском / dev / sda выглядит следующим образом:

dan@daneel ~ $ iostat -dx sda | grep sda | awk '{ print $4"/"$5; }' 15.59/2.70

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

TL; DR: Если вы просто заинтересованы sda, следующая команда даст вам общее количество операций ввода-вывода в секунду для sda:

iostat -d sda | grep sda | awk '{ print $2; }'

Если вы хотите добавить IOPS на всех устройствах, вы можете снова использовать awk:

iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}'

Это производит вывод примерно так:

dan@daneel ~ $ iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}' 18.88

Daneel
источник
Спасибо Mr.Dannel за его полезность. если я хочу получить полную систему чтения / записи IOPS, как получить?
Шас
когда я бегу, iostat -dx 1я получаю ответ как это Linux 2.6.35.14-106.fc14.i686 (shashi) 08/24/2015 _i686_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 2.46 13.80 2.27 2.03 136.26 123.91 60.53 0.11 25.77 4.43 1.91 dm-0 0.00 0.00 2.35 0.77 93.07 6.11 31.86 0.17 53.73 2.59 0.81 dm-1 0.00 0.00 1.02 2.83 8.14 22.66 8.00 0.83 214.34 0.60 0.23 dm-2 0.00 0.00 1.37 11.89 34.77 95.14 9.80 1.67 126.06 0.84 1.11для dm-0, dm-1, dm-2 рекурсивно я должен добавить?
Шас
Я обновил ответ с общим шаблоном и примером для sda. Если вы просто хотите увидеть IOPS для вашего жесткого диска, то используйте эту последнюю команду для общего IOPS ( iostat -d sda | grep sda | awk '{ print $2; }')
Daneel
Нет, я хочу отдельно, как вы упомянули в первом ответе. немного путать с dm-*тем, чтобы я спросил, мне нужно выполнить сложение на этих разделах
шас
Ага, хорошо. Вы можете использовать следующую команду, чтобы проверить, что представляет собой каждое dm-xустройство: lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'- Я обновлю ответ с этим, а также как добавить результаты.
Даниэль