Понимание вывода iotop (DTT) в Solaris
При запуске DTT iotop на сервере Solaris 10 с интенсивной записью, который запускает несколько зон с установленными демонами MySQL, я получаю следующий вывод:
UID PID PPID CMD УСТРОЙСТВО MAJ MIN D БАЙТОВ 70 26636 1 mysqld sd1 10 64 R 360448 70 25940 1 mysqld sd1 10 64 R 530432 0 5 0 zpool-rpool sd1 10 64 Вт 17250816
Меня беспокоит тот факт, что zpool-rpool
занимает большую часть IO. Что я могу сделать, чтобы увидеть, какой из MySQL или других процессов действительно требует ввода-вывода - более сложная разбивка? Если zpool-rpool
представляет "пишет в ZFS", тогда iotop действительно не помогает мне здесь...:)
Спасибо!
2 ответа
Вам может пригодиться недавняя серия блогов Брендана Грегга о задержке файловой системы. Он показывает пару сценариев для исследования использования файловой системы с поставщиком syscall (который должен быть более надежным для определения ответственных процессов, чем поставщик io, используемый iotop).
Например, syscall-read-zfs.d
Сценарий, показанный в части 4, может быть легко изменен для проверки записей и агрегирования в pid, а не в execname.
Вывод этого скрипта также может быть более полезным, чем iotop, поскольку он показывает количество операций ввода-вывода и распределение задержки ввода-вывода на процесс. Для базы данных задержка чтения и синхронной записи является прямым показателем снижения производительности - гораздо проще интерпретировать, чем число байтов в секунду.
Если у вас есть время, я также настоятельно рекомендую посмотреть его презентацию в BayLISA, чтобы наглядно продемонстрировать, как он исследует проблемы производительности запросов MySQL.
Если вы хотите измерить, какие приложения читают / пишут больше всего, вы хотите измерить на уровне системного вызова. На уровне устройства только потоки ядра выполняют свою работу.