Microsoft သည် mimalloc မှတ်ဉာဏ်ခွဲဝေမှုစနစ်အတွက် ကုဒ်ကိုဖွင့်ထားသည်။

Microsoft သည် MIT လိုင်စင်အောက်တွင် စာကြည့်တိုက်တစ်ခုကို ဖွင့်လှစ်ထားသည်။ mmalloc ဘာသာစကားများ၏ runtime အစိတ်အပိုင်းများအတွက် မူလဖန်တီးထားသည့် မမ်မိုရီခွဲဝေမှုစနစ်၏ အကောင်အထည်ဖော်မှုများမှ Koka и ကုန်း. Mimalloc သည် ၎င်းတို့၏ကုဒ်ကို မပြောင်းလဲဘဲ ပုံမှန်အပလီကေးရှင်းများတွင် အသုံးပြုရန်အတွက် လိုက်လျောညီထွေဖြစ်အောင် ပြုလုပ်ထားပြီး malloc လုပ်ဆောင်ချက်အတွက် ပွင့်လင်းမြင်သာသော အစားထိုးမှုတစ်ခုအဖြစ် လုပ်ဆောင်နိုင်သည်။ Windows၊ macOS၊ Linux၊ BSD နှင့် အခြား Unix ကဲ့သို့သော စနစ်များတွင် အလုပ်လုပ်ရန် ပံ့ပိုးပေးသည်။

mimalloc ၏အဓိကအင်္ဂါရပ်မှာ ၎င်း၏ကျစ်လျစ်သောအကောင်အထည်ဖော်မှု (ကုဒ်လိုင်း 3500 ထက်နည်းသည်) နှင့် အလွန်မြင့်မားသောစွမ်းဆောင်ရည်ဖြစ်သည်။ IN စမ်းသပ်မှုများ ပြုလုပ်ခဲ့သည်။ mimalloc အပါအဝင် ယှဉ်ပြိုင်နေသော မမ်မိုရီခွဲဝေချထားပေးသည့် ဒစ်ဂျစ်တိုက်များအားလုံးကို စွမ်းဆောင်ရည်ထက် သာလွန်စေပါသည်။ jemalloc, tcmalloc, snmalloc, rpmalloc и သိုလှောင်ပါ.

စွမ်းဆောင်ရည်အကဲဖြတ်ရန်၊ ရှိပြီးသားအစုတစ်ခု စံစစ်ဆေးမှုများ အချို့သောစမ်းသပ်မှုများတွင်၊ mimalloc သည် အခြားစနစ်များထက် အဆများစွာပိုမြန်သည်၊ ဥပမာအားဖြင့်၊ မတူညီသော thread များကြားတွင် အရာဝတ္ထုရွှေ့ပြောင်းခြင်းစမ်းသပ်မှုတွင် mimalloc သည် tcmalloc နှင့် jemalloc ထက် 2.5 ဆပိုမိုမြန်ဆန်ပါသည်။ တစ်ချိန်တည်းမှာပင်၊ စမ်းသပ်မှုအများစုတွင် မှတ်ဉာဏ်သုံးစွဲမှု နည်းပါးသည်ကို တွေ့ရှိရပြီး အချို့အခြေအနေများတွင် မှတ်ဉာဏ်သုံးစွဲမှု 25% လျှော့ချနိုင်သည်။

Microsoft သည် mimalloc မှတ်ဉာဏ်ခွဲဝေမှုစနစ်အတွက် ကုဒ်ကိုဖွင့်ထားသည်။

အခမဲ့ list sharding ကိုအသုံးပြုခြင်းအားဖြင့် စွမ်းဆောင်ရည်မြင့်မားမှုကို အဓိကအားဖြင့် အောင်မြင်သည်။ ကြီးမားသောစာရင်းတစ်ခုအစား၊ mimalloc သည် သေးငယ်သောစာရင်းများကို အသုံးပြုသည်၊ ၎င်းတို့တစ်ခုစီသည် မှတ်ဉာဏ်စာမျက်နှာတစ်ခုနှင့် ချိတ်ဆက်ထားသည်။ ဤနည်းလမ်းသည် အကွဲကွဲအပြားပြားဖြစ်ခြင်းကို လျော့နည်းစေပြီး မှတ်ဉာဏ်အတွင်းရှိ ဒေတာနေရာဒေသကို တိုးစေသည်။ မမ်မိုရီ စာမျက်နှာသည် အရွယ်အစား ဆင်တူသော ဘလောက်များ အုပ်စုဖွဲ့ထားသော အဖွဲ့တစ်ခု ဖြစ်သည်။ 64-bit စနစ်များတွင်၊ စာမျက်နှာအရွယ်အစားသည် ပုံမှန်အားဖြင့် 64 KB ဖြစ်သည်။ စာမျက်နှာတွင် သိမ်းပိုက်ထားသော ဘလောက်များ မကျန်ပါက၊ ၎င်းကို လုံး၀ လွတ်မြောက်ပြီး ကြာရှည်လုပ်ဆောင်နေသော ပရိုဂရမ်များတွင် မှတ်ဉာဏ်ကုန်ကျစရိတ်နှင့် အကွဲကွဲအပြားပြားဖြစ်ခြင်းကို လျှော့ချပေးသည့် မမ်မိုရီကို လည်ပတ်မှုစနစ်သို့ ပြန်လည်ရောက်ရှိစေသည်။

စာကြည့်တိုက်ကို လင့်ခ်အဆင့်တွင် ထည့်သွင်းနိုင်သည် သို့မဟုတ် စုစည်းပြီးသား ပရိုဂရမ်တစ်ခုအတွက် တင်နိုင်သည် (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”)။ စာကြည့်တိုက်လည်း ပေးထားတယ်။ API ကို လုပ်ဆောင်နိုင်စွမ်းကို runtime နှင့် fine-grained အပြုအမူထိန်းချုပ်မှုတွင် ပေါင်းစည်းရန်အတွက် ဥပမာအားဖြင့်၊ lazy memory release handlers နှင့် monotonically တိုးမြှင့်ထားသော reference counter များအတွက်။ မတူညီသောမှတ်ဉာဏ်ဧရိယာများတစ်လျှောက် ဖြန့်ဖြူးရန်အတွက် အပလီကေးရှင်းတစ်ခုတွင် "heap" အများအပြားကို ဖန်တီးပြီး အသုံးပြုနိုင်သည်။ အမှိုက်ပုံထဲသို့ ဖြတ်သွားကာ ၎င်းတွင်ရှိသော အရာဝတ္တုများကို သီးခြားမလွှတ်ဘဲ လုံးလုံးလျားလျား လွတ်မြောက်ရန်လည်း ဖြစ်နိုင်သည်။

အထူးမှတ်ဉာဏ်စစ်ဆေးသည့်စာမျက်နှာများ (အစောင့်စာမျက်နှာများ) ကို ပိတ်ဆို့ထားသောနယ်နိမိတ်များတွင် အစားထိုးကာ ပိတ်ဆို့ဖြန့်ဝေခြင်းနှင့် လွတ်ကင်းသော ဘလောက်စာရင်းများ၏ ကုဒ်ဝှက်ခြင်းတို့ကို ကျပန်းပြုလုပ်ခြင်းတို့ကို အသုံးပြု၍ လုံခြုံသောမုဒ်တွင် စာကြည့်တိုက်ကို တည်ဆောက်ရန် ဖြစ်နိုင်သည်။ ထိုသို့သော အစီအမံများသည် အမှိုက်ပုံ-အခြေခံကြားခံများ ပြည့်လျှံမှုများကို အသုံးချခြင်းအတွက် အသုံးအများဆုံးနည်းပညာများကို ပိတ်ဆို့နိုင်စေသည်။ Safe Mode ကိုဖွင့်သောအခါ၊ စွမ်းဆောင်ရည်သည် ခန့်မှန်းခြေအားဖြင့် 3% လျော့နည်းသွားပါသည်။

mimalloc ၏အင်္ဂါရပ်များထဲတွင်၊ ကြီးမားသောအကွဲအပြဲကြောင့် ရောင်ရမ်းခြင်းပြဿနာများကို ခံနိုင်ရည်မရှိကြောင်း မှတ်သားထားသည်။ အဆိုးဆုံးအခြေအနေတွင်၊ မက်တာဒေတာအတွက် မမ်မိုရီသုံးစွဲမှုသည် 0.2% တိုးလာပြီး ဖြန့်ဝေမမ်မိုရီအတွက် 16.7% အထိ ရောက်ရှိနိုင်သည်။ အရင်းအမြစ်များကို အသုံးပြုသည့်အခါ ပဋိပက္ခများကို ရှောင်ရှားရန် mimalloc သည် အနုမြူလုပ်ဆောင်မှုများကိုသာ အသုံးပြုသည်။

source: opennet.ru

မှတ်ချက် Add