Microsoft yatsegula code ya mimalloc memory allocation system

Microsoft yatsegula laibulale pansi pa layisensi ya MIT mmalo kuchokera pakugwiritsa ntchito makina ogawa kukumbukira omwe adapangidwa kuti azigwiritsidwa ntchito pazigawo za zilankhulo Koka ΠΈ Wotsamira. Mimalloc imasinthidwa kuti igwiritsidwe ntchito muzolemba zokhazikika popanda kusintha ma code awo ndipo imatha kukhala m'malo mowonekera m'malo mwa malloc. Imathandizira ntchito pa Windows, macOS, Linux, BSD ndi machitidwe ena ngati Unix.

Chofunikira chachikulu cha mimalloc ndikukhazikitsa kwake kophatikizika (mizere yochepera 3500 yamakhodi) komanso magwiridwe antchito apamwamba kwambiri. MU mayesero ochitidwa mimalloc idapambana ma library onse omwe amapikisana nawo, kuphatikiza jemalloc, tcmalloc, snmalloc, rpmalloc ΠΈ Zowola.

Kuti muwunikire magwiridwe antchito, seti ya zomwe zilipo mayeso okhazikika M'mayeso ena, mimalloc imakhala yothamanga kwambiri kuposa machitidwe ena; mwachitsanzo, poyesa kusamuka kwa chinthu pakati pa ulusi wosiyanasiyana, mimalloc idakhala yothamanga kwambiri kuposa 2.5 kuposa tcmalloc ndi jemalloc. Nthawi yomweyo, m'mayeso ambiri, kugwiritsa ntchito kukumbukira pang'ono kumawonedwanso; nthawi zina, kugwiritsa ntchito kukumbukira kumatha kuchepetsedwa ndi 25%.

Microsoft yatsegula code ya mimalloc memory allocation system

Kuchita kwakukulu kumatheka makamaka pogwiritsa ntchito mndandanda waulere wa sharding. M'malo mwa mndandanda umodzi waukulu, mimalloc amagwiritsa ntchito mndandanda wa mndandanda waung'ono, womwe uliwonse umakhala pa tsamba lokumbukira. Njirayi imachepetsa kugawanika ndikuwonjezera malo a data mu kukumbukira. Tsamba lokumbukira ndi gulu la midadada yofanana. Pa makina a 64-bit, kukula kwa tsamba kumakhala 64 KB. Ngati palibe midadada yotanganidwa yomwe yatsala patsamba, imamasulidwa kwathunthu ndipo kukumbukira kumabwezeretsedwa ku makina ogwiritsira ntchito, zomwe zimachepetsa ndalama zokumbukira komanso kugawikana m'mapulogalamu anthawi yayitali.

Laibulale ikhoza kuphatikizidwa polumikizana kapena kuyikidwa pa pulogalamu yomwe yasonkhanitsidwa kale ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Laibulale imaperekanso API kuphatikizira magwiridwe antchito mu nthawi yothamanga ndi kuwongolera machitidwe abwino, mwachitsanzo, kulumikiza zotulutsa zaulesi ndi zowerengera zochulukira. Ndizotheka kupanga ndi kugwiritsa ntchito "miyulu" ingapo mu pulogalamu yogawa magawo osiyanasiyana amakumbukiro. Ndikothekanso kumasula mulu wonse, osadutsa ndikumasula padera zinthu zomwe zidayikidwamo.

Ndizotheka kumanga laibulale m'njira yotetezeka, momwe masamba apadera amakumbukiro (masamba a alonda) amalowetsedwa pamalire a block, ndipo kugawa kwachisawawa ndi kubisa kwa mindandanda ya midadada yomasulidwa kumagwiritsidwa ntchito. Zoterezi zimapangitsa kuti zitheke kuletsa njira zodziwika bwino zogwiritsa ntchito milu yochokera ku milu. Mukatsegula Safe Mode, magwiridwe antchito amatsika pafupifupi 3%.

Zina mwa zinthu za mimalloc, zimadziwikanso kuti sizingatengeke ndi vuto la kutupa chifukwa cha kugawanika kwakukulu. Pazovuta kwambiri, kugwiritsa ntchito kukumbukira kumawonjezeka ndi 0.2% kwa metadata ndipo kumatha kufika 16.7% pakugawidwa kukumbukira. Pofuna kupewa mikangano mukapeza zinthu, mimalloc amagwiritsa ntchito ma atomiki okha.

Source: opennet.ru

Kuwonjezera ndemanga