NetBSD ပရောဂျက်သည် NVMM hypervisor အသစ်ကို ဖော်ဆောင်နေသည်။

NetBSD ပရောဂျက်ပြုစုသူများ ကြေငြာခဲ့သည် စမ်းသပ်ဆဲ NetBSD-လက်ရှိဌာနခွဲတွင် ပါပြီးသားဖြစ်သည့် hypervisor အသစ်တစ်ခုဖန်တီးခြင်းနှင့် ဆက်စပ် virtualization stack နှင့်ပတ်သက်ပြီး NetBSD 9 ၏တည်ငြိမ်သောထွက်ရှိမှုတွင် ကမ်းလှမ်းမည်ဖြစ်သည်။ NVMM သည် x86_64 ဗိသုကာကိုပံ့ပိုးရန်အတွက် လောလောဆယ်ကန့်သတ်ထားပြီး နောက်ခံနှစ်ခုအတွက်ထောက်ပံ့ပေးသည်။ ဟာ့ဒ်ဝဲ virtualization ယန္တရားများကိုဖွင့်ခြင်း- Intel CPU များအတွက် AMD နှင့် x86-VMX CPU virtualization extensions များအတွက် ပံ့ပိုးမှုဖြင့် x86-SVM။ ၎င်း၏လက်ရှိပုံစံတွင်၊ host တစ်ခုတွင် virtual machine 128 ခုအထိ run နိုင်ပြီး တစ်ခုစီတွင် 256 virtual processor cores (VCPU) နှင့် 128 GB RAM အထိ ခွဲဝေပေးနိုင်ပါသည်။

NVMM တွင် စနစ် kernel အဆင့်တွင် အလုပ်လုပ်ပြီး ဟာ့ဒ်ဝဲ virtualization ယန္တရားများသို့ ဝင်ရောက်ခွင့်ကို ညှိနှိုင်းပေးသည့် ဒရိုက်ဘာတစ်ခုနှင့် အသုံးပြုသူနေရာများတွင် လုပ်ဆောင်သည့် Libnvmm စတက်ခ်တစ်ခု ပါဝင်သည်။ kernel အစိတ်အပိုင်းများနှင့် အသုံးပြုသူနေရာတို့အကြား အပြန်အလှန်အကျိုးသက်ရောက်မှုကို IOCTL မှတဆင့် လုပ်ဆောင်သည်။ KVM ကဲ့သို့သော hypervisor များနှင့် ခွဲခြားသိမြင်နိုင်သော NVMM ၏အင်္ဂါရပ်တစ်ခုဖြစ်သည်။ HAXM Bhyve၊ ဆိုလိုသည်မှာ kernel အဆင့်တွင် hardware virtualization ယန္တရားများ ပတ်လည်ရှိ အနိမ့်ဆုံးလိုအပ်သော binding set များကိုသာ လုပ်ဆောင်ပြီး hardware emulation code အားလုံးကို kernel မှ user space သို့ ရွှေ့ပါသည်။ ဤချဉ်းကပ်မှုသည် သင့်အား မြင့်မားသောအခွင့်ထူးများဖြင့် လုပ်ဆောင်သည့်ကုဒ်ပမာဏကို လျှော့ချရန်နှင့် hypervisor အတွင်းရှိ အားနည်းချက်များကို တိုက်ခိုက်ခံရသည့်အခါ စနစ်တစ်ခုလုံးကို ထိခိုက်နိုင်ခြေကို လျှော့ချနိုင်စေသည်။ ထို့အပြင်၊ ပရောဂျက်၏ အမှားရှာပြင်ခြင်းနှင့် မဖျော့တော့ခြင်း စမ်းသပ်ခြင်းများသည် သိသိသာသာ ရိုးရှင်းပါသည်။

သို့သော်၊ Libnvmm ကိုယ်တိုင်တွင် emulator လုပ်ဆောင်ချက်များ မပါဝင်သော်လည်း၊ ဥပမာ၊ QEMU တွင် NVMM ပံ့ပိုးမှုကို ပေါင်းစည်းနိုင်စေမည့် API တစ်ခုသာ ပံ့ပိုးပေးပါသည်။ API သည် virtual machine တစ်ခုကို ဖန်တီးခြင်းနှင့် စတင်ခြင်း၊ ဧည့်သည်စနစ်သို့ မှတ်ဉာဏ်များ ခွဲဝေပေးခြင်းနှင့် VCPU များကို ခွဲဝေပေးခြင်းစသည့် လုပ်ဆောင်ချက်များကို အကျုံးဝင်ပါသည်။ လုံခြုံရေးကို မြှင့်တင်ရန်နှင့် ဖြစ်နိုင်သော တိုက်ခိုက်မှု vector များကို လျှော့ချရန်၊ libnvmm သည် အတိအလင်း တောင်းဆိုထားသည့် လုပ်ဆောင်ချက်များကိုသာ ပေးဆောင်သည်—မူရင်းအားဖြင့်၊ ရှုပ်ထွေးသော ကိုင်တွယ်သူများကို အလိုအလျောက် ခေါ်မည်မဟုတ်ဘဲ ၎င်းတို့ကို ရှောင်ရှားနိုင်လျှင် လုံးဝ အသုံးမပြုနိုင်ပါ။ NVMM သည် ရိုးရှင်းလွန်းသဖြင့် ရှုပ်ထွေးမှုမရှိဘဲ ရိုးရှင်းနေစေရန်နှင့် သင့်လုပ်ငန်း၏ ကဏ္ဍများစွာကို တတ်နိုင်သမျှ ထိန်းချုပ်နိုင်စေရန် ကြိုးစားသည်။

NetBSD ပရောဂျက်သည် NVMM hypervisor အသစ်ကို ဖော်ဆောင်နေသည်။

NVMM ၏ kernel-level အပိုင်းသည် NetBSD kernel နှင့် အတော်လေး တင်းကျပ်စွာ ပေါင်းစပ်ထားပြီး ဧည့်သည် OS နှင့် host ပတ်၀န်းကျင်ကြားရှိ ဆက်စပ်ခလုတ်များ အရေအတွက်ကို လျှော့ချခြင်းဖြင့် ပိုမိုကောင်းမွန်သော စွမ်းဆောင်ရည်ကို ရရှိစေပါသည်။ အသုံးပြုသူနေရာလွတ်ဘက်တွင်၊ libnvmm သည် သာမန် I/O လုပ်ဆောင်ချက်များကို စုစည်းရန်နှင့် မလိုအပ်ဘဲ စနစ်ခေါ်ဆိုမှုများကို ရှောင်ရှားရန် ကြိုးစားသည်။ မမ်မိုရီခွဲဝေမှုစနစ်သည် စနစ်အတွင်းရှိ မမ်မိုရီပြတ်လပ်မှုဖြစ်လျှင် ဧည့်သည်မှတ်ဉာဏ်စာမျက်နှာများကို လဲလှယ်မှုအပိုင်းသို့ နှင်ထုတ်နိုင်စေမည့် pmap စနစ်ခွဲကို အခြေခံထားသည်။ NVMM သည် ကမ္ဘာလုံးဆိုင်ရာသော့ခလောက်များနှင့် စကေးများ ကောင်းမွန်စွာ ကင်းစင်ပြီး မတူညီသော ဧည့်သည် virtual machines များကို run ရန် မတူညီသော CPU cores များကို တစ်ပြိုင်နက် အသုံးပြုနိုင်သည်။

ဟာ့ဒ်ဝဲ virtualization ယန္တရားများကိုဖွင့်ရန် NVMM ကိုအသုံးပြုသည့် QEMU အခြေပြုဖြေရှင်းချက်တစ်ခုကို ပြင်ဆင်ထားပါသည်။ QEMU ၏ ပင်မဖွဲ့စည်းပုံတွင် ပြင်ဆင်ထားသော ဖာထေးမှုများကို ထည့်သွင်းရန် လုပ်ဆောင်နေပါသည်။ QEMU+NVMM ပေါင်းစပ်ပြီးဖြစ်သည်။ ဒါဟာခွင့်ပြု FreeBSD၊ OpenBSD၊ Linux၊ Windows XP/7/8.1/10 နှင့် AMD နှင့် Intel ပရိုဆက်ဆာများဖြင့် x86_64 စနစ်များပေါ်ရှိ အခြားသော OS များနှင့် ဧည့်သည်စနစ်များကို အောင်မြင်စွာလည်ပတ်နိုင်သည် (ဥပမာ၊ သင့်လျော်သော နောက်ခံကို ဖန်တီးပါက NVMM ကိုယ်တိုင်က သီးခြားဗိသုကာတစ်ခုနှင့် ချိတ်ဆက်ထားခြင်း မရှိပါ။ ၎င်းသည် ARM64 စနစ်များပေါ်တွင်အလုပ်လုပ်နိုင်လိမ့်မည်) ။ NVMM ၏နောက်ထပ်အသုံးချမှုနယ်ပယ်များထဲတွင် တစ်ဦးချင်းအပလီကေးရှင်းများ၏ sandbox ကို သီးခြားခွဲထားခြင်းကိုလည်း မှတ်သားထားသည်။

NetBSD ပရောဂျက်သည် NVMM hypervisor အသစ်ကို ဖော်ဆောင်နေသည်။

source: opennet.ru

မှတ်ချက် Add