Facebook の新しいメモリ管理方法

ソーシャルネットワーク開発チームのメンバーの1人 Facebook, ローマン・グシュチン、開発者メーリング リストで一連の提案が行われました。 Linux カーネル パッチ新しいメモリ管理コントローラの実装を通じてメモリ管理を改善することを目的としています - スラブ (スラブ メモリ コントローラー).

スラブ分布 は、メモリをより効率的に割り当て、重大な断片化を排除するように設計されたメモリ管理メカニズムです。このアルゴリズムの基本は、特定のタイプのオブジェクトを含む割り当てられたメモリを保存し、次回同じタイプのオブジェクトに割り当てられるときにそのメモリを再利用することです。この手法は、Jeff Bonwick によって初めて SunOS に導入され、現在では FreeBSD や Linux を含む多くの Unix オペレーティング システムのカーネルで広く使用されています。

新しいコントローラーは、スラブ アカウンティングをメモリ ページ レベルからカーネル オブジェクト レベルに移行することに基づいており、これにより、cgroup ごとに個別のキャッシュを割り当てるのではなく、異なる cgroup で 1 つのスラブ ページを共有できるようになります。

テスト結果に基づいて、提案されたメモリ管理方法によりメモリのメモリ容量を増やすことができることがわかります。 有効 スラブを使って 45%に、OS カーネル全体のメモリ消費量も削減されます。また、スラブに割り当てられるページ数を減らすことで、全体としてメモリの断片化が減少し、システムのパフォーマンスに影響を与えざるを得ません。

新しいコントローラーは数か月間実稼働 Facebook サーバーでテストされており、これまでのところこのテストは成功したと言えます。パフォーマンスの低下やエラー数の増加はなく、一部のサーバーではメモリ消費量の明らかな減少が認められています。サーバーは最大 1GB。この数値は非常に主観的なものであり、たとえば、以前のテストではわずかに低い結果が示されていました。

  • Web フロントエンドで 650 ~ 700 MB
  • データベース キャッシュを備えたサーバーで 750 ~ 800 MB
  • DNSサーバー上に700MB

>>> GitHub の著者ページ


>>> 初期のテスト結果

出所: linux.org.ru

コメントを追加します