Ang Facebook ay nagmungkahi ng isang bagong mekanismo ng pamamahala ng slab memory para sa Linux kernel

Roman Gushchin (Roman Gushchin) mula sa Facebook lathala sa mailing list ng mga developer ng Linux kernel ng isang set ng mga patch na may pagpapatupad ng isang bagong memory allocation controller tilad (slab memory controller). Ang bagong controller ay kapansin-pansin sa paglipat ng slab accounting mula sa level ng memory page patungo sa kernel object level, na ginagawang posible na ibahagi ang mga slab page sa iba't ibang cgroup, sa halip na maglaan ng hiwalay na mga slab cache para sa bawat cgroup.

Ginagawang posible ng iminungkahing diskarte na dagdagan ang kahusayan ng paggamit ng slab, bawasan ang laki ng memorya na ginagamit para sa slab ng 30-45%, at makabuluhang bawasan ang pangkalahatang pagkonsumo ng memorya ng kernel. Sa pamamagitan ng pagbabawas ng bilang ng mga di-nagagalaw na slab, mayroon ding positibong epekto sa pagbabawas ng pagkapira-piraso ng memorya. Ang bagong memory controller ay makabuluhang pinapasimple ang code para sa accounting para sa mga slab at hindi nangangailangan ng paggamit ng mga kumplikadong algorithm para sa dynamic na paggawa at pagtanggal ng mga slab cache para sa bawat cgroup. Ang lahat ng memory cgroup sa bagong pagpapatupad ay gumagamit ng isang karaniwang hanay ng mga slab cache, at ang buhay ng mga slab cache ay hindi na nakatali sa buhay ng mga naka-install sa pamamagitan ng cgroup mga paghihigpit sa paggamit ng memorya.

Ang mas tumpak na resource accounting na ipinatupad sa bagong slab controller ay dapat na theoretically load ang CPU, ngunit sa pagsasagawa ang mga pagkakaiba ay naging hindi gaanong mahalaga. Sa partikular, ang bagong slab controller ay ginamit nang ilang buwan sa produksyon ng mga server ng Facebook na humahawak ng iba't ibang uri ng workload, at wala pang natukoy na mga kapansin-pansing regression. Kasabay nito, mayroong isang makabuluhang pagbawas sa pagkonsumo ng memorya - sa ilang mga host posible na makatipid ng hanggang 1GB ng memorya, ngunit ang tagapagpahiwatig na ito ay lubos na nakasalalay sa likas na katangian ng pag-load, ang kabuuang sukat ng RAM, ang bilang ng mga CPU at ang mga tampok ng pagtatrabaho sa memorya. Mga nakaraang pagsubok nagpakita pagbawas sa pagkonsumo ng memory ng 650-700 MB (42% ng slab memory) sa web front-end, 750-800 MB (35%) sa server na may DBMS cache at 700 MB (36%) sa DNS server.

Pinagmulan: opennet.ru

Magdagdag ng komento