Google готовит к открытию систему трассировки XRay
Компания Google объявила о скором открытии исходных текстов проекта XRay, в рамках которого развивается система трассировки вызова функций в приложениях, активно используемая для отладки внутренних сервисов Google, таких как BigTable и движка контекстной рекламы. Система примечательна поддержкой динамической активации, позволяющей включать отладочный режим, создающий паразитную нагрузку, только при необходимости, в остальное время практически не создавая накладных расходов. Подобный подход позволяет использовать XRay для отладки высоконагруженных приложений в их естественной рабочей среде, где невозможно применение обычных систем отладки и профилирования.
Основу XRay составляют добавляемые во время компиляции точки перехвата и динамически загружаемая библиотека. В обычном режиме точки перехвата работают как пустые заглушки ("nop sleds"), а библиотека может включаться и выключаться на лету, во время работы приложения. При включении библиотеки заглушки заменяются на вызовы предоставляемых библиотекой обработчиков, выполняющих операции детализированной трассировки вызова функций в приложении. Подлежащие трассировке функции помечаются в исходных текстах через добавление специальных аннотаций ("__attribute__(...)");
Трассировка достаточно точно отражает все возникающие задержки вызова в условиях работы приложения в промышленной эксплуатации. Для изучения собранных данных подготовлен специальный аналитический инструментарий, в том числе позволяющий наглядно оценить возможные проблеме на графике. В ближайшие недели наработки XRay будут переданы сообществу LLVM.