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.