2.9.25.9 Анализ производительности блочных устройств (blktrace) и построение графиков на основе собранных данных (iowatcher)
Скачать документ Установка
Возможности blktrace
Возможности iowatcher
Примеры использования
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Рабочая станция
- Версия ПО: blktrace-1.0.5-10, iowatcher-1.0-8
blktrace – это инструмент для трассировки событий блочного ввода/вывода, который использует трассировщик blktrace в ядре. Это низкоуровневый инструмент, отображающий множество событий для каждой операции ввода/вывода. blktrace используется в качестве вспомогательного инструмента в программных решениях, предназначенных для анализа и диагностики проблем производительности в системах хранения данных.
iowatcher – утилита, позволяющая анализировать данные, подготовленные с помощью blktrace и строить на основе этих данных графики (в том числе и анимированные). Т.е. инструмент blktrace позволяет записывать события в файлы трассировки для последующей визуализации с помощью утилиты iowatcher. Поэтому работу iowatcher не стоит рассматривать отдельно от blktrace.
С помощью iowatcher также можно запускать blktrace с последующим созданием графика трассировки одной командой.
Установка
Для установки утилит перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf install blktrace iowatcher
Возможности blktrace
blktrace запускает трассировку драйвера блочного устройства в ядре и возвращает данные трассировки, которые можно обработать помимо iowatcher с помощью blkparse. Для удобства был также создан инструмент 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. Идентификатор действия: тип события.
7. Описание RWBS: флаги ввода/вывода.
Далее приведено описание идентификаторов из страницы справочного руководства для blkparse. Этот список показывает, какие события может наблюдать фреймворк blktrace:
A – ввод/вывод был отображен на другое устройство;
B – дополнительный ввод/вывод;
C – ввод/вывод завершен;
D – запрос передан драйверу;
F – запрос добавлен в начало другого запроса, находившегося в очереди;
G – выделение памяти для запроса;
I – запрос добавлен в очередь планировщика ввода/вывода;
M – запрос добавлен в конец другого запроса, находившегося в очереди;
P – блокировка очереди для накопления нескольких запросов;
Q – ввод/вывод передан коду, который управляет очередью;
S – ожидание освобождения структуры для размещения запроса;
T – разблокировка очереди по тайм-ауту;
U – разблокировка очереди;
X – запрос разделен.
Для нужд мониторинга ядро позволяет описать тип каждой операции ввода/вывода с помощью строки символов — 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 – противоположность параметра -О, определяет тот график, который нужно пропустить.
Варианты графиков – io, tput, latency, queue_depth, iops, cpu-sys, cpu-io, cpu-irq, cpu-user, cpu-soft.
Примеры использования
Для того чтобы снять показания с блочного устройства (диска) за определенный интервал времени, необходимо выполнить команду:
blktrace -w 600 -d /dev/sda1 -o- > trace.dump
где:
w 300
– интервал времени в секундах, в течение которого будут сниматься показания;d /dev/sda
– устройство, с которого будет сниматься статистика ввода-вывода;-o-
– вывод статистики в консоль;trace.dump
– перенаправление из консоли в файл trace.dump.
Для создания графика используется утилита iowatcher.
iowatcher -t trace.dump -o trace.svg
Файл trace.svg можно открыть в браузере или любом другом графическом редакторе.
Дополнительные типовые примеры использования:
Создать график из существующего файла трассировки:
iowatcher -t trace
Пропустить график ввода/вывода в создаваемом файле trace.svg:
iowatcher -t trace.dump -o trace.svg -N io
Сгенерировать график только с показаниями latency (задержка):
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
Анимированный график можно получить при помощи команды:
iowatcher -t trace.dump --movie -o trace.mp4
Дата последнего изменения: 09.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.