Microsoft wis mbukak kode kanggo sistem alokasi memori mimalloc

Microsoft wis mbukak perpustakaan miturut lisensi MIT mmalloc saka implementasine saka sistem alokasi memori asline digawe kanggo komponen runtime basa Koka ΠΈ Lean. Mimalloc diadaptasi kanggo digunakake ing aplikasi standar tanpa ngganti kode lan bisa tumindak minangka panggantos transparan kanggo fungsi malloc. Ndhukung karya ing Windows, macOS, Linux, BSD lan sistem kaya Unix liyane.

Fitur utama mimalloc yaiku implementasine sing kompak (kurang saka 3500 baris kode) lan kinerja sing dhuwur banget. ING tes ditindakake mimalloc ngluwihi kabeh perpustakaan alokasi memori saingan, kalebu jemalloc, tcmalloc, snmalloc, rpmalloc ΠΈ Ngudung.

Kanggo ngevaluasi kinerja, pesawat saka ana tes standar Ing sawetara tes, mimalloc kaping pirang-pirang luwih cepet tinimbang sistem liyane; contone, ing tes migrasi obyek ing antarane benang sing beda, mimalloc dadi luwih saka 2.5 kaping luwih cepet tinimbang tcmalloc lan jemalloc. Ing wektu sing padha, ing pirang-pirang tes, konsumsi memori sing luwih murah uga diamati; ing sawetara kahanan, konsumsi memori bisa dikurangi nganti 25%.

Microsoft wis mbukak kode kanggo sistem alokasi memori mimalloc

Kinerja dhuwur digayuh utamane kanthi nggunakake sharding dhaptar gratis. Tinimbang siji dhaftar gedhe, mimalloc nggunakake seri saka dhaptar cilik, saben kang kaiket menyang kaca memori. Pendekatan iki nyuda fragmentasi lan nambah lokalitas data ing memori. Kaca memori minangka kumpulan blok sing ukurane padha. Ing sistem 64-bit, ukuran kaca biasane 64 KB. Yen ora ana pamblokiran dikuwasani kiwa ing kaca, iku rampung dibebaske lan memori bali menyang sistem operasi, kang nyuda biaya memori lan fragmentasi ing program long-mlaku.

Pustaka bisa kalebu ing tataran linking utawa dimuat kanggo program wis nglumpuk ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Perpustakaan uga nyedhiyakake API kanggo nggabungake fungsi menyang runtime lan kontrol prilaku nggoleki, Contone, kanggo nyambungake kesed memori release handler lan monotonically nambah counters referensi. Sampeyan bisa nggawe lan nggunakake sawetara "tumpukan" ing aplikasi kanggo distribusi ing wilayah memori beda. Sampeyan uga bisa mbebasake tumpukan kasebut, tanpa ngliwati lan mbebasake obyek sing diselehake kanthi kapisah.

Sampeyan bisa kanggo mbangun perpustakaan ing mode aman, kang memori khusus mriksa kaca (jaga-kaca) diganti ing wates pemblokiran, lan randomization distribusi pemblokiran lan enkripsi dhaptar pamblokiran dibebaske digunakake. Langkah-langkah kasebut ngidini kanggo mblokir teknik sing paling umum kanggo ngeksploitasi kebanjiran buffer adhedhasar tumpukan. Yen sampeyan ngaktifake Mode Aman, kinerja mudhun kira-kira 3%.

Antarane fitur mimalloc, uga dicathet yen ora rentan kanggo masalah kembung amarga fragmentasi gedhe. Ing skenario paling awon, konsumsi memori mundhak 0.2% kanggo metadata lan bisa tekan 16.7% kanggo memori sing disebarake. Kanggo ngindhari konflik nalika ngakses sumber daya, mimalloc mung nggunakake operasi atom.

Source: opennet.ru

Add a comment