Microsoft huet de Code fir de mimalloc Memory Allocation System opgemaach

Microsoft huet eng Bibliothéik ënner der MIT Lizenz opgemaach mmalloc vun Implementatioune vun engem Memory Allocation System ursprénglech erstallt fir Runtime Komponente vu Sproochen Koka и Lean. Mimalloc ass fir d'Benotzung an Standardapplikatiounen ugepasst ouni hire Code z'änneren a kann als transparenten Ersatz fir d'Malloc Funktioun handelen. Ënnerstëtzt Aarbecht op Windows, macOS, Linux, BSD an aner Unix-ähnlech Systemer.

D'Schlëssel Feature vu mimalloc ass seng kompakt Ëmsetzung (manner wéi 3500 Zeilen Code) a ganz héich Leeschtung. IN Tester gemaach mimalloc huet all Konkurrenzbezuelungsbibliothéiken iwwerpréift, inklusiv jemalloc, tcmalloc, snmalloc, rpmalloc и Schatz.

Ze evaluéieren Leeschtung, eng Rei vun bestehend Standard Tester An e puer Tester ass mimalloc vill Mol méi séier wéi aner Systemer; zum Beispill, am Test vun Objektmigratioun tëscht verschiddene Threads, huet mimalloc sech méi wéi 2.5 Mol méi séier wéi tcmalloc an jemalloc erausgestallt. Zur selwechter Zäit gëtt an de meeschten Tester och manner Gedächtnisverbrauch beobachtet; a verschiddene Situatiounen kann de Gedächtnisverbrauch ëm 25% reduzéiert ginn.

Microsoft huet de Code fir de mimalloc Memory Allocation System opgemaach

Héich Leeschtung gëtt haaptsächlech duerch d'Benotzung vu gratis Lëscht Sharding erreecht. Amplaz vun enger grousser Lëscht benotzt mimalloc eng Serie vu méi klengen Lëschten, déi jidderee mat enger Erënnerungssäit gebonnen ass. Dës Approche reduzéiert Fragmentatioun a vergréissert d'Datenlokalitéit an der Erënnerung. Eng Erënnerungssäit ass e gruppéierte Set vu Blocks vun ähnlecher Gréisst. Op 64-Bit Systemer ass d'Säitgréisst typesch 64 KB. Wann et keng besat Blocken op der Säit sinn, gëtt se komplett befreit an d'Erënnerung gëtt an de Betribssystem zréckgezunn, wat d'Erënnerungskäschte an d'Fragmentatioun a laang lafende Programmer reduzéiert.

D'Bibliothéik kann op der Verknüpfungsstadium abegraff ginn oder fir e scho montéierte Programm gelueden ginn ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). D'Bibliothéik bitt och API fir eng intégréieren Funktionalitéit an runtime an feinkorrekt Verhalen Kontroll, Zum Beispill, fir eng Verbindung Lazy Memory Fräisetzung Handler a monoton Erhéijung Referenz counters. Et ass méiglech e puer "Koupen" an enger Applikatioun ze kreéieren an ze benotzen fir iwwer verschidde Erënnerungsberäicher ze verdeelen. Et ass och méiglech de Koup ganz ze befreien, ouni duerchzegoen a separat d'Objeten ze befreien.

Et ass méiglech d'Bibliothéik an engem séchere Modus ze bauen, an deem spezielle Gedächtnisprüfungssäiten (Guard-Säiten) op de Blockgrenzen ersat ginn, an d'Randomiséierung vun der Blockverdeelung an d'Verschlësselung vu Lëschte vu befreit Blocken benotzt ginn. Esou Moossnamen maachen et méiglech déi meescht üblech Technike fir d'Ausbeutung vun Heap-baséiert Puffer Iwwerfloss ze blockéieren. Wann Dir de Safe Mode aktivéiert, geet d'Performance ëm ongeféier 3% erof.

Ënnert de Fonctiounen vum Mimalloc ass et och bemierkt datt et net ufälleg ass fir Probleemer mat Bloating wéinst grousser Fragmentatioun. Am schlëmmste Fall Szenario erhéicht de Gedächtnisverbrauch ëm 0.2% fir Metadaten a kann 16.7% fir verdeelt Erënnerung erreechen. Fir Konflikter beim Zougang zu Ressourcen ze vermeiden, benotzt mimalloc nëmmen atomar Operatiounen.

Source: opennet.ru

Setzt e Commentaire