Майкрософт mimalloc санах ой хуваарилах системийн кодыг нээсэн

Майкрософт MIT лицензийн дагуу номын сан нээлээ mmalloc Хэлний ажиллах үеийн бүрэлдэхүүн хэсгүүдэд зориулж анх бий болгосон санах ойн хуваарилалтын системийн хэрэгжилтээс Кока и Lean. Mimalloc нь стандарт программуудад кодыг нь өөрчлөхгүйгээр ашиглахад тохирсон бөгөөд malloc функцийг ил тод орлуулах боломжтой. Windows, macOS, Linux, BSD болон Unix-тэй төстэй бусад системүүд дээр ажиллахыг дэмждэг.

Mimalloc-ийн гол онцлог нь түүний авсаархан хэрэгжилт (3500-аас бага мөр код) ба маш өндөр гүйцэтгэл юм. IN хийсэн туршилтууд mimalloc нь бүх өрсөлдөгч санах ойн хуваарилалтын сангууд, түүний дотор илүү сайн ажилласан Жемаллок, tcmalloc, snmalloc, rpmalloc и Хард.

Гүйцэтгэлийг үнэлэхийн тулд одоо байгаа багц стандарт туршилтууд Зарим туршилтуудад mimalloc нь бусад системээс хэд дахин хурдан байдаг; жишээлбэл, өөр өөр урсгалуудын хооронд объект шилжих туршилтын явцад mimalloc нь tcmalloc болон jemalloc-ээс 2.5 дахин хурдан байсан. Үүний зэрэгцээ, ихэнх туршилтуудад санах ойн зарцуулалт бага байдаг бөгөөд зарим тохиолдолд санах ойн хэрэглээ 25% -иар буурч болно.

Майкрософт mimalloc санах ой хуваарилах системийн кодыг нээсэн

Үнэгүй жагсаалтын хуваалтыг ашиглах замаар өндөр гүйцэтгэлд хүрдэг. Нэг том жагсаалтын оронд mimalloc нь санах ойн хуудастай холбогдсон хэд хэдэн жижиг жагсаалтыг ашигладаг. Энэ арга нь хуваагдлыг багасгаж, санах ой дахь өгөгдлийн байршлыг нэмэгдүүлдэг. Санах ойн хуудас нь ижил хэмжээтэй блокуудын бүлэглэсэн багц юм. 64 битийн систем дээр хуудасны хэмжээ ихэвчлэн 64 KB байдаг. Хэрэв хуудсанд эзлэгдсэн блок байхгүй бол түүнийг бүрэн чөлөөлж, санах ойг үйлдлийн систем рүү буцаадаг бөгөөд энэ нь санах ойн зардал, урт хугацааны программуудын хуваагдлыг бууруулдаг.

Номын санг холбох шатанд оруулах эсвэл аль хэдийн угсарсан программд ачаалах боломжтой (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Номын сан нь бас өгдөг API Ажиллах цаг болон нарийн ширхэгтэй зан үйлийн хяналтад функцийг нэгтгэх, жишээлбэл, санах ойг хойшлуулсан боловсруулагчийг холбох, нэг хэвийн өсөлттэй лавлагаа тоолуур. Санах ойн янз бүрийн талбарт түгээх зорилгоор програм дотор хэд хэдэн "овоолгуудыг" үүсгэж ашиглах боломжтой. Мөн овоолгыг бүхэлд нь чөлөөлөх боломжтой бөгөөд дотор нь байрлуулсан объектуудыг тусад нь дамжихгүйгээр чөлөөлөх боломжтой.

Номын санг аюулгүй горимд барьж байгуулах боломжтой бөгөөд үүнд санах ойг шалгах тусгай хуудсууд (хамгаалагч хуудас) блокийн хил дээр орлуулж, блок хуваарилалтын санамсаргүй байдал, чөлөөлөгдсөн блокуудын жагсаалтыг шифрлэх аргыг ашигладаг. Ийм арга хэмжээ нь овоолго дээр суурилсан буферийн халилтыг ашиглах хамгийн түгээмэл аргуудыг хаах боломжийг олгодог. Аюулгүй горимыг идэвхжүүлснээр гүйцэтгэл нь ойролцоогоор 3% буурдаг.

Mimalloc-ийн онцлог шинж чанаруудын дунд энэ нь их хэмжээний хуваагдлаас болж гэдэс дүүрэх асуудалд өртөмтгий биш гэдгийг тэмдэглэжээ. Хамгийн муу хувилбарт санах ойн хэрэглээ мета өгөгдлийн хувьд 0.2% -иар нэмэгдэж, тархсан санах ойн хувьд 16.7% хүрч болно. Нөөцөд хандах үед зөрчилдөөнөөс зайлсхийхийн тулд mimalloc нь зөвхөн атомын үйлдлүүдийг ашигладаг.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх