Microsoft fetħet il-kodiċi għas-sistema ta 'allokazzjoni tal-memorja mimalloc

Microsoft fetħet librerija taħt il-liċenzja MIT mmalloc minn implimentazzjonijiet ta' sistema ta' allokazzjoni ta' memorja maħluqa oriġinarjament għal komponenti runtime tal-lingwi Koka и Lean. Mimalloc huwa adattat għall-użu f'applikazzjonijiet standard mingħajr ma jbiddel il-kodiċi tagħhom u jista 'jaġixxi bħala sostitut trasparenti għall-funzjoni malloc. Jappoġġja xogħol fuq Windows, macOS, Linux, BSD u sistemi oħra bħal Unix.

Il-karatteristika ewlenija ta 'mimalloc hija l-implimentazzjoni kompatta tagħha (inqas minn 3500 linja ta' kodiċi) u prestazzjoni għolja ħafna. IN testijiet imwettqa mimalloc qabeż il-libreriji kollha tal-allokazzjoni tal-memorja li jikkompetu, inkluż jemalloc, tcmalloc, snmalloc, rpmalloc и Morda.

Biex tevalwa l-prestazzjoni, sett ta 'eżistenti testijiet standard F'xi testijiet, mimalloc huwa ħafna drabi aktar mgħaġġel minn sistemi oħra; pereżempju, fit-test tal-migrazzjoni tal-oġġett bejn ħjut differenti, mimalloc irriżulta li kien aktar minn 2.5 darbiet aktar mgħaġġel minn tcmalloc u jemalloc. Fl-istess ħin, fil-biċċa l-kbira tat-testijiet, jiġi osservat ukoll konsum aktar baxx ta 'memorja; f'xi sitwazzjonijiet, il-konsum tal-memorja jista' jitnaqqas b'25%.

Microsoft fetħet il-kodiċi għas-sistema ta 'allokazzjoni tal-memorja mimalloc

Prestazzjoni għolja tinkiseb prinċipalment permezz tal-użu ta 'sharding tal-lista b'xejn. Minflok lista waħda kbira, mimalloc juża serje ta 'listi iżgħar, li kull waħda minnhom hija marbuta ma' paġna tal-memorja. Dan l-approċċ inaqqas il-frammentazzjoni u jżid il-lokalità tad-dejta fil-memorja. Paġna tal-memorja hija sett raggruppat ta' blokki ta' daqs simili. Fuq sistemi 64-bit, id-daqs tal-paġna huwa tipikament 64 KB. Jekk ma jkunx hemm blokki okkupati fil-paġna, hija kompletament meħlusa u l-memorja tiġi rritornata lis-sistema operattiva, li tnaqqas l-ispejjeż tal-memorja u l-frammentazzjoni fi programmi fit-tul.

Il-librerija tista' tiġi inkluża fl-istadju tal-konnessjoni jew titgħabba għal programm diġà mmuntat (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Il-librerija tipprovdi wkoll API għall-integrazzjoni tal-funzjonalità fir-runtime u l-kontroll tal-imġieba fin, pereżempju, għall-konnessjoni ta 'handlers għar-rilaxx tal-memorja għażżien u counters ta' referenza li jiżdiedu b'mod monotoniku. Huwa possibbli li jinħolqu u jintużaw diversi "munzelli" f'applikazzjoni għad-distribuzzjoni f'żoni differenti tal-memorja. Huwa wkoll possibbli li l-borġ ikun ħeles għal kollox, mingħajr ma jgħaddi u ħeles separatament l-oġġetti mqiegħda fih.

Huwa possibbli li tinbena l-librerija f'mod sikur, li fiha paġni speċjali ta 'kontroll tal-memorja (guard-pages) huma sostitwiti fil-konfini tal-blokki, u jintużaw randomizzazzjoni tad-distribuzzjoni tal-blokki u l-encryption ta' listi ta 'blokki meħlusa. Miżuri bħal dawn jagħmluha possibbli li jiġu mblukkati l-aktar tekniki komuni għall-isfruttament tal-buffer overflows ibbażati fuq il-borġ. Meta tattiva l-Modalità Sikura, il-prestazzjoni tonqos b'madwar 3%.

Fost il-karatteristiċi ta 'mimalloc, huwa nnutat ukoll li mhuwiex suxxettibbli għal problemi bi nefħa minħabba frammentazzjoni kbira. Fl-agħar xenarju, il-konsum tal-memorja jiżdied b'0.2% għall-metadata u jista' jilħaq 16.7% għall-memorja distribwita. Biex tevita kunflitti meta taċċessa r-riżorsi, mimalloc juża biss operazzjonijiet atomiċi.

Sors: opennet.ru

Żid kumment