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

DTrace - это всегда доступный, практически не потребляющий ресурсов фреймворк трассировки. Он доступен на множестве платформ, включая Solaris, Mac OS X, 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 5.4. До этой версии их можно подключить как расширение » PECL, которое сейчас уже достаточно бесполезно.

Статические зонды DTrace в PHP, также могут быть использованы с SystemTap в некоторых дистрибутивах Linux.