ハードウェア

Metaの巨大なデータセンターでメモリを大幅に節約するための「透過メモリオフロード」とは?


世界最大規模のSNSであるFacebookやInstagramを運営するMetaは、世界中に巨大なデータセンターをいくつも所有しています。しかし、データセンターが巨大だと維持コストもかさむため、ハードウェア・ソフトウェアの両面でいかにコストを削減させるかが追求されています。そんなMetaのエンジニア部門が、データセンターでメモリを大幅に節約するためのソリューション「透過メモリオフロード(TMO)」を開発したと公式ブログで発表しています。

Transparent memory offloading: more memory at a fraction of the cost and power - Engineering at Meta
https://engineering.fb.com/2022/06/20/data-infrastructure/transparent-memory-offloading-more-memory-at-a-fraction-of-the-cost-and-power/

以下はMetaのデータセンターの維持コストのうち、DRAM(青線)・Compressed DRAM(水色)・SSD(灰色)が占める割合を、折れ線グラフで表わしたもの。世代を経るごとにDRAMが占めるコスト率は3世代で2倍にまで増加しているのに対して、SSDはほぼ横ばいで変化していません。Metaによれば、DRAMの消費電力はサーバーインフラで使用する電力の38%を占めているそうです。Compressed DRAMとSSDはDRAMよりも低コストで動作しますが、パフォーマンスは劣るとのこと。


以下はメモリ・ストレージの階層を描いた図で、階層が高いほど高コストですがパフォーマンスも上がり、階層が低いほどパフォーマンスは下がるもののコストが下がり積載可能なキャパシティも増大します。近年、NVMe接続SSDのような安価な非DRAMメモリ技術がデータセンターに数多く導入されており、さらにCPUとメモリ間のインターコネクト規格「Compute Express Link(CXL)」も登場し、従来は不可能だった「メモリ階層化」の新たな可能性が生まれてきたとMetaは述べています。


メモリ階層化では、アクセス頻度の低いデータはより低速なメモリに移行されて処理されます。マイグレーションのプロセスは、アプリケーション自身、ユーザー空間、カーネル、ハイパーバイザーのいずれでも実行可能ですが、Metaは「アプリケーションの修正を必要とせず、多くのアプリケーションに透過的に適用できるから」という理由で、カーネル駆動型マイグレーション、つまりメモリスワップに焦点を当てたとのこと。

しかし、Metaが抱えるような大規模なデータセンターではアプリケーションの動作にレイテンシが発生してしまうため、カーネル駆動型マイグレーションを行うのは困難。そこで、MetaはTMOというソリューションを開発しました。


Metaによれば、TMOのポイントは以下の3点。

◆1:プレッシャーストール情報(PSI)
PSIはCPUやメモリ、I/O全体のリソース不足によって発生したロスをリアルタイムで測定できるLinuxカーネルコンポーネントで、これによってメモリアクセスの速度低下に対するアプリケーションの反応を測定します。これまではページフォールト発生率などからメモリの状態を判断してきたそうですが、メモリ不足が動作に与える影響をより正確に捉えるため、MetaはPSIを使ってメモリ不足が原因で発生するタスクの状態を追跡し、メモリ負荷を定義したとのこと。


◆2:自動メモリサイジングツール「Senpai」
Senpaiは、コンテナアプリケーションのパフォーマンスへの影響を最小減に抑えながらメモリ負荷を効果的に軽減するツールで、LinuxのPSIによる分析とcgroup2によるメモリ制限を利用して、コンテナ化されたアプリケーションに十分なメモリを適用し、ワークロードに必要のない未使用のメモリ領域をページアウトします。つまり、Senpaiはシステムの無駄を排除し、不測の事態に備えてタスクの配置を最適化する役割を担っているというわけです。

Senpaiはオープンソースで開発されており、ソースコードがGitHubで公開されています。

GitHub - facebookincubator/senpai: Senpai is an automated memory sizing tool for container applications.
https://github.com/facebookincubator/senpai

◆3:スワップアルゴリズム
Linuxはストレージの主流がHDDなどのディスクメディアだった時代に開発されたため、あくまでも深刻なメモリ不足が発生したときの緊急時のみにメモリスワップを行うようになっています。しかし、現代はHDDよりも容量や読み書き速度に優れたフラッシュドライブも登場しているため、緊急時に限定する必要はありません。そこで、Metaはシステム内のファイルシステムキャッシュのページフォールト率を追跡し、そのページフォールト率に応じてメモリスワップを実行するように設定したとのこと。

この3点を抑えたTMOは1年以上本番環境で稼働しており、メモリ使用量を大幅に節約することができたとMetaは報告しています。以下はアプリケーションにおけるメモリの節約率を示した棒グラフで、例えば広告予測に使用される機械学習モデル(Ads A・Ads B・Ads C)ではCompressed DRAMとSSDの両方で12%~20%のメモリ節約を実現したそうです。


また、TMOの対象はメインのワークロード以外に、「メモリ税」と呼ばれる、データセンターやアプリケーションによって各ホストに課されるメモリオーバーヘッドがあります。以下の棒グラフを見るとわかる通り、TMOを適用することで、トータルで13%のメモリ税を節約できたとのこと。


Metaは、コールドメモリだけではなくウォームメモリもオフロードできるような技術としてCXLに注目しており、将来的にメモリオフロードのバックエンドとしてCXLデバイスを利用するために開発を進めていると述べました。

この記事のタイトルとURLをコピーする

・関連記事
Facebookのデータセンター内に「雨が降った」という驚きの報告、その理由とは? - GIGAZINE

コンピューターの冷却コストを算出するためには現代物理学の進歩が不可欠だった - GIGAZINE

Facebookのデータセンター内に「雨が降った」という驚きの報告、その理由とは? - GIGAZINE

なぜFacebookが6時間もダウンしたのかをFacebook幹部が専門家でなくても分かるように説明 - GIGAZINE

データセンターへのロボット技術導入は複雑でそう急激には進まないとの見方 - GIGAZINE

in ソフトウェア,   ネットサービス,   ハードウェア, Posted by log1i_yk

You can read the machine translated English article here.