# Dapper ## 概要 **Dapper** は [[Google]] の内部分散トレーシングサービス。RPC ツリー全体(トレース)をサンプリングして収集し、各 RPC ノードのレイテンシ成分を詳細に記録する。 ## 機能 各 RPC 呼び出しに対して以下の情報を収集する: - クライアント送信キュー待ち時間 - リクエスト RPC 処理 + ネットワークスタック - リクエストネットワーク転送 - サーバ受信キュー待ち時間 - サーバアプリケーション処理時間(ネストした RPC 呼び出しを含む) - サーバ送信キュー待ち時間 - レスポンスネットワーク転送 - レスポンス RPC 処理 + ネットワークスタック - クライアント受信キュー待ち時間 ## RPC 特性研究での位置づけ [[@2023__SOSP__A Cloud-Scale Characterization of Remote Procedure Calls]] では、Dapper を用いて単一日の **722 億** RPC サンプルを収集。RPC レイテンシタックス(RLT)の成分分析と、8 代表サービス(Bigtable・Network Disk・SSD cache・Video Metadata・Spanner・F1・ML Inference・KV-Store)のクラスタ間・クラスタ内のレイテンシ変動分析を実施した。 ## 分散トレーシングとの関係 Dapper は [[分散トレーシング]]の先駆的実装の一つ。他のシステム(Zipkin・Jaeger など)の設計に影響を与えた。[[OpenTelemetry]] のような標準化より前から Google 内部で大規模運用されている。 ## 出典 - [[@2023__SOSP__A Cloud-Scale Characterization of Remote Procedure Calls]]