Facebook's nije metoade foar ûnthâldbehear

Ien fan 'e leden fan it team foar ûntwikkeling fan sosjale netwurken facebook, Roman Gushchin, foarsteld yn de ûntwikkelders mailinglist in set fan Linux kernel patchesrjochte op it ferbetterjen fan ûnthâldbehear troch de ymplemintaasje fan in nije kontrôler foar ûnthâldbehear - slab (slab memory controller).

slab ferdieling is in ûnthâld behear meganisme ûntwurpen foar in allocate ûnthâld effisjinter en elimineren wichtige fragmintaasje. De basis fan dit algoritme is te bewarjen tawiisd ûnthâld mei dêryn in foarwerp fan in bepaald type en opnij brûke dat ûnthâld de folgjende kear dat it wurdt tawiisd foar in objekt fan itselde type. Dizze technyk waard foar it earst yntrodusearre yn SunOS troch Jeff Bonwick en wurdt no breed brûkt yn 'e kernels fan in protte Unix-bestjoeringssystemen, ynklusyf FreeBSD en Linux.

De nije kontrôler is basearre op it ferpleatsen fan slab-accounting fan it ûnthâldsidenivo nei it kernelobjektnivo, wat it mooglik makket om ien slab-side te dielen yn ferskate cgroups, ynstee fan in aparte cache foar elke cgroup te jaan.

Op grûn fan de testresultaten folget dat de foarstelde metoade foar ûnthâldbehear tanimme kin effektiviteit mei help fan slab oant 45%, en sil ek it totale ûnthâldferbrûk fan 'e OS-kernel ferminderje. Ek troch it ferminderjen fan it oantal siden tawiisd foar slab, wurdt ûnthâldfragmentaasje as gehiel fermindere, wat kin net oars as ynfloed op de prestaasjes fan it systeem.

De nije kontrôler is ferskate moannen hifke op produksje Facebook-tsjinners, en oant no ta kin dizze testen suksesfol neamd wurde: mei gjin ferlies yn prestaasjes en gjin tanimming fan it oantal flaters, is in dúdlike fermindering fan ûnthâldferbrûk opmurken - op guon servers oant 1GB. Dit oantal is frij subjektyf, bygelyks eardere tests lieten wat legere resultaten sjen:

  • 650-700 MB op it web frontend
  • 750-800 MB op tsjinner mei databank cache
  • 700 MB op DNS-tsjinner

>>> Skriuwerside op GitHub


>>> Iere testresultaten

Boarne: linux.org.ru

Add a comment