Новы метад кіравання памяццю ад 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

Дадаць каментар