公開日: 2026-03-23 — Syona Sarma, JQ Lau, Jesse Brandeburg — 6分で読めます
概要
2年前、CloudflareはAMD EPYC™ Genoa‑X(3D V‑Cache搭載)を採用した第12世代サーバーフリートを導入しました。当時、キャッシュ重視のアーキテクチャはリクエスト処理レイヤー(当時のFL1)に最適でした。しかし次世代ハードウェアを評価する中でジレンマに直面しました:最もスループットを向上させるCPUは大幅なL3キャッシュ削減を伴っており、従来のソフトウェアスタックではそれがレイテンシ上昇によるスループットの頭打ちを招いていました。
このブログでは、Rustで再実装したリクエスト処理レイヤーFL2への移行が、Gen 13の潜在力を引き出し、以前のスタックでは不可能だったパフォーマンス改善を実現した経緯を説明します。FL2は大容量キャッシュへの依存を取り除き、コア数に応じた性能拡張を可能にしながらSLAを維持します。今日、AMD EPYC™ 5th Gen TurinベースのGen 13サーバーをFL2で稼働させ、エッジでの性能を効果的に捉えスケールすることを発表します。
AMD EPYC Turinがもたらすもの
AMDのEPYC™ 5th Generation(Turin)は単なるコア数増加以上の改善を提供します。Cloudflareサーバーに必要な複数の次元での向上が含まれます。
- コア数が最大で2x: Gen 12の96コアに対し最大192コア、SMTで384スレッド
- IPC改善: Zen 5のアーキテクチャ改善によりZen 4より命令あたりの性能が向上
- 電力効率の向上: コア数が増えても、Genoa‑Xに比べコア当たり最大32%少ない電力消費
- DDR5‑6400サポート: 増えたコアを賄うためのメモリ帯域幅改善
ただし、Turinの高密度OPNは明確なトレードオフを含みます:スループットを優先する代わりに、コアあたりのL3キャッシュを削減しています。例えば、最も高密度のTurin OPN(192コア)ではL3合計が384MBで、コア当たり約2MBしか割り当てられず、Gen 12の約1/6です。キャッシュ局所性に依存するワークロードではこれは深刻な課題になります。
世代比較(抜粋)
| 世代 | プロセッサ | コア/スレッド | L3キャッシュ/コア |
|---|
| Gen 12 | AMD Genoa‑X 9684X | 96C/192T | 12MB (3D V‑Cache) |
| Gen 13 Option 1 | AMD Turin 9755 | 128C/256T | 4MB |
| Gen 13 Option 2 | AMD Turin 9845 | 160C/320T | 2MB |
| Gen 13 Option 3 | AMD Turin 9965 | 192C/384T | 2MB |
パフォーマンスカウンタによる問題の診断
FL1(NGINX+LuaJITベース)のリクエスト処理レイヤーでは、このキャッシュ削減が大きな問題となり得ました。評価段階でAMD uProfなどを使ってCPUパフォーマンスカウンタとプロファイリングを収集し、実際に何が起きているかを計測しました。主要な発見は次の通りです。
- L3キャッシュのミス率がGen 12(3D V‑Cache搭載)と比べて劇的に増加
- 以前はL3内に留まっていたデータがDRAMアクセスを必要とし、メモリフェッチ遅延がリクエスト処理時間を支配
- CPU利用率を上げると、レイテンシペナルティは利用率に応じて増大し、キャッシュ競合は悪化
- L3ヒットは約50サイクルで完了する一方、L3ミスでDRAMアクセスが入ると350+サイクル。桁違いの差
結果として、コア当たり6倍少ないキャッシュにより、FL1はGen 13で頻繁にメモリアクセスを起こし、レイテンシのペナルティを被っていました。
トレードオフ: レイテンシ vs スループット
FL1をGen 13でそのまま動かすと、パフォーマンスカウンタが示した通りの傾向が確認されました。Turinは理論上高いスループットを出せますが、レイテンシが大きく悪化します。
| 指標 | Gen 12 (FL1) | Gen 13 - Turin 9755 (FL1) | Gen 13 - Turin 9845 (FL1) | Gen 13 - Turin 9965 (FL1) |
|---|
| コア数 | baseline | +33% | +67% | +100% |
| FL スループット | baseline | +10% | +31% | +62% |
| レイテンシ(低〜中負荷) | baseline | +10% | +30% | +30% |
| レイテンシ(高負荷) | baseline | >20% | >50% | >50% (容認不可) |
Turin 9965で60%のスループット向上が得られることはTCO観点で魅力的でしたが、50%以上のレイテンシ上昇は顧客体験に直結して許容できませんでした。ここでインフラ的な選択肢は3つに絞られました:TCO改善のないソリューションを受け入れるか、レイテンシトレードオフを受け入れるか、またはレイテンシを悪化させずに効率を高める方法を見つけるか。
パフォーマンスチューニングによる段階的改善
最適解を探るため、AMDと協力してTurin 9965データの解析とターゲット最適化実験を行いました。試した構成は次のとおりです。
- ハードウェア調整: ハードウェアプリフェッチャやData Fabric (DF) Probe Filtersの調整(効果は限定的)
- ワーカー数のスケーリング: FL1ワーカーを増やすとスループットは改善するが他サービスのリソースを食う
- CPUピンニング&分離: ワークロード分離の最適化(限定的な成功)
最も価値があったのはAMDのPlatform Quality of Service (PQOS)の活用でした。PQOSはキャッシュやメモリ帯域など共有リソースの細かい制御を可能にします。Turinは1つのI/O Dieと最大12のCore Complex Die(CCD)で構成され、CCDごとに最大16コアがL3を共有するため、PQOSを用いてFL1にリソースを割り当てる実験を行いました。
実験結果の要約:
| 構成 | 説明 | パフォーマンス増分 |
|---|
| NUMA対応コアアフィニティ(ソケットレベルでのPQOS相当) | 12CCDのうち6CCDをFLに割当(NUMAドメインに合わせる)。各CCDは32MBのL3をコア間で共有。 | >15% の追加スループット |
| PQOS構成1 | 各CCDの物理コアで1つのvCPU(物理コア当たり2vCPU想定のうち1つ)をFLが使用。FLは各CCDの32MB L3の75%を取得。 | <5% の追加スループット(他サービスに小さな劣化あり) |
| PQOS構成2 | 各CCDの物理コアで1つのvCPUをFLが使用。FLは各CCDの32MB L3の50%を取得。 | <5% の追加スループット |
| PQOS構成3 | 各CCDの物理コアの50%のコア上で2vCPUをFLが使用。FLは各CCDの32MB L3の50%を取得。 | <5% の追加スループット |
結論として、ソケット(CCD)単位でのワークロード隔離は有意な向上をもたらしましたが、これだけではGen 13の潜在力をフルに引き出すには不十分でした。
チャンス:すでに進行中だったFL2プロジェクト
ハードウェア調整やリソース制御で得られる改善は限定的でした。本当にGen 13の性能を引き出すには、システム資源の使い方を根本的に変えるためのソフトウェア書き換えが必要だと判断しました。幸いにも、これは偶然にもすでに進行中でした。
Birthday Week 2025で発表した通り、FL1をゼロから作り直すプロジェクトが進んでおり、それがFL2です。FL2はRustで書かれ、PingoraとOxyフレームワーク上に構築された完全な再実装で、15年にわたるNGINXとLuaJITコードを置き換えます。
FL2の主なドライバーはGen 13対策だけでなく、次の要件でした。
- セキュリティ向上(Rustのメモリ安全性)
- 開発速度向上(厳密なモジュールシステム)
- 全体的な性能改善(CPU使用量とメモリ使用量の低減、モジュラー実行)
FL2はよりクリーンなアーキテクチャ、改善されたメモリアクセスパターン、動的割当の削減により、大容量L3キャッシュへの依存度がFL1より低くなる可能性がありました。これにより、Gen 13のスループット利得をレイテンシ悪化なしに実現できるかを検証する良い機会が生まれました。
実証:Gen 13上でのFL2
FL2の本番展開が進むと、Gen 13サーバーからのメトリクスが想定通りの結果を示しました。
| 指標 | Gen 13 Turin 9965 (FL1) | Gen 13 Turin 9965 (FL2) |
|---|
| FL リクエスト/CPU% | baseline | 50%高い |
| Gen 12比レイテンシ | baseline | 70%低い |
| Gen 12比スループット | 62%高い | 100%高い |
FL2の導入直後でさえ、効率改善は顕著でした。FL2はレイテンシペナルティを70%削減し、Gen 13をより高いCPU利用率まで押し上げつつも厳しいレイテンシSLAを満たすことが可能になりました。FL1ではこれは不可能でした。キャッシュボトルネックを事実上取り除いたことで、スループットはコア数と線形にスケールします。
高密度なAMD Turin 9965では、最終的に2xの性能向上を達成し、ハードウェアの真のポテンシャルを解放しました。今後さらにシステムチューニングを行えば、さらに効率を高められると期待しています。
世代間の改善(まとめ)
| 指標 | Gen 12 | Gen 13 |
|---|
| プロセッサ | AMD EPYC™ 4th Gen Genoa‑X 9684X | AMD EPYC™ 5th Gen Turin 9965 |
| コア数 | 96C/192T | 192C/384T |
| FL スループット | baseline | 最大で+100% |
| 性能当たり電力 | baseline | 最大で+50% |
ビジネスインパクト:
- スループット2x(Gen 12比)で応答性を維持しつつ顧客体験を損なわない
- 性能/ワットが50%改善し、データセンター拡張コストとリクエスト当たりのカーボンフットプリントを削減
- ラック当たりのスループットが60%向上し、定められた電力予算内でグローバルに高密度展開が可能
Gen 13 + FL2:エッジに向けた準備完了
従来のFL1はGen 13でキャッシュ競合に直面し、スループットとレイテンシの間で受け入れられないトレードオフを強いられました。妥協する代わりに私たちはFL2を構築しました。より洗練されたメモリアクセスパターンを持つFL2は大容量L3キャッシュへの依存を取り除き、コア数と線形にスケールします。
Gen 13(AMD Turin)上で稼働するFL2は、SLA内でレイテンシを維持しながらスループットを2倍、電力効率を50%改善しました。この躍進はハードウェア/ソフトウェアの協調設計の重要性を再認識させるものです。キャッシュ制約に縛られないGen 13サーバーは、Cloudflareのグローバルネットワーク上で数百万のリクエストを処理する準備が整いました。
もしグローバルスケールのインフラに興味があるなら、we're hiring(採用情報)をご覧ください。
Cloudflareのコネクティビティクラウドは企業ネットワーク全体を保護し、インターネットスケールのアプリケーション構築を支援し、あらゆるウェブサイトやアプリケーションを高速化し、DDoSから守り、セキュリティを強化し、Zero Trustへの旅路を支援します。任意のデバイスから1.1.1.1にアクセスして無料アプリを試し、より速く安全なインターネットを体験してください。
より多くを知りたい方は start here を参照してください。キャリアに興味がある方は open positions をご確認ください。
タグ: server‑island‑start, Hardware, Performance, Infrastructure, Rust, AMD, Engineering