インターネット規模のフリートにおけるオープンソースプロファイラー:PinterestとIntelのgProfilerに関するパートナーシップ
Pinterestは、6億4000万人のユーザーにサービスを提供しており、プロファイリングを通じてインフラストラクチャの効率を向上させるためにIntelと提携しました。当初、断片化されたプロファイリングツールと、統一されたスケーラブルなソリューションの必要性という課題に直面していました。彼らは、元Intelの子会社であるGranulateによって開発されたオープンソースのgProfilerを強化することを選択しました。この協力は、大規模なクラウド環境向けの堅牢なプロファイリングシステムを作成することを目的としていました。PinterestとIntelは、オンデマンドのプロファイリングセッションを可能にする動的プロファイリングを追加してgProfilerを拡張しました。彼らは、キャッシュの動作やCPUのストールなどの詳細をキャプチャするハードウェアテレメトリのためにIntel PerfSpectを統合しました。CPUのフレイムグラフが見逃すI/Oまたはロック競合からの遅延を検出するために、ウォールタイムプロファイリングが導入されました。また、関数をハードウェアイベントにリンクするためにPMCフレイムグラフを追加し、大規模な効率を確保するために本番環境向けの修正を貢献しました。この提携は、ベンダーロックインを回避し、協力を促進するためにオープンソースアプローチに焦点を当てました。gProfilerは、複数の言語固有のプロファイラーをオーケストレーションして統一されたフレイムグラフを生成し、システムアクティビティの包括的なビューを提供します。Pinterestが提携を決定したのは、このような複雑なツールをゼロから構築することの途方もなさを認識したためであり、Intelのハードウェアの専門知識は、深いボトルネック分析に不可欠でした。gProfilerとそのバックエンドであるgProfiler Performance Studioのオープンソース化は、Pinterestに構築するための基盤を提供しました。Pinterestはその後、フリート全体にgProfilerエージェントを展開し、リソース消費とデータ取り込みに関連する信頼性の懸念に対処しました。彼らの重要な貢献には、フリート全体でのオンデマンドプロファイリングを可能にする動的プロファイリング機能が含まれます。これらの貢献は、ウォールクロックタイムプロファイリングやハードウェアイベントベースのフレイムグラフなどの追加機能もアンロックしました。gProfilerアーキテクチャは、各ノードでのデータ収集用エージェントと、集計および視覚化用バックエンドで構成されています。エージェントは、さまざまな言語プロファイラーを調整してマージされたスタックトレースを生成し、アプリケーションコードの変更なしに統一されたビューを提供します。バックエンドマイクロサービスは、プロファイル取り込み、S3への保存、ClickHouseへのインデックス作成、およびReactフロントエンドを介した視覚化を処理します。