[ON] Яндекс открыл Perforator, инструментарий для профилирования приложений

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6001
ОС: gnu/linux

[ON] Яндекс открыл Perforator, инструментарий для профилирования приложений

Сообщение rssbot »

Компания Яндекс объявила об открытии исходного кода инструментария Perforator, предназначенного для непрерывного сбора детальных метрик с информацией о работе приложений и рассчитанного на использование в крупных кластерах и датацентрах. Инструментарий позволяет анализировать работу приложений в реальном времени, оценивать распределение ресурсов на Linux-серверах и выявлять наиболее ресурсоёмкие приложения. Код написан на языке С++ и распространяется под лицензией MIT (eBPF-программы под GPLv2).






В Яндекс Perforator развёрнут в кластере, насчитывающем более 10 тысяч узлов, и применяется для выявления и исправления проблем с производительностью в различных сервисах, включая Яндекс Поиск и Яндекс Рекламу. Отмечается, что Perforator способствовал устранению узких мест и оптимизации ресурсоёмких вычислений, благодаря чему компании Яндекс удалось на 20% снизить расходы на серверы.



Заявленные возможности:
  • Использование подсистемы ядра eBPF и API perf_events для сбора сведений о работе компонентов ядра Linux и приложений в пространстве пользователя. Накладные расходы при сборе метрик приводят к снижению производительности примерно на 0.1%. Поддерживается работа только на системах с архитектурой x86-64.
  • Масштабируемое хранилище профилей производительности. Для хранения метаданных профилей используется СУБД
    ClickHouse, для хранения бинарных метаданных - PostgreSQL, а для хранения raw-профилей и бинарных данных - любые хранилища, совместимые с Amazon S3.
  • Возможность раскрутки стека вызовов (unwinding) без необходимости включения при сборке программ отладочных символов и опции "-fno-omit-frame-pointer" (сохраняет указатель на кадр стека, содержащий адреса возврата и переменные функции).
  • Наличие языка запросов и web-интерфейса для инспектирования нагрузки на CPU при работе приложений.
    Изображение
  • Для наглядной оценки узких мест применяется визуализация в стиле FlameGraph.
    Изображение
  • Возможность профилирования проектов, использующих различные языки и runtime, без внесения изменений в сборочные процессы и без перекомпиляции программ. Заявлена поддержка языков программирования C++, Go, Rust, Java, Python и JavaScript/Node.js.
  • Возможность генерации профилей sPGO для последующей сборки приложений с оптимизациями на основе результатов профилирования кода (PGO - Profile-guided optimization), которые позволяют генерировать более оптимальный код на основе анализа особенностей выполнения программы.
  • Поддержка использования в качестве замены инструментария perf в Linux.
  • Автоматизация развёртывания в кластерах на базе Kubernetes. На каждом узле запускается специальный агент, собирающий, агрегирующий, сжимающий и передающий данные о производительности. Данные передаются агентами в формате, совместимом с pprof, через gRPC в микросервисы, отвечающие за сбор, хранение, анализ, символизацию (преобразование адресов в имена функций и позиции в коде) и обработку профилей и исполняемых файлов (необходимы при раскрутке стека).

    Изображение
    Изображение



Источник: https://www.opennet.ru/opennews/art.shtml?num=62641
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 31.01.2025 07:16, всего редактировалось 3 раза.
Причина: Updated upstream
Спасибо сказали: