Втр, 30 Ноя 2010 10:09:44 +0400The Apple Geek

Применение dtrace для поиска файлов, к которым идут активные обращения

]]>

Оригинал новости

]]>

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.

Ctrl ←Ctrl →
Share
iPhone 4S — привозим первыми и не наглеем
Техника Apple в магазине на Facebook

© 2007—2012 Макдак. Россия.

© Все права на новости принадлежат соответствующим источникам.


 Андрей Шипилов — идея, дизайн, вёрстка, программирование и поддержка.

 
]]>
]]>