Facebook прапанаваў новы механізм кіравання памяццю slab для ядра Linux

Раман Гушчын (Roman Gushchin) з кампаніі Facebook апублікаваў у спісе рассылання распрацоўнікаў ядра Linux набор патчаў з рэалізацыяй новага кантролера размеркавання памяці пліта (slab memory controller). Новы кантролер адметны пераносам уліку slab з узроўня старонак памяці на ўзровень аб'ектаў ядра, што дае магчымасць сумесна выкарыстоўваць slab-старонкі ў розных cgroup, замест вылучэння асобных кэшаў slab для кожнай cgroup.

Прапанаваны падыход дазваляе павысіць эфектыўнасць выкарыстання slab, на 30-45% скараціць памер выкарыстоўванай для slab памяці і значна паменшыць агульнае спажыванне памяці ядром. За кошт скарачэння колькасці неперемещаемых slab таксама назіраецца дадатны эфект у вобласці паніжэння фрагментацыі памяці. Новы кантролер памяці прыкметна спрашчае код для ўліку slab і не патрабуе прымянення ўскладненых алгарытмаў дынамічнага стварэння і выдаленні slab-кэшаў для кожнай cgroup. Усе cgroup для памяці ў новай рэалізацыі выкарыстоўваюць агульны набор кэшаў slab, а час жыцця кэшаў slab больш не прывязана да часу жыцця ўсталяваных праз cgroup абмежаванняў на выкарыстанне памяці.

Рэалізаваны ў новым кантролеры slab больш дакладны ўлік рэсурсаў тэарэтычна павінен больш нагружаць CPU, але на практыцы адрозненні аказаліся неістотнымі. У прыватнасці, новы кантролер slab ужо некалькі месяцаў выкарыстоўваецца на працоўных серверах Facebook, якія апрацоўваюць розныя віды нагрузкі, і прыкметных рэгрэсій пакуль не выяўлена. Пры гэтым назіраецца істотнае зніжэнне выдатку памяці – на некаторых хастах атрымалася зэканоміць да 1ГБ памяці, але дадзены паказчык моцна залежыць ад характару нагрузкі, агульнага памеру АЗП, колькасці CPU і асаблівасцяў працы з памяццю. Раней праведзеныя тэсты паказалі зніжэнне выдатку памяці на 650-700 МБ (42% ад slab-памяці) на web-франтэндзе, 750-800 МБ (35%) на серверы з кэшам СКБД і 700 МБ (36%) на DNS-серверы.

Крыніца: opennet.ru

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