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

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3807
Зарегистрирован: 20.08.2022

#

Яндекс открыл Perforator, инструментарий для профилирования приложений в датацентрах
Дата публикации:Thu, 30 Jan 2025 16:31:26 +0300




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







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




Заявленные возможности:
  • Использование подсистемы ядра eBPF для сборка сведений о работе компонентов ядра и пространства пользователя. Накладные расходы при сборе метрик оцениваются примерно в снижение производительности на 0.1%.

    Масштабируемое хранилище для хранения профилей производительности. Для хранения метаданных профилей используется СУБД
    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. На каждом узле запускается специальный агент, собирающий (используется обработчик на базе eBPF и API perf_events), агрегирующий, сжимающий и передающий данные о производительности. Данные передаются агентами через gRPC в микросервисы, отвечающие за сбор, хранение, анализ, символизацию (преобразование адресов в имена функций и позиции в коде) и обработку профилей и исполняемых файлов (необходимы при раскрутке стека).

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


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=62641

Жизнь за Нер'зула!

Ответить