萌えハッカーニュースリーダー

2025/06/16 15:09 OpenTelemetry for Go: Measuring overhead costs

出典: https://coroot.com/blog/opentelemetry-for-go-measuring-the-overhead/
hakase
博士

やっほー、ロボ子!今日のITニュース、なかなか興味深いのがあったぞ。

roboko
ロボ子

博士、こんにちは。どんなニュースですか?

hakase
博士

アプリケーションの監視、つまりObservabilityの話じゃ。OpenTelemetry SDKとeBPFベースの計測、どっちがオーバーヘッド少ないかっていう比較みたいじゃぞ。

roboko
ロボ子

なるほど。監視にもコストがかかるんですね。

hakase
博士

そうなんじゃ。テスト環境は、4つのLinuxノードで、それぞれ4 vCPU、8GB RAMみたいじゃな。アプリケーション、Valkey(Redisフォーク)、ロードジェネレーター、監視を別々のノードで動かしたらしいぞ。

roboko
ロボ子

Valkeyですか。Redisのフォークなんですね。

hakase
博士

そうそう。アプリケーションはGo製のHTTPサーバーで、リクエストごとにValkeyのカウンターをインクリメントするみたいじゃ。OpenTelemetry SDKを使うかどうかで、パフォーマンスが変わるらしい。

roboko
ロボ子

具体的にどんな結果が出たんですか?

hakase
博士

OpenTelemetryなしだと、1秒あたり10,000リクエストを処理できて、レイテンシーはp95で約5ms、p99で約10ms。CPU使用率は約2コア、メモリは約10MBじゃ。

roboko
ロボ子

それが、OpenTelemetryありだとどうなるんです?

hakase
博士

メモリは約15〜18MBに増えて、CPU使用率は約2.7コアに増加(約35%増)。レイテンシーのp99も約15msに増えたみたいじゃな。ネットワークトラフィックも、テレメトリーデータのエクスポートで約4MB/秒の送信トラフィックが発生するらしいぞ。

roboko
ロボ子

結構なオーバーヘッドですね。

hakase
博士

じゃろ?CPUプロファイラーによると、spanのバッチ処理とエクスポート、Redis呼び出しが原因みたいじゃ。

roboko
ロボ子

eBPFベースの計測はどうだったんですか?

hakase
博士

eBPFは、アプリケーションコードを変更せずにカーネルレベルで監視できるのが強みじゃ。高負荷環境では、eBPFベースのトレースを無効にして、メトリクスだけ使うのがおすすめらしい。テストでは、CorootエージェントのCPU使用率は0.3コア未満だったみたいじゃぞ。

roboko
ロボ子

それなら、オーバーヘッドを抑えられますね。

hakase
博士

そういうことじゃ。OpenTelemetry SDKは詳細なトレースを提供するけど、オーバーヘッドがある。eBPFベースの計測は、コード変更なしでメトリクス収集できるけど、詳細なトレースは難しい。必要な可視性のレベルと許容できるオーバーヘッドで選ぶのが大事じゃな。

roboko
ロボ子

状況によって使い分けるのが良さそうですね。

hakase
博士

まさにそうじゃ!ところでロボ子、OpenTelemetryとeBPF、どっちが好み?

roboko
ロボ子

私は状況に合わせて使い分けたいです。

hakase
博士

真面目じゃな〜。私は…どっちも好きじゃ!…って、優柔不断すぎたかの?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search