This document proposes an alternative to the XenStore called NoXS. The goals of NoXS are to provide a simple and specialized mechanism for storing domain and device information that is efficient, fast and has few lines of code. Rather than using a centralized daemon, NoXS would store this information in memory pages directly accessible to domains. The design of NoXS includes Device Information Pages and Device Control Pages to store data about devices and allow control of guest VMs. Initial implementations have been done for Linux guests and the Chaos toolstack. Further work remains to complete features like crash recovery and device hotplugging. Performance tests show NoXS can significantly reduce domain boot times compared to using the standard XenStore.
4. Why do we care?
4
● Specialized applications on Unikernels
○ ClickOS: Middleboxes (ClickOS)
○ MiniCache: Edge content caches
● Micro-services with VMs
● Per-user virtualized services
● Edge devices
○ Constrained ARM boards
5. Why do we care?
5
● Specialized applications on Unikernels
○ ClickOS: Middleboxes (ClickOS)
○ MiniCache: Edge content caches
● Micro-services with VMs
● Per-user virtualized services
● Edge devices
○ Constrained ARM boards
● Performance
○ Low boot times
○ Good scalability
○ Low overhead
6. Why do we care?
6
● Specialized applications on Unikernels
○ ClickOS: Middleboxes (ClickOS)
○ MiniCache: Edge content caches
● Micro-services with VMs
● Per-user virtualized services
● Edge devices
○ Constrained ARM boards
● Performance
○ Low boot times
○ Good scalability
○ Low overhead
● Specific functionality
○ PV or PVH (no QEMU)
○ Usually only vif and block devices
○ No “legacy”
8. What’s wrong with the XenStore?
● Performance
○ Biggest contributor for domain creation time after few hundreds
8
9. Domain creation time breakdown for booting 1000 MiniOS guests (8MB RAM, 1 vCPU and 1 VIF) on Xen 4.8 9
10. What’s wrong with the XenStore?
● Performance
○ Biggest contributor for domain creation time after few hundreds
10
11. What’s wrong with the XenStore?
● Performance
○ Biggest contributor for domain creation time after few hundreds
● Protocol
○ Too generic: requires dozens of messages to create a domain
○ Limits directory size, i.e. number of VMs
○ Searches are expensive
11
12. What’s wrong with the XenStore?
● Performance
○ Biggest contributor for domain creation time after few hundreds
● Protocol
○ Too generic: requires dozens of messages to create a domain
○ Limits directory size, i.e. number of VMs
○ Searches are expensive
● Centralized service
○ Central point-of-failure
○ Harder to make Dom0 rebootable
12
13. What’s wrong with the XenStore?
● Performance
○ Biggest contributor for domain creation time after few hundreds
● Protocol
○ Too generic: requires dozens of messages to create a domain
○ Limits directory size, i.e. number of VMs
○ Searches are expensive
● Centralized service
○ Central point-of-failure
○ Harder to make Dom0 rebootable
● Certification
○ One more piece of software to certificate 13
29. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
29
30. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
30
31. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
● Virtual device setup a.k.a. XenBus
31
32. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
● Virtual device setup a.k.a. XenBus
32
33. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
● Virtual device setup a.k.a. XenBus
● Power control, i.e., power off and suspend
33
34. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
● Virtual device setup a.k.a. XenBus
● Power control, i.e., power off and suspend
34
35. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
● Virtual device setup a.k.a. XenBus
● Power control, i.e., power off and suspend
● Guest specific functionality
○ ClickOS uses XenStore to install configurations
○ Mirage’s Jitsu uses XenStore to advertise service endpoints
35
36. XenStore functionality
● Keep basic domain information
● CPU hot-plugging
● Dynamic setup of balloon target
● Keep toolstack related information
● Virtual device setup a.k.a. XenBus
● Power control, i.e., power off and suspend
● Guest specific functionality
○ ClickOS uses XenStore to install configurations
○ Mirage’s Jitsu uses XenStore to advertise service endpoints
36
39. ● Features
○ XenBus
○ Guest control
● Simple and specialized mechanism
○ Efficient and fast
○ Few lines-of-code: easy to certify
NoXS Goals
39
40. ● Features
○ XenBus
○ Guest control
● Simple and specialized mechanism
○ Efficient and fast
○ Few lines-of-code: easy to certify
● Not based on centralized daemon
NoXS Goals
40
41. ● Features
○ XenBus
○ Guest control
● Simple and specialized mechanism
○ Efficient and fast
○ Few lines-of-code: easy to certify
● Not based on centralized daemon
● Run side-by-side with the xenstore
NoXS Goals
41
54. ● Virtual device
○ Based on the split driver model
● Features
○ Power control
○ CPU hot-plugging
○ Ballooning
● Can be extended to add other features
gCtl: Guest Control Device
54
62. ● Basic mechanism
○ Crash-recovery
○ Device hot-plugging
● Linux support
○ Stub-domain support
○ Serial console drivers
● Toolstack support
○ xl/libxl
● gCtl
○ CPU hot-plugging
○ Ballooning
Missing features
62