UFacebook ucebise indlela entsha yokulawula imemori ye-slab yeLinux kernel

Roman Gushchin (Roman Gushchin) ukusuka kuFacebook epapashwe kuluhlu lokuposa lwe Linux kernel ababhekisi phambili iseti yeziziba ngokuphunyezwa komlawuli omtsha wolwabiwo lwenkumbulo. isileyi (umlawuli wememori ye-slab). Umlawuli omtsha uphawuleka ngokuhambisa ubalo lwe-slab ukusuka kwinqanaba lephepha lememori ukuya kwinqanaba lento ye-kernel, eyenza ukuba kube lula ukwabelana ngamaphepha e-slab kumaqela ahlukeneyo, endaweni yokwaba i-cache ye-slab eyahlukileyo kwiqela ngalinye.

Indlela ecetywayo yenza kube lula ukwandisa ukusebenza kakuhle kokusebenzisa i-slab, ukunciphisa ubungakanani bememori esetyenziselwa i-slab nge-30-45%, kunye nokunciphisa kakhulu ukusetyenziswa kwememori ye-kernel. Ngokunciphisa inani lee-slabs ezingashukumiyo, kukho nefuthe elihle ekunciphiseni ukuhlukana kwememori. Umlawuli omtsha wememori wenza lula ikhowudi ye-accounting ye-slabs kwaye ayifuni ukusetyenziswa kwe-algorithms entsonkothileyo yokudala kunye nokucima i-slab caches kwiqela ngalinye. Onke amaqela eenkumbulo ekuphunyezweni okutsha asebenzisa iseti eqhelekileyo yeencatshi ze slab, kwaye ixesha lokuphila leecatshi ze slab azisabotshelelwa kubomi babo bonke bafakelwe ngeqela. izithintelo kusetyenziso lwenkumbulo.

Ubalo oluchaneke ngakumbi lwezibonelelo oluphunyeziweyo kwisilawuli se-slab esitsha kufuneka ngokwethiyori ilayishe i-CPU ngakumbi, kodwa ekusebenzeni umahluko uye wabonakala ungabalulekanga. Ngokukodwa, umlawuli omtsha we-slab usetyenziswe kwiinyanga ezininzi kwimveliso yeeseva ze-Facebook eziphethe iintlobo ezahlukeneyo zomthwalo wokusebenza, kwaye akukho kwehla okubonakalayo okuchongiwe. Kwangaxeshanye, kukho ukuncipha okukhulu kokusetyenziswa kwememori - kwezinye iihostele bekunokwenzeka ukugcina ukuya kuthi ga kwi-1GB yememori, kodwa esi salathisi sixhomekeke kakhulu kubume bomthwalo, ubukhulu be-RAM bubonke, inani le-CPU. kunye neempawu zokusebenza ngememori. Iimvavanyo zangaphambili bonisile ukunciphisa ukusetyenziswa kwememori ngo-650-700 MB (42% yememori ye-slab) kwi-web front-end, 750-800 MB (35%) kumncedisi kunye ne-DBMS cache kunye ne-700 MB (36%) kwi-server ye-DNS.

umthombo: opennet.ru

Yongeza izimvo