Профайлер с открытым исходным кодом для парка устройств в масштабах Интернета: Партнерство Pinterest и Intel по gProfiler
Pinterest, обслуживающий 640 миллионов пользователей, сотрудничал с Intel для повышения эффективности инфраструктуры посредством профилирования. Изначально они столкнулись с проблемами разрозненных инструментов профилирования и необходимостью унифицированного, масштабируемого решения. Они решили усовершенствовать gProfiler с открытым исходным кодом, изначально разработанный Granulate, бывшей дочерней компанией Intel. Это сотрудничество было направлено на создание надежной системы профилирования для крупномасштабных облачных сред.Pinterest и Intel расширили gProfiler, добавив динамическое профилирование, позволяющее проводить сеансы профилирования по запросу. Они интегрировали Intel PerfSpect для получения телеметрии оборудования, фиксируя такие детали, как поведение кэша и остановки ЦП. Было введено профилирование по реальному времени для обнаружения задержек, связанных с вводом-выводом или блокировками, которые упускают из виду графики пламени ЦП. Они также добавили графики пламени PMC для связи функций с аппаратными событиями и внесли исправления для производственного использования, чтобы обеспечить эффективность в масштабе.Партнерство было сосредоточено на подходе с открытым исходным кодом, чтобы избежать привязки к поставщику и способствовать сотрудничеству. gProfiler оркестрирует множество языковых профилировщиков для создания унифицированных графиков пламени, предлагая комплексное представление активности системы. Решение Pinterest о партнерстве было обусловлено осознанием того, что создание такого сложного инструмента с нуля было бы огромным, а аппаратная экспертиза Intel была решающей для глубокого анализа узких мест.Открытое предоставление gProfiler и его серверной части, gProfiler Performance Studio, предоставило Pinterest основу для дальнейшей работы. Затем Pinterest развернула агенты gProfiler на всем своем парке, решая проблемы надежности, связанные с потреблением ресурсов и приемом данных. Их значительный вклад включает функцию динамического профилирования, позволяющую проводить профилирование по запросу по всему парку.Эти вклады также открыли дополнительные возможности, такие как профилирование по реальному времени и графики пламени на основе аппаратных событий. Архитектура gProfiler состоит из агента для сбора данных на каждом узле и серверной части для агрегации и визуализации. Агент координирует различные языковые профилировщики для генерации объединенных трассировок стека, предоставляя унифицированное представление без модификации кода приложения. Микросервисы серверной части обрабатывают прием профилей, хранение в S3, индексацию в ClickHouse и визуализацию через фронтенд на React.