Бой при Байонне
- 1 year ago
- 0
- 0
DTrace — фреймворк динамической трассировки , созданный компанией Sun Microsystems , предназначенный для отладки ядра и приложений в реальном времени. Изначально DTrace был создан для Solaris , затем был открыт под лицензией Common Development and Distribution Licence (CDDL) и портирован на ряд Unix-подобных систем.
DTrace может использоваться для наблюдения за количеством потребляемой памяти, процессорным временем , файловыми системами и сетевыми ресурсами, используемыми активными процессами, на работающей системе. Также можно получить более детальную информацию, например, список аргументов, с которыми вызывается каждая функция, или список процессов, использующих определённый файл.
Сценарии трассировки разрабатываются на специализированном языке языках программирования : Си , C++ , Java , Erlang , JavaScript , Perl , PHP , Python , Ruby , Tcl , распознавая вызовы функций и исходные контексты вызовов. Ряд Unix-программ поддерживают DTrace, обеспечивая отслеживание операций и системных вызовов, в частности, специальные DTrace-провайдеры разработаны для СУБД MySQL , PostgreSQL , Oracle Database , грид-платформы Univa Grid Engine , браузера Firefox .
. Инструмент поддерживает взаимодействие с кодом, сгенерированным для программ, написанным на следующихИнструмент безопасен для использования в работающей среде: во время тестирования почти не происходит снижения производительности.
Сценарии трассировки записываются на специально разработанном для инструмента языке D с си-подобным синтаксисом и оснащённый готовыми функциями и переменными, специфическими для трассировки . Программы на D по структуре напоминают программы awk ; они включают список датчиков ( англ. probe ), которым соответствуют действия. При удовлетворении определённому условию датчик срабатывает и выполняется соответствующее действие. Условием может являться, например, открытие определённого файла, запуск процесса или исполнение определённой строки кода. Существует возможность передавать информацию от одного датчика другому.
Поскольку инструмент обеспечивает отслеживание с минимальными накладными издержками, одновременно могут быть запущены десятки тысяч датчиков, новые датчики могут быть созданы динамически.
Сценарии 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 года и был официально выпущен как часть операционной системы Solaris 10 в январе 2005 года. Стал первым компонентом проекта OpenSolaris , исходный код которого выпущен под лицензией Common Development and Distribution License ( CDDL ).
В начале 2009 года DTrace был портирован во FreeBSD (версия 7.1).
Apple добавила поддержку DTrace в Mac OS X 10.5 «Leopard», включая графическую программу . В отличие от других платформ, в Mac OS X существует флаг ( P_LNOATTACH ), установка которого делает невозможным трассировку процессов такими средствами как DTrace или gdb . Изначально это создавало проблемы, так как в результате применения этого флага не могла тестироваться другая системная информация. Эта проблема была решена через несколько месяцев в обновлении Mac OS X 10.5.3.
Сообщалось о портировании DTrace на QNX 7.
Из-за лицензии CDDL, несовместимой с GPL , портирование в Linux возможно, но не легитимно . Для Linux разрабатывается утилита с близкой функциональностью под названием SystemTap на основе механизма инструментирования . Тем не менее, Oracle добавил бета-версию DTrace в Oracle Linux в 2011 году , в декабре 2012 года выпущена стабильная версия, инструмент доступен в составе ядра (начиная со второго выпуска), при этом модуль ядра DTrace сохранил лицензию CDDL .
Microsoft WPP/ETW, поддерживается от Windows Vista .
Технология разработана на основе WMI , в первую очередь событий WMI, и не более чем упрощает написание кода, возбуждающего данные события.
Исходные файлы с вызовами, возбуждающими события, должны обрабатываться неким препроцессором, который вынесет все строки формата (вызов возбуждения события похож на printf() ) в отдельный бинарный файл (.TMF), оставив в переработанном исходном коде только параметры вызовов.
Без наличия TMF-файла для компоненты приложение-потребитель видит только номера событий и их параметры, но не текстовые описания.
Это сильно улучшает производительность системы. Также технология не приводит к снижению производительности в случае, если нет приложения-потребителя.
По состоянию на середину 2010-х годов Microsoft не опубликовал TMF-файлы ни к одному стандартному компоненту Windows, за исключением NDIS (опубликовано около конца 2010).