Facebook は、Linux カーネル用の新しいスラブ メモリ管理メカニズムを提案しました

ローマン・グシチン (ローマン・グシュチン)フェイスブックより опубликовал Linux カーネル開発者のメーリング リストには、新しいメモリ割り当てコントローラを実装したパッチ セットが掲載されています。 スラブ (スラブ メモリ コントローラー)。 新しいコントローラーは、スラブ アカウンティングをメモリ ページ レベルからカーネル オブジェクト レベルに移行したことで注目に値します。これにより、cgroup ごとに個別のスラブ キャッシュを割り当てるのではなく、異なる cgroup でスラブ ページを共有できるようになります。

提案されたアプローチにより、スラブの使用効率が向上し、スラブに使用されるメモリのサイズが 30 ~ 45% 削減され、カーネル全体のメモリ消費量が大幅に削減されます。 移動できないスラブの数を減らすことにより、メモリの断片化を減らすというプラスの効果もあります。 新しいメモリ コントローラーは、スラブを計算するコードを大幅に簡素化し、cgroup ごとにスラブ キャッシュを動的に作成および削除するための複雑なアルゴリズムを使用する必要がありません。 新しい実装のすべてのメモリ cgroup は共通のスラブ キャッシュ セットを使用し、スラブ キャッシュの有効期間は cgroup を通じてインストールされたキャッシュの有効期間に関連付けられなくなりました。 制限 メモリ使用量について。

新しいスラブ コントローラーに実装されたリソース アカウンティングがより正確になると、理論的には CPU の負荷が増えるはずですが、実際にはその違いは重要ではないことが判明しました。 特に、新しいスラブ コントローラーは、さまざまな種類のワークロードを処理する実稼働 Facebook サーバーで数か月間使用されていますが、目立った後退はまだ確認されていません。 同時に、メモリ消費量が大幅に削減されます。一部のホストでは最大 1GB のメモリを節約できましたが、この指標は負荷の性質、RAM の合計サイズ、CPU の数に大きく依存します。そして記憶を扱う機能。 以前のテスト 示している メモリ消費量は、Web フロントエンドで 650 ~ 700 MB (スラブ メモリの 42%)、DBMS キャッシュを備えたサーバーで 750 ~ 800 MB (35%)、DNS サーバーで 700 MB (36%) 削減されます。

出所: オープンネット.ru

コメントを追加します