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.