Новиот метод за управување со меморијата на Facebook

Еден од членовите на тимот за развој на социјалната мрежа Facebook, Роман Гушчин, предложен во мејлинг листата на програмери сет од Закрпи на кернелот на Линукснасочена кон подобрување на управувањето со меморијата преку имплементација на нов контролер за управување со меморија - плоча (контролор за меморија на плоча).

дистрибуција на плочи е механизам за управување со меморијата дизајниран да ја распредели меморијата поефикасно и да елиминира значителна фрагментација. Основата на овој алгоритам е да се складира доделената меморија која содржи објект од одреден тип и повторно да се користи таа меморија следниот пат кога ќе биде доделена за објект од ист тип. Оваа техника првпат беше воведена во SunOS од Џеф Бонвик и сега е широко користена во кернелите на многу оперативни системи Unix, вклучувајќи ги FreeBSD и Linux.

Новиот контролер се заснова на поместување на сметководството на плочата од ниво на мемориска страница до ниво на објект на јадрото, што овозможува споделување на една плоча во различни cгрупи, наместо да се доделува посебна кеш за секоја cgroup.

Врз основа на резултатите од тестот, произлегува дека предложениот метод за управување со меморијата овозможува зголемување ефикасност користејќи плоча да 45%, а исто така ќе ја намали вкупната потрошувачка на меморија на кернелот на ОС. Исто така, со намалување на бројот на страници наменети за плоча, се намалува фрагментацијата на меморијата во целина, што не може, а да не влијае на перформансите на системот.

Новиот контролер е тестиран на производствените сервери на Facebook веќе неколку месеци, а досега ова тестирање може да се нарече успешно: без загуба во перформансите и без зголемување на бројот на грешки, забележано е јасно намалување на потрошувачката на меморија - на некои сервери до 1GB. Овој број е доста субјективен, на пример, претходните тестови покажаа малку пониски резултати:

  • 650-700 MB на веб-фронтендот
  • 750-800 MB на сервер со кеш на базата на податоци
  • 700 MB на DNS сервер

>>> Страница на авторот на GitHub


>>> Рани резултати од тестот

Извор: linux.org.ru

Додадете коментар