Все мы любим скрипт DTrace opensnoop, который отображает, какие файлы открывает процесс. Но не opensnoop’ом же единым! В Mac OS X входят еще несколько готовых скриптов, предназначенных для анализа характера операций ввода-вывода.
Вот, например, iotop. Как несложно догадаться из названия, это некий аналог top для I/O:
Можно видеть, какие процессы проявляют наибольшую активность по вводу-выводу. В данном случае это процесс nsd (Archiware PresSTORE), который восстанавливает файлы с ленты на том Xsan. Неплохо, правда?
Кроме старого знакомого opensnoop есть еще и iosnoop. Он выдает номер блока, к которому идет обращение, и размер трансфера:
Видим, что обращение происходит блоками по 1048576 байт — ровно 1 МБ. Прямо, как в книжке!
Мой любимый скрипт — bitesize.d. Показывает, какими блоками приложение обращается к дискам. Запускаем, скрипт собирает данные, жмем Ctrl+C — и получаем наглядную статистику:
Полученными данными можно пользоваться для определения характера ввода-вывода конкретного приложения и, например, последующего сайзинга системы хранения.
Стоит отметить, что все приведенные выше команды — это не более, чем скрипты DTrace. Выполнив, к примеру, less /usr/bin/bitesize.d, можно заглянуть в исходный код, понять, как и что работает, начитаться руководств по DTrace на сайте Oracle и начать писать их самостоятельно. Но того, что уже есть, для большинства задач вполне хватит.