Введение в PHP и DTrace

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.