Новий метод керування пам'яттю від Facebook

Один із членів команди розробки соціальної мережі Facebook, Роман Гущин, запропонував у розсилці розробників набір з патчів для ядра Linux, спрямованих на поліпшення роботи з пам'яттю через реалізацію нового контролера управління slab (slab memory сontroller).

Розподіл slab - це механізм управління пам'яттю, призначений для більш ефективного розподілу пам'яті та усунення значної фрагментації. Основою цього алгоритму є збереження виділеної пам'яті, що містить об'єкт певного типу, та повторне використання цієї пам'яті при наступному виділенні для об'єкта того самого типу. Цей метод був вперше введений у SunOS Джефом Бонвіком і зараз широко використовується в ядрах багатьох операційних систем Unix, включаючи FreeBSD та Linux.

В основі нового контролера лежить перенесення обліку slab з рівня сторінок пам'яті на рівень об'єктів ядра, що надає можливість спільного використання однієї slab-сторінки в різних cgroup замість виділення окремого кешу для кожної cgroup.

За результатами випробувань слід, що запропонований метод керування пам'яттю дозволяє підвищити ефективність використання slab до 45%, і навіть знизить загальне споживання пам'яті ядром ОС. Також за рахунок скорочення кількості виділених під slab сторінок зменшується фрагментація пам'яті в цілому, що не може не зашкодити швидкодії системи.

Новий контролер вже кілька місяців тестується на робочих серверах Facebook, і поки це тестування можна назвати успішним: за відсутності втрат у швидкодії та збільшення кількості помилок помічено явне зменшення пам'яті — на деяких серверах до 1Гб. Це число досить суб'єктивне, так, наприклад, раніше проведені тести показали трохи менші результати:

  • 650-700 МБ на веб-фронтенді
  • 750-800 МБ на сервері з кешем баз даних
  • 700 МБ на DNS-сервері

>>> Сторінка автора на GitHub


>>> Результати ранніх тестів

Джерело: linux.org.ru

Додати коментар або відгук