Cloudflare、数学とRustを用いて100TBのRAMを節約
Saving another 100TB of RAM with math (and Rust)
Cloudflareは、一貫性ハッシュライブラリpingora-ketamaのメモリ使用量を削減するアルゴリズムの変更により、グローバルで100TBのRAMを節約した。この改善は、サーバーあたりのハッシュ数を90%削減し、Rustの構造体メモリレイアウトを最適化することで達成された。当初、サーバーあたりのハッシュ数が少ないとワークロードの偏りが大きくなるという課題があったが、統計学的な分析と、ハッシュ数を増やすことでこの問題を軽減できることが示された。しかし、ハッシュ数の増加に伴う衝突の可能性を考慮し、最終的にはハッシュ数を減らすことでメモリ使用量を削減するアプローチが取られた。この変更は段階的にロールアウトされ、旧リングと新リングを一時的に併用することで、キャッシュの無効化やオリジンサーバーへの負荷集中を防いだ。この最適化により、Pingora Backend Routerのメモリフットプリントが大幅に削減された。
- Cloudflareは一貫性ハッシュライブラリpingora-ketamaのアルゴリズム変更により、グローバルで100TBのRAMを節約した
- サーバーあたりのハッシュ数を90%削減し、Rustの構造体メモリレイアウト最適化を組み合わせて達成した
- ハッシュ数削減によるワークロード偏りの課題を統計分析で評価し、衝突リスクを考慮してハッシュ数を減らす方針を採用した
- 旧リングと新リングを一時併用する段階的ロールアウトで、キャッシュ無効化やオリジンサーバーへの負荷集中を防いだ
- 最適化によりPingora Backend Routerのメモリフットプリントが大幅に削減された
Cloudflareがpingora-ketamaの一貫性ハッシュ実装を見直し、ハッシュ数を90%削減するアルゴリズム変更とRust構造体のメモリレイアウト最適化でグローバル100TBのRAMを削減した点は、ハイパースケール事業者のインフラコスト構造がソフトウェア最適化だけで大きく改善し得ることを示す。データセンターのメモリ需要・電力効率や、CDN/エッジ事業者の粗利改善余地を測るうえで参考になる。段階的ロールアウトで旧リングと新リングを併用しキャッシュ無効化やオリジン負荷集中を回避した運用手順も、大規模インフラ更改のリスク管理事例として押さえておきたい。