Mae Microsoft wedi agor y cod ar gyfer y system dyrannu cof mimalloc

Mae Microsoft wedi agor llyfrgell o dan y drwydded MIT mmalloc o weithrediadau system dyrannu cof a grëwyd yn wreiddiol ar gyfer cydrannau amser rhedeg ieithoedd Koka и Heb lawer o fraster. Mae Mimalloc wedi'i addasu i'w ddefnyddio mewn cymwysiadau safonol heb newid eu cod a gall weithredu fel amnewidiad tryloyw ar gyfer y swyddogaeth malloc. Yn cefnogi gwaith ar Windows, macOS, Linux, BSD a systemau eraill tebyg i Unix.

Nodwedd allweddol mimalloc yw ei weithrediad cryno (llai na 3500 o linellau cod) a pherfformiad uchel iawn. YN profion a gyflawnir mimalloc wedi perfformio'n well na'r holl lyfrgelloedd dyrannu cof cystadleuol, gan gynnwys jemalloc, tcmalloc, snmalloc, rpmalloc и Celc.

I werthuso perfformiad, set o rai sy'n bodoli eisoes profion safonol Mewn rhai profion, mae mimalloc lawer gwaith yn gyflymach na systemau eraill; er enghraifft, yn y prawf mudo gwrthrych rhwng gwahanol edafedd, trodd mimalloc allan i fod yn fwy na 2.5 gwaith yn gyflymach na tcmalloc a jemalloc. Ar yr un pryd, yn y rhan fwyaf o brofion, gwelir defnydd cof is hefyd; mewn rhai sefyllfaoedd, gellir lleihau'r defnydd o gof 25%.

Mae Microsoft wedi agor y cod ar gyfer y system dyrannu cof mimalloc

Cyflawnir perfformiad uchel yn bennaf trwy ddefnyddio darnio rhestr am ddim. Yn lle un rhestr fawr, mae mimalloc yn defnyddio cyfres o restrau llai, pob un ohonynt wedi'u rhwymo i dudalen cof. Mae'r dull hwn yn lleihau darnio ac yn cynyddu lleoliad data yn y cof. Mae tudalen cof yn set wedi'i grwpio o flociau o faint tebyg. Ar systemau 64-bit, maint y dudalen fel arfer yw 64 KB. Os nad oes unrhyw flociau wedi'u meddiannu ar ôl yn y dudalen, caiff ei ryddhau'n llwyr a dychwelir y cof i'r system weithredu, sy'n lleihau costau cof a darnio mewn rhaglenni hirdymor.

Gellir cynnwys y llyfrgell yn y cam cysylltu neu ei llwytho ar gyfer rhaglen sydd eisoes wedi'i chydosod (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Mae'r llyfrgell hefyd yn darparu API ar gyfer integreiddio ymarferoldeb i amser rhedeg a rheoli ymddygiad graenus, er enghraifft, ar gyfer cysylltu trinwyr rhyddhau cof diog a chownteri cyfeirio cynyddol yn undonog. Mae'n bosibl creu a defnyddio sawl “pentwr” mewn cymhwysiad i'w ddosbarthu ar draws gwahanol feysydd cof. Mae hefyd yn bosibl rhyddhau'r domen yn gyfan gwbl, heb fynd trwyddo ac ar wahân ryddhau'r gwrthrychau a osodir ynddi.

Mae'n bosibl adeiladu'r llyfrgell mewn modd diogel, lle mae tudalennau gwirio cof arbennig (tudalennau gwarchod) yn cael eu disodli ar ffiniau'r blociau, a defnyddir hap-ddosbarthiad bloc ac amgryptio rhestrau o flociau wedi'u rhyddhau. Mae mesurau o'r fath yn ei gwneud hi'n bosibl rhwystro'r technegau mwyaf cyffredin ar gyfer manteisio ar orlifau byffer sy'n seiliedig ar domen. Pan fyddwch yn galluogi Modd Diogel, mae perfformiad yn gostwng tua 3%.

Ymhlith nodweddion mimalloc, nodir hefyd nad yw'n agored i broblemau gyda chwyddo oherwydd darniad mawr. Yn y senario waethaf, mae defnydd cof yn cynyddu 0.2% ar gyfer metadata a gall gyrraedd 16.7% ar gyfer cof dosbarthedig. Er mwyn osgoi gwrthdaro wrth gyrchu adnoddau, dim ond gweithrediadau atomig y mae mimalloc yn eu defnyddio.

Ffynhonnell: opennet.ru

Ychwanegu sylw