DTrace
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/83/DTrace_on_Windows_v10.0.19041.1_1115x966.png/220px-DTrace_on_Windows_v10.0.19041.1_1115x966.png)
DTrace —
DTrace может использоваться для наблюдения за количеством потребляемой памяти, процессорным временем, файловыми системами и сетевыми ресурсами, используемыми активными процессами, на работающей системе. Также можно получить более детальную информацию, например, список аргументов, с которыми вызывается каждая функция, или список процессов, использующих определённый файл.
Сценарии трассировки разрабатываются на специализированном языке
Инструмент безопасен для использования в работающей среде: во время тестирования почти не происходит снижения производительности.
Язык сценариев
Сценарии трассировки записываются на специально разработанном для инструмента языке D с
Поскольку инструмент обеспечивает отслеживание с минимальными накладными издержками, одновременно могут быть запущены десятки тысяч датчиков, новые датчики могут быть созданы динамически.
Примеры использования
Сценарии DTrace могут быть запущены из командной строки, используя один или более датчиков в качестве аргументов. Примеры:
# New processes with arguments, dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' # Files opened by process, dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }' # Syscall count by program, dtrace -n 'syscall:::entry { @num[execname] = count(); }' # Syscall count by syscall, dtrace -n 'syscall:::entry { @num[probefunc] = count(); }' # Syscall count by process, dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }' # Disk size by process, dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' # Pages paged in by process, dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }'
Поддерживаемые платформы
DTrace был представлен в ноябре 2003 года и был официально выпущен как часть операционной системы
В начале 2009 года DTrace был портирован во FreeBSD (версия 7.1).
Сообщалось о портировании DTrace на QNX 7.
Из-за лицензии CDDL, несовместимой с GPL, портирование в Linux возможно, но не легитимно. Для Linux разрабатывается утилита с близкой функциональностью под названием SystemTap на основе механизма инструментирования kprobes. Тем не менее, Oracle добавил бета-версию DTrace в Oracle Linux в 2011 году[2], в декабре 2012 года выпущена стабильная версия, инструмент доступен в составе ядра Unbreakable Enterprise Kernel (начиная со второго выпуска), при этом модуль ядра DTrace сохранил лицензию CDDL[3].
Примерные аналоги
Microsoft WPP/ETW, поддерживается от Windows Vista.
Технология разработана на основе WMI, в первую очередь событий WMI, и не более чем упрощает написание кода, возбуждающего данные события.
Исходные файлы с вызовами, возбуждающими события, должны обрабатываться неким препроцессором, который вынесет все строки формата (вызов возбуждения события похож на printf()) в отдельный бинарный файл (.TMF), оставив в переработанном исходном коде только параметры вызовов.
Без наличия TMF-файла для компоненты приложение-потребитель видит только номера событий и их параметры, но не текстовые описания.
Это сильно улучшает производительность системы. Также технология не приводит к снижению производительности в случае, если нет приложения-потребителя.
По состоянию на середину 2010-х годов Microsoft не опубликовал TMF-файлы ни к одному стандартному компоненту Windows, за исключением NDIS (опубликовано около конца 2010).
Примечания
- ↑ Это специальный предметно-ориентированный язык, созданный для DTrace, не имеющий ничего общего с языком программирования D общего назначения
- ↑ trying out dtrace . Дата обращения: 10 декабря 2012. Архивировано 18 апреля 2015 года.
- ↑ DTrace on Linux . Дата обращения: 10 декабря 2012. Архивировано из оригинала 7 июля 2014 года.
Ссылки
На английском
- DLight Tutorial (недоступная ссылка) — DLight is an interactive graphical observability tool for C/C++ developers based on DTrace technology from the Oracle Solaris Studio
- Exploring Leopard with DTrace — how to use DTrace for debugging and exploration
- Google Tech Talk on DTrace given by Bryan Cantrill
На русском
- Статьи про DTrace на sunhelp.ru
- Инновационные технологии OpenSolaris — Глава 12: DTrace
- Инновационные технологии OpenSolaris — Глава 13: DTrace для разработчиков