Фацебоок је објавио закрпе које побољшавају контролер меморијске плоче Слаб у Линуку

Романо Гушчин (софтверски инжењер на Фејсбуку) је објавио сет закрпа за апликацију за алокацију меморије slab драјвера (меморијски контролер) на мејлинг листи за развој Linux језгра.

Нови драјвер је значајан по томе што је померио обрачун слабих страница са нивоа меморијских страница на ниво објеката језгра, омогућавајући дељење слабих страница између различитих c-група, уместо додељивања одвојених кеш меморија слабих страница за сваку c-групу.

Роман је пронашао оно што он назива „врло озбиљном маном“ у постојећем контролеру меморије плоче, што доводи до слабе употребе ових дана код група.

„Прави разлог због којег постојећи дизајн доводи до слабе употребе плоча је једноставан: странице плоча користи искључиво меморијски базен.

Ако цгроуп изврши само неколико алокација одређене величине или ако остане неколико активних објеката након уклањања цгроуп, или цгроуп садржи једну навојну апликацију која једва додељује било који објекат језгра, али сваки пут када је нови ЦПУ: у свим овим случајевима, искоришћеност плоче је врло мала.

Ако је онемогућено рачуноводство кмем, језгро може користити слободан простор на страницама плоча за друга издвајања. «

Контролер меморије за Slab који је прошле године предложио Романо Гушчин био је прилично обећавајући јер омогућава повећану ефикасност коришћења slab-а, смањује величину меморије која се користи за slab за 30-45% и значајно смањује укупну потрошњу меморије језгра.

Штавише, имплементиране закрпе су показале да Фејсбук већ користи код у продукцији на својим серверима и да је штедео ~650-700MB+ за фронт-енд веб сервере , кеширање базе података и DNS сервере, између осталих предности.

Смањење броја непокретних плоча такође позитивно утиче на фрагментацију меморије. Нови контролер меморије значајно поједностављује код за обрачун плоча и елиминише потребу за сложеним алгоритмима за динамичко креирање и брисање кеш меморија плоча за сваку c-групу.

Све цгроупс за меморију у новој имплементацији користе заједнички скуп предмеморија плоча, а животни век предмеморија плоча више није везан за животни век меморијских ограничења постављених кроз цгроуп.

Прецизније рачуноводство ресурса примењено у новом контролеру плоче требало би теоретски више оптеретити ЦПУ, али у пракси се показало да су разлике занемариве.

Конкретно, нови контролер слабе се користи већ неколико месеци на уживо Фејсбук серверима који обрађују различите врсте оптерећења, и до сада нису откривене значајне регресије.

Закрпа садржи неколико полунезависних делова, који такође могу да се нађу изван меморијског контролера плоче:

  • АПИ за учитавање подстраница, који се у будућности може користити за бројање других објеката који нису величине странице, на пример додељивања перцпу-а
  • АПИ мем_цгроуп_птр, где се броје показивачи на мемцг, може се поново користити за ефикасно поновно постављање нових објеката, нпр. Кеша страница.

Истовремено, долази до значајног смањења потрошње меморије : на неким хостовима је било могуће уштедети до 1 ГБ меморије, али овај индикатор у великој мери зависи од природе оптерећења, укупне величине РАМ-а, количине процесора и карактеристика рада са меморијом.

Уместо стварања одвојеног скупа кмем_цацхес за сваку меморијску цгроуп, користе се два глобална скупа: роот сет за нерачунате и роот група цгроуп доделе и други сет за све остале задатке. Ово омогућава поједностављење управљања животним веком појединачних кмем_цацхес.

Коначно, ако сте заинтересовани да сазнате више о новом сету од 19 закрпа, можете га пронаћи на мејлинг листи кернела.


Додај као жељени извор на Гуглу