контролировать размеры iops

контролировать размеры iops

Как контролировать размер IOPS хранилища в современном Linux?

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

Что-то вроде того, за последние X секунд было: 5 iops 4K, 10 iops 8K, 20 iops 16K ...

Меня интересует мониторинг на уровне блочных устройств (например, /dev/sda), однако было бы интересно провести мониторинг и на любом другом уровне.

решение1

Низкий уровень

На низком уровне вы можете получить эту информацию из /sys/block/X/stat, которая задокументированаздесь.

Пример содержимого выглядит так:

   10465     3250   759844    27528     4400     2983   546848    66306        0     9754    93792

Поля, которые нам нужны, — это столбцы 1 и 3 для чтения и 5 и 7 для записи. Метод расчета одинаков для обоих, поэтому я просто обсужу чтения.

Столбец 1 — это количество чтений (которое, как вы заявили, вы уже можете отслеживать), а столбец 3 — это количество считанных секторов. Сектор составляет 512 байт. Таким образом, чтобы рассчитать размер считанных данных, вы просто делаете $col3 * 512 / $col1.
Числа в этом файле — это общее количество с момента включения диска. Таким образом, чтобы рассчитать средний размер считанных данных за определенный период времени, вы просто дважды читаете файл и вычисляете с помощью: ($col3_t2 - $col3_t1) * 512 / ($col1_t2 - $col1_t1).

Обратите внимание, что приведенный выше метод дает вам размер OP, выполненных на уровне приложения (описание не точное, но достаточно близкое). Ядро может объединить несколько операций вместе, чтобы число операций, выполненных на диске, было меньше. Расчет для этого: $col3 * 512 / ($col1 - $col2). И чтобы получить значение за промежуток времени:($col3_t2 - $col3_t1) * 512 / (($col1_t2 - $col1_t1) - ($col2_t2 - $col2_t1))

Высокий уровень

iostatможет также дать вам значение, но менее точно. Он не различает запись или чтение, и он дает вам только значение в секторах, а не в байтах (поэтому снова умножьте на 512). Но команда — iostat -x -d, а столбец, на который нужно смотреть, — avgrq-sz.

Связанный контент