DTrace — встроенный в ядро системы фреймворк трассировки с низким уровнем накладных расходов. Фреймворк доступен в Solaris, macOS, Oracle Linux, BSD и на других платформах. DTrace отслеживает поведение операционной системы и запущенных пользовательских приложений, показывает значения параметров и выводит статистику производительности. Мониторинг зондов выполняется через пользовательские скрипты на языке DTrace D. Перечисленные свойства и механизмы делают фреймворк эффективным инструментом анализа отдельных показателей.
Зонды PHP, которые не отслеживаются пользовательскими скриптами DTrace D, не содержат дополнительного кода и поэтому во время нормальной работы приложения производительность не деградирует. Отслеживаемые зонды, в свою очередь, дают очень низкую просадку производительности, что позволяет использовать их в промышленных средах.
PHP включает в себя зонды «Статически определённой
трассировки уровня пользователя» (User-level Statically
Defined Tracing, или USDT), которые работают во время
исполнения. Например, когда D-скрипт отслеживает зонд
function-entry, каждый раз при вызове
функции этот зонд запускает действие D-скрипта, которое соответствует
функции. Это действие, например, печатает аргументы
зонда наподобие расположения этой функции в PHP-скрипте.
Или же агрегирует данные наподобие
количества запусков каждой функции.
Здесь описываются только зонды PHP USDT. Информацию об отслеживании произвольных функций и поведения операционной системы даёт литература, специфичная для каждой операционной системы, и внешняя полноценная документация DTrace. Обратите внимание, что реализации DTrace иногда отличаются набором доступного функционала.
Статические зонды DTrace в PHP также умеют работать со средством SystemTap в отдельных дистрибутивах ОС Linux.