Perforator – это новая система непрерывного профилирования, разработанная для анализа производительности программ в Linux. Она использует eBPF для сбора стеков в ядре, что обеспечивает высокую точность и низкий оверхед. Perforator способен профилировать широкий спектр событий, включая такты CPU и ввод-вывод, и поддерживает раскрутку стека через DWARF, упрощая процесс оптимизации производительности.
Система состоит из трех основных компонентов: агента, работающего на каждом хосте и собирающего профили; хранилища, где профили и бинарные файлы хранятся в S3 и ClickHouse; и бэкенда, предоставляющего gRPC-интерфейс для пользователей и агентов. Perforator поддерживает нативные языки программирования (C++, C, Go, Rust) и JIT-компилируемые языки, а также предлагает интеграцию с FDO для оптимизации на основе профилей.
Ключевым преимуществом Perforator является его способность генерировать быстрые и интерактивные флеймграфы, позволяющие легко находить узкие места в коде. Кроме того, система может быть использована для профилирования по срезам, например, для анализа производительности в A/B-тестах, и сбора стеков при фатальных сигналах, что упрощает отладку.
Perforator также предоставляет локальный режим для замены
Изображение носит иллюстративный характер
Система состоит из трех основных компонентов: агента, работающего на каждом хосте и собирающего профили; хранилища, где профили и бинарные файлы хранятся в S3 и ClickHouse; и бэкенда, предоставляющего gRPC-интерфейс для пользователей и агентов. Perforator поддерживает нативные языки программирования (C++, C, Go, Rust) и JIT-компилируемые языки, а также предлагает интеграцию с FDO для оптимизации на основе профилей.
Ключевым преимуществом Perforator является его способность генерировать быстрые и интерактивные флеймграфы, позволяющие легко находить узкие места в коде. Кроме того, система может быть использована для профилирования по срезам, например, для анализа производительности в A/B-тестах, и сбора стеков при фатальных сигналах, что упрощает отладку.
Perforator также предоставляет локальный режим для замены
perf record
, что позволяет быстро профилировать процессы или всю систему. Он поддерживает символизацию бинарных файлов через debuginfod. Несмотря на некоторые ограничения, такие как необходимость CAP_SYS_ADMIN и поддержка Linux 5.4+, Perforator является мощным инструментом для оптимизации производительности.