
Dtrace – мощная подсистема ядра, позволяющая исследовать работу операционной системы и приложений. Я давно к ней не возвращался в статьях, рекомендую почитать “Отладка файловой активности процессов с помощью DTrace, или как написать деинсталлятор” и “Поиск метода установки Mac OS X под VMWare Fusion“. В первой статье есть ссылки для дальнейшего чтения.
Сегодня приведу полезный скрипт, показывающий, к каким файлам шли частые обращения за 10-ти секундный интервал. Скрипт работает непрерывно до его прерывания. Применение – можно увидеть, почему вдруг увеличилась нагрузка на систему из-за дисковой активности.
Скрипт:
$ cat 02_openfiles.d#!/usr/sbin/dtrace -s io:::start{ @[args[2]->fi_pathname] = count();}tick-10s{ trunc(@, 10); printa(@); trunc(@, 0);}Выставить права на запуск:
$ chmod +x 02_openfiles.d
Запуск:
$ sudo ./02_openfiles.d
Второй вариант запуска – в одну строку:
$ sudo dtrace -n 'io:::start {@[args[2]->fi_pathname] = count();} tick-10s {trunc(@, 10); printa(@); trunc(@, 0);}'Пример работы:
0 129269 :tick-10s??/Logs/FileSyncAgent.log 1??/Russian.lproj/Dictionary.dat 1??/DiagnosticMessages/StoreData 3??/DiagnosticMessages/2010.11.30.asl 6??/com.apple.Safari/Cache.db-journal 8??/com.apple.Safari/Cache.db 510 129269 :tick-10s??/bands/114 1??/bands/ef 2??/Cookies/Cookies.plist_tmp_67927_0.dat 3??/bands/115 3??/bands/a0 3??/bands/0 4??/bands/59 5??/com.apple.Safari/Cache.db-journal 6??/com.apple.Safari/Cache.db 12??/unknown (NULL v_parent)/unknown (NULL v_name) 16
По этим примерам можно сказать, что Safari активно пишет в кеш, и система синхронизирует iDisk.
Почему iDisk? /bands/114 указывает на Sparse Bundle Image, Time Machine вне подозрения (TimeCapsule далеко), а поиск find’ом показал каталог ctrld_iDisk.sparsebundle:
$ sudo find / -name 114/Users/ctrld/Library/FileSync/0025bcdcddae/ctrld_iDisk.sparsebundle/bands/114
Указанный пример очень прост, есть гораздо более впечатляющие примеры. Хотите узнать больше? Смотрите OpenSolaris Community Group dtrace.
