Microsoft tau qhib qhov chaws rau mimalloc nco kev faib tawm

Microsoft tau qhib lub tsev qiv ntawv raws li MIT daim ntawv tso cai mmalloc los ntawm kev siv lub cim xeeb faib qhov system Ameslikas tsim rau runtime Cheebtsam ntawm cov lus Ua npau suav и Lean. Mimalloc tau yoog rau kev siv hauv cov ntawv thov txheej txheem yam tsis hloov lawv cov lej thiab tuaj yeem ua qhov hloov pauv pob tshab rau cov haujlwm malloc. Txhawb kev ua haujlwm ntawm Windows, macOS, Linux, BSD thiab lwm lub tshuab zoo li Unix.

Cov yam ntxwv tseem ceeb ntawm mimalloc yog nws cov kev ua haujlwm compact (tsawg dua 3500 kab ntawm txoj cai) thiab kev ua haujlwm siab heev. IN kuaj tau ua mimalloc ua tau zoo tshaj txhua qhov sib tw nco faib cov tsev qiv ntawv, suav nrog jemalloc, tcmalloc ua, snmalloc ua, rpmalloc ua и Khaws.

Txhawm rau ntsuas kev ua tau zoo, ib txheej uas twb muaj lawm txheem xeem Hauv qee qhov kev sim, mimalloc yog ntau zaus sai dua li lwm cov tshuab; piv txwv li, hauv kev sim ntawm cov khoom tsiv teb tsaws ntawm cov xov sib txawv, mimalloc tau dhau los ua ntau dua 2.5 npaug sai dua tcmalloc thiab jemalloc. Nyob rau tib lub sijhawm, nyob rau hauv ntau qhov kev ntsuam xyuas, kev siv lub cim xeeb qis kuj tau pom; nyob rau qee qhov xwm txheej, kev siv lub cim xeeb tuaj yeem txo los ntawm 25%.

Microsoft tau qhib qhov chaws rau mimalloc nco kev faib tawm

Kev ua haujlwm siab yog ua tiav los ntawm kev siv cov npe dawb sharding. Hloov chaw ntawm ib daim ntawv loj, mimalloc siv cov npe me me, txhua qhov uas yog khi rau nplooj ntawv nco. Txoj hauv kev no txo ​​cov fragmentation thiab nce cov ntaub ntawv hauv zos hauv nco. Nplooj ntawv nco yog ib pawg ntawm cov blocks uas zoo sib xws. Ntawm 64-ntsis tshuab, nplooj ntawv loj yog feem ntau 64 KB. Yog tias tsis muaj cov blocks nyob sab laug hauv nplooj ntawv, nws tau tso tawm tag nrho thiab lub cim xeeb rov qab mus rau lub operating system, uas txo cov nqi nco thiab kev tawg ntawm cov kev pabcuam ntev.

Lub tsev qiv ntawv tuaj yeem suav nrog rau ntawm theem txuas lossis thauj khoom rau qhov kev pab cuam uas twb muaj lawm (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Lub tsev qiv ntawv kuj muaj API rau kev sib koom ua ke ua haujlwm rau hauv lub sijhawm ua haujlwm thiab kev tswj tus cwj pwm zoo, piv txwv li, rau kev sib txuas cov tub nkeeg nco tso tawm handlers thiab monotonically nce siv cov txee. Nws muaj peev xwm tsim thiab siv ob peb "heaps" hauv ib daim ntawv thov rau kev faib tawm thoob plaws ntau qhov chaw nco. Nws kuj tseem tuaj yeem tso lub heap nkaus xwb, tsis tas yuav hla thiab cais tawm cov khoom tso rau hauv nws.

Nws muaj peev xwm tsim lub tsev qiv ntawv hauv hom kev nyab xeeb, hauv qhov tshwj xeeb nco cov nplooj ntawv tshawb xyuas (cov nplooj ntawv saib xyuas) tau hloov pauv ntawm cov ciam teb thaiv, thiab randomization ntawm block faib thiab encryption ntawm cov npe ntawm cov blocks pub dawb yog siv. Cov kev ntsuas no ua rau nws muaj peev xwm los thaiv cov txheej txheem feem ntau rau kev siv heap-based buffer overflows. Thaum koj qhib Safe Mode, kev ua tau zoo txo ​​qis li ntawm 3%.

Ntawm cov yam ntxwv ntawm mimalloc, nws kuj tseem tau sau tseg tias nws tsis muaj kev cuam tshuam rau cov teeb meem nrog tsam plab vim qhov tawg loj. Hauv qhov xwm txheej phem tshaj plaws, kev siv lub cim xeeb nce 0.2% rau metadata thiab tuaj yeem ncav cuag 16.7% rau kev faib khoom. Txhawm rau zam kev tsis sib haum xeeb thaum nkag mus rau cov peev txheej, mimalloc tsuas yog siv cov haujlwm atomic xwb.

Tau qhov twg los: opennet.ru

Ntxiv ib saib