Microsoft yakavhura kodhi yeiyo mimalloc memory allocation system

Microsoft yakavhura raibhurari pasi peMIT rezinesi mmalloc kubva mukushandiswa kwememory allocation system yakagadziridzwa yenguva yekumhanya zvikamu zvemitauro Koka ΠΈ Lean. Mimalloc inogadziridzwa kuti ishandiswe mumashandisirwo akajairwa pasina kushandura kodhi yavo uye inogona kuita sekutsiva kwakajeka kweiyo malloc basa. Inotsigira kushanda paWindows, macOS, Linux, BSD uye mamwe ma Unix-senge masisitimu.

Chinhu chakakosha che mimalloc ndechekuita kwayo compact (isingasviki 3500 mitsara yekodhi) uye yakanyanya kuita. IN miedzo yakaitwa mimalloc yakapfuura ese anokwikwidza ndangariro yekugovera maraibhurari, kusanganisira jemalloc, tcmalloc, snmalloc, rpmalloc ΠΈ Hoard.

Kuti uongorore kushanda, seti yezviripo miyedzo yakajairika Mune mimwe bvunzo, mimalloc inomhanya kakawanda kupfuura mamwe masisitimu; semuenzaniso, muyedzo yekufamba kwechinhu pakati peshinda dzakasiyana, mimalloc yakave inodarika 2.5 times nekukurumidza kupfuura tcmalloc uye jemalloc. Panguva imwecheteyo, mukuedzwa kwakawanda, kuderedzwa kwendangariro kunoshandiswa zvakare kunoonekwa; mune mamwe mamiriro, ndangariro kushandiswa kunogona kuderedzwa ne25%.

Microsoft yakavhura kodhi yeiyo mimalloc memory allocation system

Kuita kwepamusoro kunowanikwa kunyanya kuburikidza nekushandiswa kwemahara list sharding. Panzvimbo pechinyorwa chimwe chikuru, mimalloc inoshandisa nhevedzano yezvinyorwa zvidiki, imwe neimwe inosungirirwa kune peji rendangariro. Iyi nzira inoderedza kupatsanuka uye inowedzera data nzvimbo mundangariro. Peji yekurangarira iboka remabhuroko ane saizi yakafanana. Pane 64-bit masisitimu, saizi yepeji inowanzoita 64 KB. Kana pasina zvivharo zvakagarwa zvakasara papeji, inosunungurwa zvachose uye chiyeuchidzo chinodzorerwa kuhurongwa hwekushanda, izvo zvinoderedza mari yekuyeuka uye kupatsanurwa muzvirongwa zvenguva refu.

Raibhurari inogona kuverengerwa padanho rekubatanidza kana kurodha kuchirongwa chakatounganidzwa ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Raibhurari inopawo API yekubatanidza mashandiro munguva yekumhanya uye yakanaka-grained maitiro ekudzora, semuenzaniso, yekubatanidza simbe yekuburitsa ndangariro zvibatiso uye monotonically kuwedzera referenzi counters. Zvinogoneka kugadzira uye kushandisa akati wandei "mirwi" mune application yekugovera munzvimbo dzakasiyana dzekurangarira. Zvinogoneka zvakare kusunungura murwi zvachose, pasina kupinda nekuparadzanisa kusunungura zvinhu zvakaiswa mairi.

Zvinogoneka kuvaka raibhurari mune yakachengeteka modhi, umo akakosha ekutarisa mapeji (mapeji evarindi) anotsiviwa pamiganhu yebhuroka, uye randomisation yekugovera block uye encryption yezvinyorwa zveakasunungurwa zvidhinha zvinoshandiswa. Matanho akadaro anoita kuti zvibvire kuvharisa nzira dzinowanzo shandiswa kushandisa murwi-based buffer mafashama. Paunogonesa Safe Mode, kuita kunodzikira neinenge 3%.

Pakati pezvimiro zve mimalloc, zvakare inocherechedzwa kuti haina kubatwa nezvinetso nekuputika nekuda kwekuparadzana kukuru. Mumamiriro ezvinhu akaipisisa, kushandiswa kwendangariro kunowedzera ne 0.2% yemetadata uye inogona kusvika 16.7% yekugovera ndangariro. Kuti udzivise kukakavara kana uchiwana zviwanikwa, mimalloc inoshandisa chete maatomu mashandiro.

Source: opennet.ru

Voeg