Microsoft ti ṣii koodu fun eto ipin iranti mimalloc

Microsoft ti ṣii ile-ikawe labẹ iwe-aṣẹ MIT mmalloc lati awọn imuse ti eto ipin iranti ni ipilẹṣẹ ti ipilẹṣẹ fun awọn paati asiko asiko ti awọn ede Koka и Titẹ si apakan. Mimalloc ti ni ibamu fun lilo ninu awọn ohun elo boṣewa laisi iyipada koodu wọn ati pe o le ṣe bi aropo sihin fun iṣẹ malloc. Awọn atilẹyin ṣiṣẹ lori Windows, macOS, Linux, BSD ati awọn ọna ṣiṣe Unix miiran.

Ẹya bọtini ti mimalloc ni imuse iwapọ rẹ (kere ju awọn laini koodu 3500) ati iṣẹ ṣiṣe giga pupọ. IN igbeyewo ṣe mimalloc ju gbogbo awọn ile-ikawe ipin iranti iranti idije, pẹlu jemalloc, tcmalloc, snmalloc, rpmalloc и agbo.

Lati ṣe iṣiro iṣẹ ṣiṣe, ṣeto ti tẹlẹ boṣewa igbeyewo Ni diẹ ninu awọn idanwo, mimalloc ni ọpọlọpọ igba yiyara ju awọn ọna ṣiṣe miiran lọ; fun apẹẹrẹ, ninu idanwo ijira nkan laarin awọn oriṣiriṣi awọn okun, mimalloc wa ni iyara ju awọn akoko 2.5 lọ ju tcmalloc ati jemalloc. Ni akoko kanna, ni ọpọlọpọ awọn idanwo, agbara iranti kekere ni a tun ṣe akiyesi; ni awọn ipo miiran, agbara iranti le dinku nipasẹ 25%.

Microsoft ti ṣii koodu fun eto ipin iranti mimalloc

Išẹ giga jẹ aṣeyọri nipataki nipasẹ lilo awọn sharding atokọ ọfẹ. Dipo atokọ nla kan, mimalloc nlo lẹsẹsẹ awọn atokọ ti o kere ju, ọkọọkan eyiti a dè si oju-iwe iranti kan. Ọna yii dinku pipin ati mu agbegbe data pọ si ni iranti. Oju-iwe iranti jẹ akojọpọ awọn bulọọki ti iwọn kanna. Lori awọn eto 64-bit, iwọn oju-iwe jẹ deede 64 KB. Ti ko ba si awọn bulọọki ti a tẹdo ni oju-iwe naa, o ti ni ominira patapata ati iranti ti pada si ẹrọ ṣiṣe, eyiti o dinku awọn idiyele iranti ati ipin ninu awọn eto ṣiṣe pipẹ.

Ile-ikawe le wa ni ipele ọna asopọ tabi kojọpọ fun eto ti o ti ṣajọpọ tẹlẹ (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Awọn ìkàwé tun pese API fun a ṣepọ iṣẹ-ṣiṣe sinu asiko isise ati itanran-grained ihuwasi iṣakoso, fun apẹẹrẹ, fun sisopọ ọlẹ iranti Tu handlers ati monotonically npo itọkasi awọn counter. O ṣee ṣe lati ṣẹda ati lo awọn “òkiti” pupọ ninu ohun elo fun pinpin kaakiri awọn agbegbe iranti oriṣiriṣi. O tun ṣee ṣe lati tu okiti naa silẹ patapata, laisi lilọ nipasẹ ati lọtọ awọn nkan ti a gbe sinu rẹ.

O ṣee ṣe lati kọ ile-ikawe ni ipo ailewu, ninu eyiti awọn oju-iwe ayẹwo iranti pataki (awọn oju-iwe oluso) ti rọpo ni awọn aala bulọọki, ati aileto ti pinpin kaakiri ati fifi ẹnọ kọ nkan ti awọn atokọ ti awọn bulọọki ominira ti lo. Iru awọn igbese bẹ jẹ ki o ṣee ṣe lati dènà awọn ilana ti o wọpọ julọ fun ilolulo awọn iṣan omi ti o da lori okiti. Nigbati o ba mu Ipo Ailewu ṣiṣẹ, iṣẹ ṣiṣe dinku nipasẹ isunmọ 3%.

Lara awọn ẹya ara ẹrọ ti mimalloc, o tun ṣe akiyesi pe ko ni ifaragba si awọn iṣoro pẹlu bloating nitori pipin nla. Ninu iṣẹlẹ ti o buruju, agbara iranti pọ si nipasẹ 0.2% fun metadata ati pe o le de 16.7% fun iranti pinpin. Lati yago fun awọn ija nigba wiwo awọn orisun, mimalloc nlo awọn iṣẹ atomiki nikan.

orisun: opennet.ru

Fi ọrọìwòye kun