Microsoft-ek mimalloc memoria esleitzeko sistemaren kodea ireki du

Microsoft-ek liburutegi bat ireki du MIT lizentziapean mmalloc jatorriz hizkuntzen exekuzio-denborako osagaietarako sortutako memoria esleitzeko sistema baten inplementazioetatik abiatuta Koka ΠΈ Makurtzeko. Mimalloc aplikazio estandarretan erabiltzeko egokituta dago kodea aldatu gabe eta malloc funtzioaren ordezko garden gisa jardun dezake. Windows, macOS, Linux, BSD eta Unix antzeko beste sistemetan lan egiten du.

Mimalloc-en funtsezko ezaugarria bere inplementazio trinkoa (3500 kode lerro baino gutxiago) eta errendimendu oso altua da. IN egindako probak mimalloc-ek lehiakideen memoria esleitzeko liburutegi guztiak gainditu zituen, barne jemalloc, tcmalloc, snmalloc, rpmalloc ΠΈ hoard.

Errendimendua ebaluatzeko, dauden multzo bat proba estandarrak Proba batzuetan, mimalloc beste sistema batzuek baino askoz ere azkarragoa da; adibidez, hari ezberdinen arteko objektuen migrazioaren proban, mimalloc tcmalloc eta jemalloc baino 2.5 aldiz azkarragoa da. Aldi berean, proba gehienetan, memoria-kontsumo txikiagoa ere ikusten da; egoera batzuetan, memoria-kontsumoa %25 murriztu daiteke.

Microsoft-ek mimalloc memoria esleitzeko sistemaren kodea ireki du

Errendimendu handia doako zerrenda zatikatzearen bidez lortzen da batez ere. Zerrenda handi baten ordez, mimalloc-ek zerrenda txikiago batzuk erabiltzen ditu, eta horietako bakoitza memoria orri batera lotuta dago. Planteamendu honek zatiketa murrizten du eta memorian datuen lokalizazioa areagotzen du. Memoria orria antzeko tamainako bloke multzo multzo bat da. 64 biteko sistemetan, orriaren tamaina 64 KB izan ohi da. Orrialdean okupatutako blokerik geratzen ez bada, guztiz askatu eta memoria sistema eragilera itzultzen da, eta horrek memoria kostuak eta zatiketa murrizten ditu iraupen luzeko programetan.

Liburutegia lotura-fasean sar daiteke edo dagoeneko muntatutako programa baterako kargatu daiteke ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Liburutegiak ere eskaintzen du API funtzionalitateak exekuzio-denboran eta portaeraren kontrol zehatzean integratzeko, adibidez, memoria alferrak askatzeko kudeatzaileak konektatzeko eta erreferentzia-kontagailuak monotonikoki handitzeko. Aplikazio batean hainbat "pila" sortu eta erabiltzea posible da memoria-eremu ezberdinetan banatzeko. Posible da ere pila osoa askatzea, bertan jarritako objektuak zeharkatu gabe eta bereizita askatu gabe.

Liburutegia modu seguruan eraikitzea posible da, zeinetan memoria egiaztatzeko orrialde bereziak (guard-orrialdeak) blokeen mugetan ordezkatzen diren, eta blokeen banaketa aleatoria eta askatutako blokeen zerrenden enkriptatzea erabiltzen da. Neurri horiek heap-en oinarritutako buffer gainezkatzea ustiatzeko teknika ohikoenak blokeatzea ahalbidetzen dute. Modu segurua gaitzen duzunean, errendimendua gutxi gorabehera % 3 jaisten da.

Mimalloc-en ezaugarrien artean, zatiketa handiaren ondorioz puzketekin arazoak ez dituela ere nabarmentzen da. Egoerarik txarrenean, memoria-kontsumoa %0.2 handitzen da metadatuetarako eta %16.7ra irits daiteke memoria banaturako. Baliabideetara iristeko gatazkak saihesteko, mimalloc-ek eragiketa atomikoak soilik erabiltzen ditu.

Iturria: opennet.ru

Gehitu iruzkin berria