Cloudflareが192コアEPYC Turinで性能2倍を達成した「逆転の設計思想」

インターネットの約2割を支えるCloudflareが、新世代サーバーで「キャッシュを捨てて、コアを取る」という賭けに出た。その結果が、想像以上だった。

Cloudflareが192コアEPYC Turinで性能2倍を達成した「逆転の設計思想」
Claudflare

インターネットの約2割を支えるCloudflareが、新世代サーバーで「キャッシュを捨てて、コアを取る」という賭けに出た。その結果が、想像以上だった。


キャッシュを捨てたサーバーが、なぜ速くなったのか

Cloudflareの第13世代サーバー「Gen 13」が、グローバル展開を開始している。搭載CPUはAMD EPYC 9965(コードネーム:Turin)。192コア/384スレッドという、業界最高密度のサーバー向けプロセッサだ。

結果は明快で、前世代Gen 12比でスループット2倍、電力効率50%改善、ラックあたりの処理能力60%向上。数字だけ見れば順当な世代交代に見える。だが、この成果に至るまでの道のりは、まっすぐではなかった。

Cloudflareが3月24日(日本時間)に公式ブログで公開した技術解説は、単なるスペック発表ではない。ハードウェアの限界をソフトウェアで突破した、エンジニアリングの記録だ。

Launching Cloudflare’s Gen 13 servers- trading cache for cores for 2x edge compute performance
Cloudflare’s Gen 13 servers double our compute throughput by rethinking the balance between cache and cores. Moving to high-core-count AMD EPYC ™ Turin CPUs, we traded large L3 cache for raw compute density. By running our new Rust-based FL2 stack, we completely mitigated the latency penalty to unlock twice the performance.

Gen 12では、AMD EPYC 9684X(Genoa-X)の巨大な3D V-Cacheが武器だった。1コアあたり12MBのL3キャッシュ。データをCPUの近くに置き続けることで、メモリアクセスの遅延を最小化する設計だ。

ところがGen 13のEPYC 9965では、コアあたりのL3キャッシュがわずか2MBに激減する。前世代の6分の1。コア数は96から192へ倍増したが、キャッシュ容量は大幅に削られた。

処理能力の「エンジン」を2倍にした代わりに、「燃料タンク」を6分の1に縮めたようなものだ。

L3キャッシュのヒットは約50サイクルで完了するが、ミスしてDRAMにアクセスすると350サイクル以上かかる。桁が1つ違う。

当然、そのまま載せ替えれば問題が起きる。実際に起きた。


旧ソフトウェアが突きつけた「50%のレイテンシ悪化」

Gen 13の性能を最初に制限したのは、CPU自体ではなくソフトウェアだ。既存のリクエスト処理レイヤー「FL1」は、15年にわたって改良されてきたNGINX+LuaJITベースのシステムであり、大容量L3キャッシュを前提に最適化されている。

FL1でのスループットは62%向上した。だが高負荷時のレイテンシが50%以上悪化した。いくら処理量が増えても、1つ1つのリクエストが遅くなればユーザー体験は劣化する。Cloudflareにとって、これは受け入れられない結果だった。

AMDと共同でハードウェアチューニングも試みている。プリフェッチャーの調整、Data Fabricのプローブフィルター変更、NUMA配置の最適化。AMDのPQOS(Platform Quality of Service)を活用し、CCD単位でキャッシュを専有させる構成も検証した。

NUMA単位でCCDを専有させる構成では15%以上のスループット改善が見られたが、根本的な解決には至らなかった。ハードウェアだけでは、この壁は越えられない。

Rustへの書き換えが「偶然の救世主」になった

ここで転機になったのが、FL2への移行だ。FL2は2024年7月に最初のコミットが行われた、Cloudflareのリクエスト処理レイヤーの完全なRust書き換えプロジェクトである。

重要なのは、FL2はGen 13のキャッシュ問題を解決するために作られたわけではないということだ。メモリ安全性の向上、開発速度の改善、モジュール化されたアーキテクチャ。目的はもっと広い。だが結果として、FL2のメモリアクセスパターンは旧システムより遥かに効率的で、巨大なL3キャッシュへの依存を根本から断ち切った。

FL2をGen 13上で稼働させた結果、レイテンシはGen 12比で70%低減し、スループットは完全な2倍に到達した。

Cloudflare

FL1では50%以上のレイテンシ悪化が壁だったのに、FL2ではむしろGen 12より70%低いレイテンシを実現した。スループットもFL1の62%向上から、FL2では100%向上——つまり完全な2倍に到達している。

キャッシュへの依存が消えたことで、スループットはコア数に比例してスケールするようになった。192コアの本領が、ようやく発揮された形だ。

Gen 13サーバーの全体像——768GB RAM、100GbE、24TB NVMe

ハードウェア構成の詳細を解説した第2のブログ記事も同時に公開されている。Gen 13の全体像はこうだ。192コアのEPYC 9965に、768GBのDDR5-6400メモリ、24TBのPCIe 5.0 NVMeストレージ、デュアル100GbEネットワークインターフェース。

メモリ構成の選定理由が興味深い。12チャネルすべてに64GB DIMMを搭載する「1DPC」構成で、ピーク帯域幅は614GB/s。Gen 12比で33.3%の向上だ。

96GB DIMMにしなかった理由について、Cloudflareは率直に語っている。

「現在の市場では、メモリ価格が1年前の10倍になっている」

AI需要によるHBM・DRAM価格高騰が、エッジサーバーの設計にまで波及している現実だ。コスト、消費電力、性能のバランスを考え、4GB/コアの構成が選ばれた。

ネットワークも25GbEから100GbEへ一気に4倍。グローバルなエッジネットワーク全体で、同じラック電力枠のままスループットを60%引き上げるという設計は、既存データセンターへのシームレスな展開を可能にする。


ハードウェアとソフトウェアの「共進化」が示すもの

Cloudflareの事例が示しているのは、ハードウェアの世代交代は単なる載せ替えでは済まないということだ。

EPYC Turinの192コアは、そのまま使えばレイテンシの壁にぶつかる。だがRustで書き直されたFL2と組み合わせることで、キャッシュ削減というトレードオフが消え、コア数の恩恵だけが残った。Cloudflare自身が「ハードウェアとソフトウェアの共同設計の重要性を思い出させてくれた」と述べている通りだ。

Linux専門メディアPhoronixのマイケル・ラーベル氏も、EPYC 9005シリーズの実力については「驚きではない」と評しつつ、ソフトウェア最適化との相乗効果に注目している。

もうひとつ見逃せないのは、CloudflareがIntelを選ばなかった歴史だ。Gen 10でIntelを完全に排除して以来、一貫してAMD EPYCを採用し続けている。Gen 13でもその方針は変わらなかった。サーバー市場におけるAMDの存在感は、こうした大規模インフラ企業の選択によって静かに、しかし確実に固まりつつある。

Gen 13はすでに量産出荷が始まり、Cloudflareのグローバルネットワークへの展開が進んでいる。次にあなたがWebサイトを開いたとき、そのリクエストはもう、192コアのTurinが処理しているかもしれない。


#Cloudflare #AMD #EPYC #Turin #Rust #サーバー #インフラ