Bag-ong Pamaagi sa Pagdumala sa Memorya sa Facebook

Usa sa mga miyembro sa social network development team Facebook, Roman Gushchin, gisugyot sa developer mailing list usa ka set sa Linux kernel patchgitumong sa pagpalambo sa memory management pinaagi sa pagpatuman sa usa ka bag-o nga memory management controller - slab (slab memory controller).

pag-apod-apod sa slab maoy usa ka mekanismo sa pagdumala sa panumduman nga gidisenyo aron mas episyente ang paggahin ug memorya ug pagwagtang sa mahinungdanong pagkabahinbahin. Ang sukaranan niini nga algorithm mao ang pagtipig sa gigahin nga memorya nga adunay usa ka butang sa usa ka piho nga tipo ug gamiton pag-usab ang memorya sa sunod higayon nga kini gigahin alang sa usa ka butang nga parehas nga tipo. Kini nga teknik unang gipaila sa SunOS ni Jeff Bonwick ug karon kaylap nga gigamit sa mga kernel sa daghang Unix operating system, lakip ang FreeBSD ug Linux.

Ang bag-ong controller gibase sa pagbalhin sa slab accounting gikan sa level sa memory page ngadto sa kernel object level, nga nagpaposible sa pagpaambit sa usa ka slab page sa lain-laing mga cgroup, imbes nga maggahin ug bulag nga cache para sa matag cgroup.

Pinasukad sa mga resulta sa pagsulay, kini nagsunod nga ang gisugyot nga pamaagi sa pagdumala sa memorya nagtugot sa pagdugang pagkaayo gamit ang slab hangtod sa 45%, ug makapakunhod usab sa kinatibuk-ang konsumo sa memorya sa OS kernel. Usab, pinaagi sa pagkunhod sa gidaghanon sa mga panid nga gigahin alang sa slab, ang memory fragmentation sa kinatibuk-an gipakunhod, nga dili makaapekto sa performance sa sistema.

Ang bag-ong controller gisulayan sa produksyon sa mga server sa Facebook sulod sa pipila ka mga bulan, ug sa pagkakaron kini nga pagsulay matawag nga malampuson: nga walay pagkawala sa performance ug walay pagtaas sa gidaghanon sa mga sayop, usa ka tin-aw nga pagkunhod sa konsumo sa memorya namatikdan - sa pipila mga server hangtod sa 1GB. Kini nga numero medyo suhetibo, pananglitan, ang naunang mga pagsulay nagpakita nga gamay nga ubos nga mga resulta:

  • 650-700 MB sa web frontend
  • 750-800 MB sa server nga adunay database cache
  • 700 MB sa DNS server

>>> Ang panid sa tagsulat sa GitHub


>>> Mga resulta sa sayo nga pagsulay

Source: linux.org.ru

Idugang sa usa ka comment