Новият метод на Facebook за управление на паметта

Един от членовете на екипа за развитие на социалната мрежа Facebook, Роман Гушчин, предложен в пощенския списък за разработчици набор от Пачове на ядрото на Linuxнасочени към подобряване на управлението на паметта чрез внедряване на нов контролер за управление на паметта - плоча (контролер на памет плоча).

разпределение на плочата е механизъм за управление на паметта, предназначен да разпределя паметта по-ефективно и да елиминира значителна фрагментация. Основата на този алгоритъм е да се запази разпределената памет, съдържаща обект от определен тип, и да се използва повторно тази памет следващия път, когато бъде разпределена за обект от същия тип. Тази техника е въведена за първи път в SunOS от Джеф Бонуик и сега се използва широко в ядрата на много Unix операционни системи, включително FreeBSD и Linux.

Новият контролер се основава на преместване на отчитане на slab от нивото на страницата на паметта към нивото на обекта на ядрото, което прави възможно споделянето на една страница slab в различни cgroups, вместо да се разпределя отделен кеш за всяка cgroup.

Въз основа на резултатите от теста следва, че предложеният метод за управление на паметта позволява увеличаване ефикасност с помощта на плоча да 45%, и също така ще намали общото потребление на памет от ядрото на ОС. Също така, чрез намаляване на броя на страниците, разпределени за плоча, фрагментацията на паметта като цяло се намалява, което не може да не повлияе на производителността на системата.

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

  • 650-700 MB в уеб интерфейса
  • 750-800 MB на сървър с кеш база данни
  • 700 MB на DNS сървър

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


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

Източник: linux.org.ru

Добавяне на нов коментар