αž’αžΆαž”αŸ‹αžŠαŸαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Intel Cloud Hypervisor 0.3 αž“αž·αž„ Amazon Firecracker 0.19 αžŸαžšαžŸαŸαžšαž‡αžΆ Rust

αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ Intel αž”αžΆαž“αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™ αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαž“αŸƒ hypervisor Cloud Hypervisor 0.3. Hypervisor αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž›αžΎαžŸαž˜αžΆαžŸαž’αžΆαžαž»
αž‚αž˜αŸ’αžšαŸ„αž„αžšαž½αž˜ αž…αŸ’αžšαŸ‚αŸ‡-VMMαžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡ αž€αŸ’αžšαŸ…αž–αžΈ Intel, Alibaba, Amazon, Google αž“αž·αž„ Red Hat αž€αŸαž…αžΌαž›αžšαž½αž˜αž•αž„αžŠαŸ‚αžšαŸ” Rust-VMM αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžšβ€‹αž‡αžΆβ€‹αž—αžΆαžŸαžΆ Rust αž“αž·αž„β€‹αž’αž“αž»αž‰αŸ’αž‰αžΆαžβ€‹αž±αŸ’αž™β€‹αž’αŸ’αž“αž€β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž€αžΆαžšβ€‹αžαŸ’αžšαž½αžβ€‹αž–αž·αž“αž·αžαŸ’αž™β€‹αž–αž·αžŸαŸαžŸβ€‹αžαžΆαž˜β€‹αž—αžΆαžšαž€αž·αž…αŸ’αž…αŸ” Cloud Hypervisor αž‚αžΊαž‡αžΆ hypervisor αž˜αž½αž™αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž˜αŸ‰αžΌαž“αžΈαž‘αŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹ (VMM) αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž›αžΎαž€αŸ†αž–αžΌαž›αž“αŸƒ KVM αž“αž·αž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžŠαžΎαž˜αž€αŸ†αžŽαžΎαžαž“αŸ…αž›αžΎαž–αž–αž€αŸ” αž€αžΌαžŠαž‚αž˜αŸ’αžšαŸ„αž„ αž˜αžΆαž“ αž˜αžΆαž“αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαž€αŸ’αžšαŸ„αž˜ Apache 2.0 αŸ”

Cloud Hypervisor αž‚αžΊαž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž›αžΈαž“αž»αž…αž‘αŸ†αž“αžΎαž”αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž“αž·αž˜αŸ’αž˜αž·αžαžŠαŸ‚αž›αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎ virtio αŸ” αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‚αŸ„αž›αž”αŸ†αžŽαž„αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž‚αžΊαŸ– αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αžαŸ’αž–αžŸαŸ‹ αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž‘αžΆαž” αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαžΆαž˜αž‰αŸ’αž‰ αž“αž·αž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžœαŸ‰αž·αž…αž‘αŸαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αŸ”

αž€αžΆαžšβ€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž€αžΆαžšβ€‹αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžšαž€αŸ’αžŸαžΆβ€‹αž±αŸ’αž™β€‹αžαž·αž…β€‹αž”αŸ†αž•αž»αž αž αžΎαž™β€‹αž€αžΆαžšβ€‹αž•αŸ’αžαŸ„αžβ€‹αž›αžΎβ€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžαŸ’αžšαžΆαž”αŸ‹β€‹αžαžΆαž˜β€‹αž“αž·αž˜αŸ’αž˜αž·αžαŸ” αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αžΆαž“αžαŸ‚αž”αŸ’αžšαž–αŸαž“αŸ’αž’ x86_64 αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš AArch64 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαŸ„αž„αž‘αž»αž€αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αŸ’αž‰αŸ€αžœ αž˜αžΆαž“αžαŸ‚αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαž›αžΈαž“αž»αž… 64 αž”αŸŠαžΈαžαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž“αžΆαž–αŸαž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡αŸ” αžŸαŸŠαžΈαž—αžΈαž™αžΌ αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† PCI αž“αž·αž„ NVDIMM αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž‘αžΎαž„αŸ” αžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžšαžœαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈαŸ–

  • αž€αžΆαžšαž„αžΆαžšαž”αžΆαž“αž”αž“αŸ’αžαž›αžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš I/O paravirtualized αž‘αŸ…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ” αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž„αž€αŸ’αžšαŸ„αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž”αŸ’αž›αž»αž€ vhost-user-blk. αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž—αŸ’αž‡αžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž”αŸ’αž›αž»αž€αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž˜αŸ‰αžΌαžŒαž»αž› vhost-user αž‘αŸ… Cloud Hypervisor αžŠαžΌαž…αž‡αžΆ SPDKαž‡αžΆ backends αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€ paravirtualized;
  • αž€αžΆαžšβ€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈβ€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšβ€‹αž”αžŽαŸ’αžŠαžΆαž‰β€‹αž‘αŸ…β€‹αž•αŸ’αž“αŸ‚αž€β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž™ αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžŽαŸ‚αž“αžΆαŸ†β€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž…αŸαž‰αž•αŸ’αžŸαžΆαž™β€‹αž…αž»αž„αž€αŸ’αžšαŸ„αž™ vhost-user-netαž–αž„αŸ’αžšαžΈαž€αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž„αž€αŸ’αžšαŸ„αž™αžαŸ’αž˜αžΈαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαž”αžŽαŸ’αžαžΆαž‰αž“αž·αž˜αŸ’αž˜αž·αž αž”αŸ‰αŸ‡. αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆ Rust αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Cloud Hypervisor αž‡αžΆαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž”αžŽαŸ’αžαžΆαž‰αžŸαŸ†αžαžΆαž“αŸ‹ para-virtualized αŸ”
  • αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž“αž·αž„αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžšαžœαžΆαž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ αž“αž·αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αŸ’αž‰αŸ€αžœ αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΌαž“αž€αžΆαžαŸ‹αž“αŸƒαžšαž“αŸ’αž’αžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ AF_VSOCK (αžšαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰αž“αž·αž˜αŸ’αž˜αž·αž) αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž€αžΆαžšαžαžΆαž˜αžšαž™αŸˆ virtio αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžšαž”αžŸαŸ‹αž‚αž˜αŸ’αžšαŸ„αž„ αž•αžΆαžœαž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ Amazon αŸ” VSOCK αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš POSIX Sockets API αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžšαžœαžΆαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž›αžΎαž—αžΆαž‚αžΈαž—αŸ’αž‰αŸ€αžœ αž“αž·αž„αž˜αŸ’αž…αžΆαžŸαŸ‹αž•αŸ’αž‘αŸ‡ αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαž˜αŸ’αžšαž”αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžŽαŸ’αžαžΆαž‰αž’αž˜αŸ’αž˜αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž”αŸ‚αž”αž“αŸαŸ‡ αž“αž·αž„αž’αž“αž»αžœαžαŸ’αžαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžαž·αžαž·αž‡αž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ‚αž˜αž½αž™αŸ”
  • αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ†αž”αžΌαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ API αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αž·αž’αžΈαž€αžΆαžš HTTP αŸ” αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž API αž“αŸαŸ‡αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž’αžŸαž˜αž€αžΆαž›αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αŸ’αž‰αŸ€αžœ αžŠαžΌαž…αž‡αžΆαž’αž“αž’αžΆαž“αžŠαŸ„αžαž€αŸ’αžαŸ… αž“αž·αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž˜αž½αž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ virtio MMIO (Memory mapped virtio) αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αŸ’αž‰αŸ€αžœαžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž˜αž·αž“αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž‘αžΆαž“αž€αŸ’αžšαž»αž„ PCI αŸ”
  • αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸƒαž‚αŸ†αž“αž·αžαž•αŸ’αžαž½αž…αž•αŸ’αžαžΎαž˜αžŠαžΎαž˜αŸ’αž”αžΈαž–αž„αŸ’αžšαžΈαž€αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αŸ’αž‰αŸ€αžœαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ Cloud Hypervisor αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαž§αž”αž€αžšαžŽαŸ IOMMU αžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž“αž·αž˜αŸ’αž˜αž·αžαžαžΆαž˜αžšαž™αŸˆ virtio αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž’αŸ„αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αŸ”
  • αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸŠαžΌαž”αŸŠαž»αž“αž‘αžΌ 19.10;
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž—αŸ’αž‰αŸ€αžœαžŠαŸ‚αž›αž˜αžΆαž“ RAM αž›αžΎαžŸαž–αžΈ 64 GB αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹ αž”αž‰αŸ’αž αžΆαžαŸ’αž˜αžΈαŸ” αž“αŸ…αž‡αžΆαž”αŸ‹αž‚αŸ’αž“αžΆαŸ” αž’αž—αž·αžœαžŒαŸ’αž αž˜αŸ‰αžΌαž“αžΈαž‘αŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αž•αžΆαžœαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž•αž„αžŠαŸ‚αžšαž“αŸ…αž€αŸ’αž“αž»αž„ Rust αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ Rust-VMM αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž›αžΎαž€αŸ†αž–αžΌαž›αž“αŸƒ KVM αŸ” αž€αžΆαŸ†αž‡αŸ’αžšαž½αž…β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž•αŸ’αž›αžΌαžœβ€‹αž”αŸ†αž”αŸ‚αž€β€‹αž“αŸƒβ€‹αž‚αž˜αŸ’αžšαŸ„αž„ CrosVMαž”αŸ’αžšαžΎαžŠαŸ„αž™ Google αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Linux ΠΈ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android αž“αŸ…αž€αŸ’αž“αž»αž„ ChromeOS αŸ” Firecracker αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™ Amazon Web Services αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž“αž·αž„αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαžœαŸαž‘αž·αž€αžΆ AWS Lambda αž“αž·αž„ AWS Fargate αŸ”

αžœαŸαž‘αž·αž€αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αž αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αž“αž·αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‚αŸ†αžšαžΌαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‚αŸ’αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ (αž˜αž»αžαž„αžΆαžšαž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜)αŸ” Firecracker αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž“αžΌαžœαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž‘αž˜αŸ’αž„αž“αŸ‹αžŸαŸ’αžšαžΆαž› αžŠαŸ‚αž›αž αŸ…αžαžΆ microVMs αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž“αž·αž˜αŸ’αž˜αž·αžαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„ αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž—αžΆαž–αž―αž€αŸ„αž–αŸαž‰αž›αŸαž‰ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž—αžΆαž–αž”αžαŸ‹αž”αŸ‚αž“αž“αŸƒαž’αž»αž„αž”αŸ’αžšαž–αŸƒαžŽαžΈαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎ Firecracker αž–αŸαž›αžœαŸαž›αžΆαž…αžΆαž”αŸ‹αž–αžΈαž–αŸαž›αžŠαŸ‚αž› microVM αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž·αž“αž›αžΎαžŸαž–αžΈ 125ms αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžαŸ’αž˜αžΈαžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαŸ†αž„αžαž„αŸ‹αžŸαŸŠαžΈαžαŸαžšαž αžΌαžαžŠαž›αŸ‹ 150 αž”αžšαž·αžŸαŸ’αžαžΆαž“αž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ”

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹ Firecracker αž”αž“αŸ’αžαŸ‚αž˜αžšαž”αŸ€αž”αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ„αž™αž˜αž·αž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš API handler (β€œβ€”no-api”) αžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αž”αžšαž·αžŸαŸ’αžαžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ hard-coded αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‹αž·αžαž·αžœαž“αŸ’αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαžΆαž˜αžšαž™αŸˆαž‡αž˜αŸ’αžšαžΎαžŸ "--config-file" αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹ JSON αŸ” αž–αžΈαž‡αž˜αŸ’αžšαžΎαžŸαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαž‰αŸ’αž‰αžΆαž”αŸ†αž”αŸ‚αž€ β€œβ€”β€ αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž•αž„αžŠαŸ‚αžš αž‘αž„αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžαŸ’αžŸαŸ‚αžŸαž„αŸ’αžœαžΆαž€αŸ‹αžŠαŸ„αž™αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

Amazon αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαž Firecracker αž•αž„αžŠαŸ‚αžšαŸ” αž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸ αž›αžΎαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž§αž”αžαŸ’αžαž˜αŸ’αž—αžŠαž›αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αŸƒαž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Rust αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆ Rust αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž›αžΆαŸ†αž„αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ αž αžΎαž™αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž›αžΎαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžšαž½αž…αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαžΌαž…αž‡αžΆ Lambda, EC2 αž“αž·αž„ S3 αŸ” Amazon αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„ Rust αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž€αŸ’αž“αž»αž„ S3 αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžαŸ†αžšαŸ‚αžαŸ†αžšαž„αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ EC2 αž“αž·αž„αžšαž€αŸ’αžŸαžΆαž‚αŸαž αž‘αŸ†αž–αŸαžš docs.rs αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž―αž€αžŸαžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„ crates.io αŸ”

Amazon αž•αž„αžŠαŸ‚αžšαŸ” αžŽαŸ‚αž“αžΆαŸ† αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž₯αžŽαž‘αžΆαž“αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™ AWSαžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ„αž™αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαž‘αŸ…αž€αžΆαž“αŸ‹αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ AWS αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž’αž“αž’αžΆαž“ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαŸ” αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ‚αž›αž”αžΆαž“αž’αž“αž»αž˜αŸαžαžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡ αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎ Rust, AdoptOpenJDK, Maven Central, Kubernetes, Prometheus, Envoy αž“αž·αž„ Julia αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ” αž€αžΆαžšαžŠαžΆαž€αŸ‹αžŸαŸ’αž“αžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž™αž€αž–αžΈαž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽαžŠαŸ‚αž›αž’αž“αž»αž˜αŸαžαžŠαŸ„αž™ OSI αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹