Dapper, a Large-Scale Distributed Systems Tracing Infrastructure を読んだ
Dapper, a Large-Scale Distributed Systems Tracing Infrastructureを読んだ時のメモ。
どんなもの?
- 分散トレーシングシステム
- 分散システムのtraceをする
先行研究とくらべて何がすごい?
- 設計上の目標
- 要件
- ubiqitous deploy
- システムの一部がモニタリングされていないだけで大きな影響を受ける
- continuous monitoring
- 不測の事態や記録しておくべき挙動は、再現できない/難しいのでずっとモニタリングしておく必要がある
- ubiqitous deploy
技術や手法の肝は?
Distributed Tracing in Dapper
- trace tree
- node
- span
- unit of work
- RPCの開始/終了のタイミングをencodeしたデータ
- human-readableな名前がつけられている
- span間での関係性の再構築のため、span idやparent idなどを含む
- 特定のtraceに関連するspanには共通のtrace idが振られている
- span
- edge
- spanと親spanの関係を表す
- node
- trace tree
Instrumentation points
Managing Tracing Overhead
General-Purpose Dapper Tools
どうやって有効と検証した?
- Using Dapper during development
議論はある?
- 緊急時にshared stroage serviceでは役に立たない
- すぐにログやメトリックがみたいが、すぐに見れない
- shared stroage serviceではアグリゲートされた情報が必要であり、すぐに見れない(約10分以内でみれる)
- すぐにログやメトリックがみたいが、すぐに見れない
- Tracing batch workloads
- Dapperはオンラインサービスを対象に作られたが、MapReduceのようなオフラインサービスのパフォーマンス向上にも使いたい
Finding a root cause
- 処理のある部分が速いか遅いかは分かるが、根本原因を特定するのに十分な情報は得られない
Logging kernel-level information
- kernel-visible event に関する詳細な情報をとりたい
- user levelにいながらkernelの情報をとるのは一般的な方法では難しいのでsnapshot等を使う
- kernel-visible event に関する詳細な情報をとりたい