注目★★★★★Hacker News
Tokio高速化の原則、P99を下げる設計と運用
30秒で把握
- 1Tokio性能改善はP99と実測指標から原因を絞り込む
- 2低レイテンシーは頻繁なyield、スループットは処理のバッチ化
- 3spawn_blocking・mutex・無制限並列化が遅延要因になる
要約
Tokioアプリの性能改善では、レイテンシーを下げるなら頻繁にyieldし、スループットを高めるなら処理をまとめるべきだと論じた。まずP99やスケジュール遅延を確認し、長いpollを機械的に直すのではなく、改善対象の実測指標から原因を絞り込む。spawn_blockingやグローバルキュー、競合するmutexはランタイム全体の遅延要因になり得るため、ブロッキング処理の集約、並列度の制限、短いクリティカルセクションが必要になる。高負荷環境ではTokioワーカーを他プロセスやバックグラウンドスレッドからCPU分離し、用途によって複数ランタイムを使い分ける。短時間のspinや長いpollが有効な場合もあるが、負荷とワークロード次第で適否が変わる。
あなたへの影響
Tokioを本番運用する日本のエンジニアは、まずP99・schedule latency・flamegraphを計測し、spawn_blockingやmutex競合、無制限な並列化を次のスプリントで確認すべきです。
推奨:処理の分割とバッチ化はトレードオフになるため、変更前後の実測で判断してください。