Microsoft кодро барои системаи тақсимоти хотираи mimalloc кушод

Microsoft дар доираи иҷозатномаи MIT китобхона кушодааст mmalloc аз татбиқи системаи тақсимоти хотира, ки дар ибтидо барои ҷузъҳои вақти корӣ аз забонҳо сохта шудааст Кола и Ҳамон. Mimalloc барои истифода дар барномаҳои стандартӣ бидуни тағир додани коди онҳо мутобиқ карда шудааст ва метавонад ҳамчун ивазкунандаи шаффофи функсияи malloc амал кунад. Корҳоро дар Windows, macOS, Linux, BSD ва дигар системаҳои ба Unix монанд дастгирӣ мекунад.

Хусусияти асосии mimalloc татбиқи паймон (камтар аз 3500 сатри код) ва иҷрои хеле баланд аст. ДАР озмоишҳо гузаронида шуданд mimalloc аз ҳама китобхонаҳои тақсимоти хотираи рақобаткунанда, аз ҷумла jemalloc, tcmalloc, snmalloc, rpmalloc и Ҳоард.

Барои арзёбии иҷроиш, маҷмӯи мавҷуда санҷишҳои стандартӣ Дар баъзе озмоишҳо, mimalloc нисбат ба дигар системаҳо чандин маротиба тезтар аст; масалан, ҳангоми санҷиши муҳоҷирати объектҳо байни риштаҳои гуногун, mimalloc нисбат ба tcmalloc ва jemalloc беш аз 2.5 маротиба тезтар буд. Дар баробари ин, дар аксари санҷишҳо, истеъмоли хотираи кам низ мушоҳида мешавад, дар баъзе ҳолатҳо, истеъмоли хотираро 25% кам кардан мумкин аст.

Microsoft кодро барои системаи тақсимоти хотираи mimalloc кушод

Иҷрои баланд асосан тавассути истифодаи sharding рӯйхати ройгон ба даст оварда мешавад. Ба ҷои як рӯйхати калон, mimalloc як қатор рӯйхатҳои хурдтарро истифода мебарад, ки ҳар яки онҳо ба саҳифаи хотира вобаста аст. Ин равиш тақсимотро коҳиш медиҳад ва ҷойгиршавии маълумотро дар хотира зиёд мекунад. Саҳифаи хотира маҷмӯи гурӯҳбандии блокҳои андозаи якхела мебошад. Дар системаҳои 64-бит, андозаи саҳифа одатан 64 KB аст. Агар дар саҳифа блокҳои ишғолшуда боқӣ намонанд, он пурра озод карда мешавад ва хотира ба системаи оператсионӣ бармегардад, ки ин хароҷоти хотира ва пора-пораҳоро дар барномаҳои дарозмуддат кам мекунад.

Китобхона метавонад дар марҳилаи пайвастшавӣ дохил карда шавад ё барои барномаи аллакай ҷамъшуда бор карда шавад (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Китобхона низ таъмин мекунад API барои ҳамгироӣ кардани функсияҳо ба вақти корӣ ва назорати дақиқи рафтор, масалан, барои пайваст кардани коркардкунандагони барориши хотираи танбал ва ҳисобкунакҳои истинод ба таври якранг афзоишёбанда. Дар замима барои тақсимот дар минтақаҳои гуногуни хотира якчанд "тӯдаҳо" эҷод кардан ва истифода бурдан мумкин аст. Инчунин мумкин аст, ки теппаро пурра, бидуни гузариш ва ҷудо кардани ашёҳои дар он ҷойгиршуда озод кунед.

Китобхонаро дар реҷаи бехатар сохтан мумкин аст, ки дар он саҳифаҳои махсуси санҷиши хотира (муҳофизат-саҳифаҳо) дар сарҳади блокҳо иваз карда мешаванд ва тасодуфии тақсимоти блокҳо ва рамзгузории рӯйхати блокҳои озодшуда истифода мешаванд. Чунин чораҳо имкон медиҳанд, ки усулҳои маъмултарин барои истифодабарии обхезиҳои буферӣ дар асоси теппа баста шаванд. Вақте ки шумо Реҷаи бехатарро фаъол мекунед, иҷроиш тақрибан 3% коҳиш меёбад.

Дар байни хусусиятҳои mimalloc, инчунин қайд карда мешавад, ки он аз сабаби тақсимоти калон ба мушкилот бо варамкунӣ осебпазир нест. Дар сенарияи бадтарин, истеъмоли хотира барои метамаълумот 0.2% зиёд мешавад ва барои хотираи тақсимшуда метавонад ба 16.7% мерасад. Барои пешгирӣ кардани низоъҳо ҳангоми дастрасӣ ба захираҳо, mimalloc танҳо амалиёти атомиро истифода мебарад.

Манбаъ: opennet.ru

Илова Эзоҳ