Facebookのエンジニアが開示しました レポートを通じて、技術の紹介 TMO (透過メモリオフロード)昨年、 サーバーのRAMを大幅に節約できます NVMeSSDなどの安価なドライブで動作する必要のないセカンダリデータを移動する。
Facebook TMOは、各サーバーでRAMの20%から32%を節約すると見積もっています。 このソリューションは、アプリケーションが分離されたコンテナーで実行されるインフラストラクチャで使用するように設計されています。 TMOのカーネル側コンポーネント それらはすでにLinuxカーネルに含まれています。
Linuxカーネル側では、操作 技術の PSIサブシステムによって提供されます (圧力ストール情報)、バージョン4.20以降で提供されます。
PSI すでにさまざまなメモリ不足のドライバで使用されています さまざまなリソース(CPU、メモリ、I / O)の待機時間に関する情報を分析できます。 PSIを使用すると、ユーザースペースプロセッサはシステムの負荷と速度低下のパターンをより正確に評価できるため、パフォーマンスに顕著な影響を与える前に異常を検出できます。
ユーザースペースでは、SenpaiコンポーネントがTMOを実行します、PSIから受信したデータに基づいて、cgroup2を介してアプリケーションコンテナのメモリ制限を動的に調整します。
先輩は資源不足の兆しを分析 PSIを介して、メモリアクセスを遅くするアプリケーションの感度を評価し、 必要なメモリの最小サイズを決定しようとします ジョブに必要なデータがRAMに残り、ファイルキャッシュにあるか、現在直接使用されていない関連データがスワップパーティションに強制的に出力されるコンテナの場合。
トランスペアレントメモリオフロード(TMO)は、異種データセンター環境向けのMetaのソリューションです。 CPU、メモリ、I/Oのリソース不足によって失われた作業をリアルタイムで測定する新しいLinuxカーネルメカニズムが導入されています。 TMOは、この情報に基づいて、アプリケーションに関する事前の知識がなくても、圧縮メモリやSSDなどの異種デバイスにオフロードするメモリの量を自動的に調整します。 これは、デバイスのパフォーマンス特性と、低速のメモリアクセスに対するアプリケーションの感度に基づいて行われます。
そのため、 TMOの本質は、メモリ消費の観点からプロセスを「厳格な食事」に保つことです。、未使用のメモリページを強制的にスワップパーティションに移動します。このパーティションを削除しても、パフォーマンスに目立った影響はありません(たとえば、初期化中にのみ使用されるコードとディスクにキャッシュされたXNUMX回限りのデータを含むページ)。 メモリ不足に応じてスワップパーティションに情報をフラッシュするのとは異なり、TMOは予測予測に基づいてデータをフラッシュします。
5分以内にメモリページにアクセスできないことは、優先順位の基準の35つとして使用されます。 これらのページはコールドページと呼ばれ、平均して、アプリケーションのメモリの約19%を占めます(アプリケーションの種類によって、65%からXNUMX%の変動があります)。
設定では、メモリの匿名ページ(アプリケーションによって割り当てられたメモリ)およびファイルキャッシュに使用されたメモリ(カーネルによって割り当てられたメモリ)に関連付けられたアクティビティが考慮されます。 一部のアプリケーションでは匿名メモリが主な消費ですが、他のアプリケーションではファイルキャッシュも非常に重要です。
メモリをキャッシュにフラッシュする際の不均衡を回避するために、TMOは、匿名ページとファイルキャッシュに関連付けられたページを比例的にフラッシュする新しいページングアルゴリズムを使用します。
使用頻度の低いページを低速のメモリにプッシュしても、パフォーマンスに大きな影響はありませんが、ハードウェアコストを大幅に削減できます。 データはSSDまたはRAMの圧縮スワップスペースに送信されます。 10バイトのデータを保存するという犠牲を払って、NVMe SSDを使用すると、RAMで圧縮を使用するよりも最大XNUMX倍安価になります。
最後に、それについてもっと知りたい場合は、詳細を調べることができます 次のリンクで.
これは通常のアプリを搭載した通常のコンピューターで使用できますか?