Intel hypervisor ဗားရှင်းအသစ် . hypervisor ကို အစိတ်အပိုင်းများပေါ်တွင် တည်ဆောက်ထားသည်။
ပူးတွဲစီမံကိန်း Intel၊ Alibaba၊ Amazon၊ Google နှင့် Red Hat တို့လည်း ပါဝင်ပါသည်။ Rust-VMM ကို Rust ဘာသာစကားဖြင့် ရေးသားထားပြီး အလုပ်-သတ်သတ်မှတ်မှတ် hypervisors များကို ဖန်တီးနိုင်စေပါသည်။ Cloud Hypervisor သည် KVM ၏ထိပ်တွင် လုပ်ဆောင်နေသော အဆင့်မြင့် virtual machine monitor (VMM) ကို ပံ့ပိုးပေးကာ cloud-native လုပ်ဆောင်စရာများအတွက် အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ပေးသည့် အဆိုပါ hypervisor တစ်ခုဖြစ်သည်။ ပရောဂျက်ကုဒ် Apache 2.0 အောက်တွင် လိုင်စင်ရထားသည်။
Cloud Hypervisor သည် virtio-based paravirtualized ကိရိယာများကို အသုံးပြု၍ ခေတ်မီ Linux ဖြန့်ဝေမှုများကို လုပ်ဆောင်ရန် အာရုံစိုက်ထားသည်။ ဖော်ပြခဲ့သည့် အဓိကရည်ရွယ်ချက်များထဲတွင်- တုံ့ပြန်နိုင်စွမ်းမြင့်မားမှု၊ မှတ်ဉာဏ်သုံးစွဲမှုနည်းပါးမှု၊ စွမ်းဆောင်ရည်မြင့်မားမှု၊ ရိုးရှင်းသောဖွဲ့စည်းမှုပုံစံနှင့် ဖြစ်နိုင်သည့်တိုက်ခိုက်မှု vector များကို လျှော့ချရေးတို့ဖြစ်သည်။
Emulation ပံ့ပိုးမှုအား အနိမ့်ဆုံးတွင်ထားရှိထားပြီး paravirtualization ကို အာရုံစိုက်ထားသည်။ လောလောဆယ် x86_64 စနစ်များကိုသာ ပံ့ပိုးထားသော်လည်း AArch64 ပံ့ပိုးမှုကို စီစဉ်ထားပါသည်။ ဧည့်သည်စနစ်များအတွက်၊ Linux ၏ 64-bit တည်ဆောက်မှုများကိုသာ လက်ရှိတွင် ပံ့ပိုးပေးထားသည်။ CPU၊ Memory၊ PCI နှင့် NVDIMM တို့ကို စည်းဝေးပွဲအဆင့်တွင် ပြင်ဆင်သတ်မှတ်ထားသည်။ ဆာဗာများအကြား virtual machines များကို ရွှေ့ပြောင်းနိုင်သည်။
ဗားရှင်းအသစ်တွင်-
- သီးခြားလုပ်ငန်းစဉ်များဆီသို့ paravirtualized I/O ရွှေ့ခြင်းအပေါ် ဆက်လက်လုပ်ဆောင်သည်။ ပိတ်ဆို့ကိရိယာများနှင့် အပြန်အလှန်တုံ့ပြန်ရန်အတွက် နောက်ခံဖိုင်များကို အသုံးပြုနိုင်စွမ်းကို ထည့်သွင်းထားသည်။ . ပြောင်းလဲမှုသည် vhost-user module ကိုအခြေခံ၍ ပိတ်ဆို့ထားသောကိရိယာများဖြစ်သည့် Cloud Hypervisor သို့ ချိတ်ဆက်နိုင်စေပါသည်။ paravirtualized သိုလှောင်မှုအတွက် backends အဖြစ်၊
- နောက်ဆုံးထွက်ရှိမှုတွင် မိတ်ဆက်ခဲ့သော ကွန်ရက်လည်ပတ်မှုများကို နောက်ကွယ်သို့ရွှေ့ရန်အတွက် ပံ့ပိုးမှု virtual network driver ကို အခြေခံ၍ backend အသစ်ဖြင့် တိုးချဲ့ထားသည်။ . နောက်ခံကို Rust ဖြင့်ရေးသားထားပြီး ယခုအခါတွင် Cloud Hypervisor တွင် ပင်မ para-virtualized network architecture အဖြစ် အသုံးပြုထားသည်။
- အိမ်ရှင်ပတ်ဝန်းကျင်နှင့် ဧည့်သည်စနစ်ကြား ဆက်သွယ်ရေး၏ ထိရောက်မှုနှင့် လုံခြုံရေးကို တိုးမြှင့်ရန်အတွက် AF_VSOCK လိပ်စာဖော်ပြခြင်း (virtual network sockets) နှင့် virtio မှတဆင့် လုပ်ဆောင်သော socket များကို ပေါင်းစပ်အကောင်အထည်ဖော်ရန် အဆိုပြုထားသည်။ အကောင်အထည်ဖော်မှုသည် ပရောဂျက်၏ တိုးတက်မှုအပေါ် အခြေခံသည်။ Amazon မှတီထွင်သည်။ VSOCK သည် သင့်အား ဧည့်သည်နှင့် host ဘက်ရှိ အပလီကေးရှင်းများကြား အပြန်အလှန်အပြန်အလှန်လုပ်ဆောင်ရန်အတွက် စံ POSIX Sockets API ကို အသုံးပြုခွင့်ပေးသည်၊ ထိုကဲ့သို့သော အပြန်အလှန်တုံ့ပြန်မှုအတွက် သာမန်ကွန်ရက်ပရိုဂရမ်များကို လိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်ကာ ဆာဗာအက်ပလီကေးရှင်းတစ်ခုနှင့် client ပရိုဂရမ်များစွာ၏အပြန်အလှန်အကျိုးသက်ရောက်မှုကို အကောင်အထည်ဖော်နိုင်စေပါသည်။
- HTTP ပရိုတိုကောကို အသုံးပြု၍ စီမံခန့်ခွဲမှု API အတွက် ကနဦး ပံ့ပိုးမှု ပေးထားသည်။ အနာဂတ်တွင်၊ ဤ API သည် hot-plugging အရင်းအမြစ်များနှင့် ရွှေ့ပြောင်းနေထိုင်သည့်ပတ်ဝန်းကျင်များကဲ့သို့သော ဧည့်သည်စနစ်များတွင် အပြိုင်အဆိုင်လုပ်ဆောင်မှုများကို စတင်နိုင်စေမည်ဖြစ်သည်။
- PCI bus emulation မလိုအပ်သော minimalistic ဧည့်သည်စနစ်များဖန်တီးရန် အသုံးပြုနိုင်သည့် virtio MMIO (Memory mapped virtio) ကိုအခြေခံ၍ သယ်ယူပို့ဆောင်ရေးအကောင်အထည်ဖော်မှုနှင့်အတူ အလွှာတစ်ခုထပ်ထည့်ထားသည်။
- nested ဧည့်သည်စနစ်များလည်ပတ်ခြင်းအတွက် ပံ့ပိုးမှုတိုးချဲ့ရန် အစပျိုးမှု၏တစ်စိတ်တစ်ပိုင်းအနေဖြင့် Cloud Hypervisor သည် virtio မှတဆင့် paravirtualized IOMMU စက်ပစ္စည်းများကို ပေးပို့နိုင်သည့်စွမ်းရည်ကို ထည့်သွင်းထားပြီး၊ ၎င်းသည် စက်ပစ္စည်းများ၏လုံခြုံရေးနှင့် တိုက်ရိုက်ပေးပို့ခြင်း၏လုံခြုံရေးကို ပိုမိုကောင်းမွန်စေပါသည်။
- Ubuntu 19.10 အတွက် ပံ့ပိုးမှုပေးထားသည်။
- 64 GB RAM ထက်ပိုသော ဧည့်သည်စနစ်များကို လည်ပတ်နိုင်သည့် စွမ်းရည်ကို ထည့်သွင်းထားသည်။
ထို့အပြင်၎င်းကိုမှတ်သားနိုင်သည်။ ကပ်လျက် virtual machine မော်နီတာ Rust-VMM ကို အခြေခံ၍ Rust ဖြင့်လည်း ရေးသားထားပြီး KVM ၏ထိပ်တွင် လုပ်ဆောင်နေပါသည်။ ဗြောက်အိုးသည် ပရောဂျက်၏ ခက်ရင်းဖြစ်သည်။ အပလီကေးရှင်းများဖွင့်ရန် Google မှအသုံးပြုသည်။ и ChromeOS တွင် Firecracker သည် AWS Lambda နှင့် AWS Fargate ပလပ်ဖောင်းများ၏ စွမ်းဆောင်ရည်နှင့် စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန်အတွက် Amazon Web Services မှ ဖန်တီးထားပါသည်။
အဆိုပါပလပ်ဖောင်းသည် ကုန်ကျစရိတ်အနည်းငယ်မျှသာရှိသော virtual machines များကိုလည်ပတ်ရန် ဒီဇိုင်းထုတ်ထားပြီး ဆာဗာမဲ့ဖွံ့ဖြိုးတိုးတက်မှုပုံစံ (ဝန်ဆောင်မှုကဲ့သို့လုပ်ဆောင်ခြင်း) ကို အသုံးပြု၍ တည်ဆောက်ထားသော သီးခြားပတ်ဝန်းကျင်နှင့် ဝန်ဆောင်မှုများကို ဖန်တီးခြင်းနှင့် စီမံခန့်ခွဲခြင်းအတွက် ကိရိယာများကို ပံ့ပိုးပေးပါသည်။ Firecracker သည် ရိုးရာကွန်တိန်နာများ၏ စွမ်းဆောင်ရည်နှင့် လိုက်လျောညီထွေရှိမှုကို ပေးဆောင်စဉ် ပြီးပြည့်စုံသော အထီးကျန်မှုကို ပေးစွမ်းရန် ဟာ့ဒ်ဝဲ အတုလုပ်ခြင်းနည်းပညာများကို အသုံးပြုသည့် ပေါ့ပါးသော virtual machines များကို ပေးဆောင်ပါသည်။ ဥပမာအားဖြင့်၊ Firecracker ကိုအသုံးပြုသည့်အခါ၊ microVM စတင်သည့်အချိန်မှ application execution စတင်ချိန်အထိ 125ms ထက်မကျော်လွန်ဘဲ၊ သင်သည် တစ်စက္ကန့်လျှင် ပတ်ဝန်းကျင် 150 အထိပြင်းထန်သော virtual machines အသစ်များကို စတင်နိုင်စေပါသည်။
Firecracker ၏အသစ်ထွက်ရှိမှုသည် API ကိုင်တွယ်ကိရိယာ (“—no-api”) ကို မဖွင့်ဘဲ လည်ပတ်မှုမုဒ်ကို ထပ်လောင်းပေးသည်။ ပုံသေဖွဲ့စည်းပုံကို “--config-file” ရွေးချယ်မှုမှတစ်ဆင့် သတ်မှတ်ထားပြီး JSON ဖော်မတ်ဖြင့် သတ်မှတ်ထားသည်။ အမိန့်ပေးစာကြောင်းရွေးချယ်မှုများမှ၊ “—” ခြားနားခြင်းအတွက် ပံ့ပိုးမှုကိုလည်း ထည့်သွင်းထားပြီး၊ ထို့နောက် သတ်မှတ်ထားသော အလံများကို လုပ်ဆောင်ခြင်းမရှိဘဲ ကွင်းဆက်တစ်လျှောက် ဖြတ်သန်းသွားမည်ဖြစ်သည်။
Firecracker ကိုလည်း ဖန်တီးထားတဲ့ Amazon လည်း ဖြစ်ပါတယ်။ Rust ပရိုဂရမ်းမင်းဘာသာစကား၏ developer များအား ပံ့ပိုးကူညီမှုပေးဆောင်ခြင်း။ Rust ကို ကုမ္ပဏီ၏ ပရောဂျက်များနှင့် တိုးတက်မှုများတွင် Lambda၊ EC2 နှင့် S3 ကဲ့သို့သော ဝန်ဆောင်မှုများတွင် အကောင်အထည်ဖော်ထားပြီးဖြစ်ကြောင်း မှတ်သားရပါသည်။ Amazon သည် Rust ပရောဂျက်အား S3 တွင် ထုတ်ဝေမှုများ သိမ်းဆည်းရန်နှင့် တည်ဆောက်မှုများ ပြုလုပ်ရန်၊ EC2 တွင် ဆုတ်ယုတ်မှုစမ်းသပ်မှုများကို လုပ်ဆောင်ရန်နှင့် crates.io သိုလှောင်မှုမှ ပက်ကေ့ဂျ်အားလုံးအတွက် စာရွက်စာတမ်းများပါရှိသည့် docs.rs ဆိုက်ကို ထိန်းသိမ်းထားသည်။
Amazon လည်း ပါတယ်။ အစီအစဉ် အရင်းအမြစ် သိုလှောင်မှု၊ တည်ဆောက်မှု၊ စဉ်ဆက်မပြတ် ပေါင်းစပ်မှုနှင့် စမ်းသပ်မှုများအတွက် အသုံးပြုနိုင်သည့် ပွင့်လင်းအရင်းအမြစ်ပရောဂျက်များသည် AWS ဝန်ဆောင်မှုများသို့ အခမဲ့ဝင်ရောက်ခွင့် ရရှိနိုင်သည်။ အစီအစဉ်တွင် ပါဝင်ရန် အတည်ပြုထားပြီးသော ပရောဂျက်များထဲတွင် Rust၊ AdoptOpenJDK၊ Maven Central၊ Kubernetes၊ Prometheus၊ Envoy နှင့် Julia တို့အပြင်၊ တင်ပြချက်များကို OSI ခွင့်ပြုထားသော လိုင်စင်များအောက်တွင် ပေးပို့ထားသော မည်သည့် open source ပရောဂျက်မှ လက်ခံပါသည်။
source: opennet.ru
