CloudflareのDNSキャッシュは250億以上のエントリを格納しており、無駄な1バイトがネットワーク全体で250GBのコストになります。メモリ内のエントリの格納方法に5つの連続した変更を加えることで、エントリあたりのフットプリントを50%以上削減し、約100テラバイトのRAMを解放しました—これはGen 13サーバー130台分に相当します。最適化はパフォーマンスも向上させました:挿入スループットが43%向上し、ルックアップレイテンシが19%低下し、メモリ使用量の削減が操作を高速化できることを証明しました。
主な変更は、Vec型とString型をBox<[T]>とBox<str>に置き換え、不要な容量フィールドとヒープの過剰割り当てを排除したことです。各キャッシュエントリは元々8つのVec/Stringフィールドを使用し、各フィールドに24バイトのオーバーヘッドがありましたが、スライスに切り替えることでエントリあたり64バイトを節約しました。これはカスタムアロケータのベンチマークで測定され、本番環境で検証され、速度を犠牲にすることなくメモリ節約が顕著でした。
この記事は、代表的なトラフィック(56%のAレコード、25%のAAAA、19%のTXT)でのベンチマークから、データセンター全体への段階的な展開までの技術的プロセスを詳述しています。エントリあたりの小さな節約がスケールで massive に蓄積されること、そして注意深いプロファイリングがメモリとパフォーマンスの両方の向上につながることを強調しています。
主要エンティティ:企業:Cloudflare
よくある質問:CloudflareはどのようにDNSキャッシュメモリ使用量を100TB削減しましたか?
CloudflareはキャッシュエントリのVecおよびStringフィールドをBox<[T]>とBox<str>に置き換え、容量オーバーヘッドとヒープの無駄を排除し、エントリあたり64バイトを節約し、250億エントリで約100TBになります。
出典: Hacker News · 要約:HeadlinesBriefing