3.9.24.9 Анализ производительности блочных устройств (blktrace) и построение графиков на основе собранных данных (iowatcher)
Установка
Возможности blktrace
Возможности iowatcher
Примеры использования
Окружение
- Версия ОС: 8
- Конфигурация ОС: Рабочая станция
- Редакция ОС: Стандартная, Образовательная
- Версия ПО: blktrace-1.0.5-10, iowatcher-1.0-8
blktrace — утилита, собирающая через ядерный трассировщик все события блочного ввода/вывода для каждой операции. blktrace используется в качестве вспомогательного инструмента в программных решениях, предназначенных для анализа и диагностики проблем производительности в системах хранения данных.
iowatcher — утилита, позволяющая анализировать данные, подготовленные с помощью blktrace и строить на основе этих данных графики (в том числе и анимированные). Инструмент blktrace позволяет записывать события в файлы трассировки для последующей визуализации с помощью утилиты iowatcher.
С помощью iowatcher также можно запускать blktrace с последующим созданием графика трассировки одной командой.
Установка
Для установки утилит перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf install blktrace iowatcher
Возможности blktrace
Основные возможности:
-
трассировка событий на уровне драйвера блочного устройства;
-
результаты можно обработать через blkparse или визуализировать с iowatcher;
-
утилита btrace объединяет вызовы
blktraceиblkparse.
Примеры эквивалентных команд:
blktrace -d /dev/sda -o - | blkparse -i -
btrace /dev/sda
Ниже приведен пример трассировки события «запись в файл на примере команды echo 1 > test.txt».
btrace /dev/sdb
8,16 5 1 0.000000000 193450 A RM 973080688 + 8 <- (8,17) 973078640
8,16 5 2 0.000000744 193450 Q RM 973080688 + 8 [bash]
8,16 5 3 0.000003993 193450 G RM 973080688 + 8 [bash]
8,16 5 4 0.000004498 193450 P N [bash]
8,16 5 5 0.000005205 193450 UT N [bash] 1
8,16 5 6 0.000005495 193450 I RM 973080688 + 8 [bash]
8,16 5 7 0.000014361 266 D RM 973080688 + 8 [kworker/5:1H]
8,16 3 1 0.001309172 0 C RM 973080688 + 8 [0]
8,16 5 8 0.001354482 193450 A W 976766976 + 8 <- (8,17) 976764928
8,16 5 9 0.001354754 193450 Q W 976766976 + 8 [bash]
8,16 5 10 0.001356122 193450 G W 976766976 + 8 [bash]
8,16 5 11 0.001356303 193450 P N [bash]
8,16 5 12 0.001357581 193450 D W 976766976 + 8 [bash]
8,16 3 2 0.001417097 0 C W 976766976 + 8 [0]
Структура строки вывода
В выводе представлено несколько строк — по одной на каждое событие, связанное с очередью блочного устройства или с самим устройством.
По умолчанию выводятся столбцы:
1. Основной и дополнительный номер устройства.
2. Идентификатор процессора.
3. Порядковый номер события.
4. Время события в секундах от начала трассировки.
5. Идентификатор процесса.
6. Тип события (например, Q — запрос в очередь).
7. Описание RWBS: флаги ввода/вывода.
8. Дополнительные данные — зависят от события.
Типы событий blkparse
Список типов событий:
-
A— ввод/вывод был отображен на другое устройство; -
B— дополнительный ввод/вывод; -
C— ввод/вывод завершен; -
D— запрос передан драйверу; -
F— запрос добавлен в начало другого запроса, находившегося в очереди; -
G— выделение памяти для запроса; -
I— запрос добавлен в очередь планировщика ввода/вывода; -
M— запрос добавлен в конец другого запроса, находившегося в очереди; -
P— блокировка очереди для накопления нескольких запросов; -
Q— ввод/вывод передан коду, который управляет очередью; -
S— ожидание освобождения места для размещения запроса; -
T— разблокировка очереди по истечении времени ожидания; -
U— разблокировка очереди; -
X— запрос разделен.
Расшифровка флагов RWBS
Для мониторинга ядро позволяет описать тип каждой операции ввода/вывода с помощью строки символов — rwbs. Она применяется в blktrace и в других инструментах трассировки, определена в функции ядра blk_fill_rwbs() и использует следующие символы:
-
R— чтение (read); -
W— запись (write); -
M— метаданные (metadata); -
S— синхронная (synchronous); -
A— опережающее чтение (read-ahead); -
F— выталкивание на диск или принудительное обращение к блоку (flush or force); -
D— отмена (discard); -
E— стирание (erase); -
N— нет операции (none).
Символы могут комбинироваться. Например, WM означает «запись метаданных».
Возможности iowatcher
Наиболее часто используемые параметры запуска:
-
-d— определяет, какое устройство отслеживать, параметр перенаправляется вblktraceдля создания новой трассировки; -
-p— инициирует запуск другой программы во время снятия трассировки. Программа и аргументы ее запуска должны быть указаны после всех остальных параметров утилитыiowatcher; -
-K— сохраняет файлыSVGдля создания анимированного графика; -
-t— определяет расположение и имя файла, в котором хранятся трассировкиblktrace. Можно указывать только каталог с набором трассировок; -
-l— добавляет метки на графике; -
-m— создает анимированный график; -
-T— задает заголовок, который будет размещен в верхней части графика; -
-o— определяет расположение и имя файла для SVG или видео; -
-h— задает высоту графика; -
-w— задает ширину графика; -
-с— количество столбцов в графике; -
-x— ограничивает диапазон обрабатываемого времени; -
-P— различать процессы в графике ввода/вывода; -
-O— позволяет генерировать только необходимые графики (по умолчанию генерируются все); -
-N— противоположность параметра-О, определяет тот график, который нужно пропустить.
Поддерживаемые типы графиков
Утилита iowatcher следующие варианты графиков:
-
io— общая активность ввода/вывода; -
tput— пропускная способность; -
latency— задержка; -
queue_depth— глубина очереди; -
iops— количество операций в секунду; -
cpu-sys,cpu-io,cpu-irq,cpu-user,cpu-soft— загрузка CPU по видам активности.
Примеры использования
Для того чтобы снять показания с блочного устройства за определенный интервал времени, необходимо выполнить команду:
blktrace -w 300 -d /dev/sda1 -o- > trace.dump
где:
-
-w 300— интервал времени в секундах, в течение которого будут сниматься показания; -
-d /dev/sda1— устройство, с которого будет сниматься статистика ввода-вывода; -
-o-— вывод статистики в консоль; -
> trace.dump— сохранение вывода в файл trace.dump.
Для создания графиков используется утилита iowatcher.
iowatcher -t trace.dump -o trace.svg
Файл trace.svg можно открыть в браузере или любом другом графическом редакторе.
Для просмотра файла trace.svg в браузере Firefox выполните:
firefox trace.svg
Для просмотра файла в браузере Chromium выполните:
chromium-browser trace.svg
Для просмотра файла в графическом редакторе:
libreoffice --draw trace.svg
После открытия файла trace.svg отобразятся графики активности ввода/вывода на устройстве.

Device IO — на графике изображены отдельные операции ввода-вывода, выполненные в конкретное время и на определенной позиции на устройстве. Каждая точка на графике представляет собой одну из этих операций: синяя точка указывает на операцию записи, а зеленая — на операцию чтения.

Throughput — на графике представлено количество данных, обработанных устройством в процессе выполнения операций ввода-вывода (синим — объем записанных данных, зеленым — прочитанных).

IO Latency — на графике представлено время, затраченное операциями ввода-вывода от запроса до выполнения. Этот параметр отражает задержку, с которой система обрабатывает запросы на чтение или запись данных.

Queue Depth — на графике изображено количество ожидающих запросов на выполнение операции ввода-вывода.

IOPs — на графике изображено количество операций ввода-вывода в секунду выполняемых системой.
Дополнительные типовые примеры использования:
-
Создать график из существующего файла трассировки:
iowatcher -t trace
-
Пропустить график ввода/вывода в создаваемом файле trace.svg:
iowatcher -t trace.dump -o trace.svg -N io
-
Сгенерировать график только с показаниями задержки:
iowatcher -t trace.dump -o trace.svg -O latency
-
Запустить тест fio и снять трассировку этого процесса через blktrace на устройстве /dev/sda, при этом fio будет запущен с параметрами, которые указаны в
-p fio some_job_file:
iowatcher -d /dev/sda -t trace.dump -T 'Fio Benchmark' -p 'fio some_job_file'
-
Снять трассировку с диска /dev/sdb и сразу создать график:
iowatcher -d /dev/sdb -t trace -o trace.svg
-
Анимированный график активности ввода/вывода можно получить при помощи команды (перед использованием убедитесь, что установлен пакет ffmpeg):
iowatcher -t trace.dump --movie -o trace.mp4
Дата последнего изменения: 14.08.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.