Facebook hat in nij slab-ûnthâldbehearmeganisme foar de Linux-kernel foarsteld

Roman Gushchin (Roman Gushchin) fan Facebook publisearre op 'e mailinglist fan Linux-kernel-ûntwikkelders in set patches mei de ymplemintaasje fan in nije kontrôle foar ûnthâldallokaasje plaat (slab ûnthâld controller). De nije controller is opmerklik foar it ferpleatsen fan slab-accounting fan it ûnthâldsidenivo nei it kernel-objektnivo, wat it mooglik makket om slab-siden te dielen yn ferskate cgroups, ynstee fan it tawizen fan aparte slab-caches foar elke cgroup.

De foarnommen oanpak makket it mooglik om te fergrutsjen de effisjinsje fan it brûken fan slab, ferminderjen de grutte fan ûnthâld brûkt foar slab troch 30-45%, en gâns ferminderje it totale ûnthâld konsumpsje fan de kearn. Troch it ferminderjen fan it oantal net-ferpleatse platen is d'r ek in posityf effekt yn it ferminderjen fan ûnthâldfragmentaasje. De nije ûnthâld controller gâns simplifies de koade foar boekhâlding foar platen en net nedich it brûken fan yngewikkelde algoritmen foar dynamysk meitsjen en wiskjen fan plak caches foar eltse cgroup. Alle ûnthâld cgroups yn 'e nije ymplemintaasje brûke in mienskiplike set fan plaat-caches, en de libbenstiid fan plaat-caches is net langer bûn oan it libben fan dyjingen ynstalleare fia de cgroup beheinings op ûnthâldgebrûk.

De krekter boarne boekhâlding ymplementearre yn de nije slab controller moat teoretysk laden de CPU mear, mar yn 'e praktyk de ferskillen bliken te wêzen insignificant. Benammen de nije slab-controller is ferskate moannen brûkt op Facebook-produksjeservers dy't ferskate soarten wurkdruk behannelje, en gjin merkbere regressions binne noch identifisearre. Tagelyk is d'r in signifikante fermindering fan ûnthâldferbrûk - op guon hosts wie it mooglik om oant 1GB oan ûnthâld te bewarjen, mar dizze yndikator hinget sterk ôf fan 'e aard fan' e lading, de totale grutte fan RAM, it oantal CPU's en de funksjes fan wurkjen mei ûnthâld. Foarige tests toande reduksje yn ûnthâld konsumpsje mei 650-700 MB (42% fan slab ûnthâld) op it web front-end, 750-800 MB (35%) op de tsjinner mei in DBMS cache en 700 MB (36%) op de DNS tsjinner.

Boarne: opennet.ru

Add a comment