Понимание вывода 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.

Если вы хотите измерить, какие приложения читают / пишут больше всего, вы хотите измерить на уровне системного вызова. На уровне устройства только потоки ядра выполняют свою работу.

Другие вопросы по тегам