Giablihan sa Microsoft ang code alang sa mimalloc memory allocation system

Gibuksan sa Microsoft ang usa ka librarya ubos sa lisensya sa MIT mmalloc gikan sa mga pagpatuman sa usa ka sistema sa alokasyon sa panumduman nga orihinal nga gibuhat alang sa runtime nga mga sangkap sa mga pinulongan Koka ΠΈ Lean. Ang Mimalloc gipahaom alang sa paggamit sa standard nga mga aplikasyon nga walay pagbag-o sa ilang code ug mahimong molihok isip usa ka transparent nga kapuli sa malloc function. Nagsuporta sa pagtrabaho sa Windows, macOS, Linux, BSD ug uban pang mga sistema nga sama sa Unix.

Ang importante nga bahin sa mimalloc mao ang compact nga pagpatuman niini (ubos sa 3500 ka linya sa code) ug taas kaayo nga performance. SA mga pagsulay nga gihimo Ang mimalloc milabaw sa tanan nga nakigkompetensya nga mga librarya sa alokasyon sa panumduman, lakip ang jemalloc, tcmalloc, snmalloc, rpmalloc ΠΈ Nagtipig.

Aron sa pagtimbang-timbang sa performance, usa ka set sa kasamtangan standard nga mga pagsulay Sa pipila ka mga pagsulay, ang mimalloc daghang beses nga mas paspas kaysa sa ubang mga sistema; pananglitan, sa pagsulay sa paglalin sa butang taliwala sa lainlaing mga hilo, ang mimalloc nahimo nga labaw pa sa 2.5 ka beses nga mas paspas kaysa sa tcmalloc ug jemalloc. Sa parehas nga oras, sa kadaghanan nga mga pagsulay, ang pagkunhod sa konsumo sa panumduman naobserbahan usab; sa pipila ka mga sitwasyon, ang pagkonsumo sa panumduman mahimong makunhuran sa 25%.

Giablihan sa Microsoft ang code alang sa mimalloc memory allocation system

Ang taas nga pasundayag nakab-ot labi na pinaagi sa paggamit sa libre nga sharding sa lista. Inay sa usa ka dako nga listahan, mimalloc migamit sa usa ka serye sa mas gagmay nga mga listahan, nga ang matag usa gigapos ngadto sa usa ka panumduman nga panid. Kini nga pamaagi makapakunhod sa pagkabahinbahin ug nagdugang sa lokalidad sa datos sa memorya. Ang panid sa panumduman usa ka grupo nga hugpong sa mga bloke nga parehas ang gidak-on. Sa 64-bit nga mga sistema, ang gidak-on sa panid kasagaran 64 KB. Kung wala’y na-okupar nga mga bloke nga nahabilin sa panid, kini hingpit nga gipagawas ug ang panumduman ibalik sa operating system, nga makapamenos sa mga gasto sa panumduman ug pagkabahinbahin sa dugay na nga mga programa.

Ang librarya mahimong iapil sa yugto sa pag-link o i-load para sa natigom na nga programa (β€œLD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Naghatag usab ang librarya API para sa pag-integrate sa functionality ngadto sa runtime ug fine-grained behavior control, pananglitan, para sa pagkonektar sa lazy memory release handler ug monotonically increase reference counters. Posible ang paghimo ug paggamit sa daghang "mga tapok" sa usa ka aplikasyon alang sa pag-apod-apod sa lainlaing mga lugar sa memorya. Posible usab nga buhian ang pundok sa hingpit, nga dili moagi ug gilain nga buhian ang mga butang nga gibutang niini.

Posible nga tukuron ang librarya sa usa ka luwas nga paagi, diin ang mga espesyal nga panid sa pagsusi sa panumduman (mga panid sa pagbantay) gipuli sa mga utlanan sa block, ug gigamit ang randomization sa pag-apod-apod sa block ug pag-encrypt sa mga lista sa gipagawas nga mga bloke. Ang maong mga lakang nagpaposible sa pagbabag sa kasagarang mga teknik para sa pagpahimulos sa mga buffer overflow nga gibase sa tambak. Kung imong gi-enable ang Safe Mode, ang performance mokunhod sa gibana-bana nga 3%.

Lakip sa mga bahin sa mimalloc, nahibal-an usab nga dili kini dali nga maapektuhan sa mga problema sa bloating tungod sa dako nga fragmentation. Sa pinakagrabe nga sitwasyon, ang konsumo sa panumduman mosaka sa 0.2% alang sa metadata ug mahimong moabot sa 16.7% alang sa gipang-apod-apod nga memorya. Aron malikayan ang mga panagbangi kung mag-access sa mga kapanguhaan, ang mimalloc naggamit lamang sa mga operasyon sa atomic.

Source: opennet.ru

Idugang sa usa ka comment