5 ms·
Linux/Windows/the BSDs contain quite a bit of code to support: - Lots of different hardware and peripherals, some legacy (i.e. floppies) - The filesystem, on
by superuser2 11y ago
Linux/Windows/the BSDs contain quite a bit of code to support:
- Lots of different hardware and peripherals, some legacy (i.e. floppies)
- The filesystem, on top of whatever could conceivably be beneath it
- An institutional administrator and multiple users who need protection from each other, all going about their business in shells simultaneously
- Intelligent resource-sharing between lots of different processes
Unikernels rip all that out and say:
- There is only one kind of "hardware" in the universe: the supported hypervisor. No need for drivers for anything else.
- There is exactly one user with OS-level access and he can be trusted completely. (This is many servers already: the only OS-level user is the sysadmin, all non-root accounts ever do us sudo to a root shell.)
- This VM runs exactly one process (the actual application) and it can have direct access to hardware and memory. So no (or drastically reduced) need for memory protection, process scheduling, system calls, etc.
It's likely that i.e. a relational database engine with direct access to SSD firmware can be made faster than one which must go through a generic filesystem abstraction layer.
Disadvantages:
- Largely uncharted waters
- Linux is likely to be better at intelligently scheduling resources than a hypervisor, at least for the forseeable future.
- amirmc 11y agoI'm not sure your final disadvantage really applies. If we accept that most deployments to the cloud (eg. EC2) are essentially single-purpose VMs, then Xen is already scheduling resources this way (& presumably well enough).
- justincormack 11y agoIf your hypervisor is KVM then Linux is scheduling your resources, so that last argument does not apply.
- anttiok 11y ago> There is only one kind of "hardware" in the universe: the supported hypervisor. No need for drivers for anything else. An explicit goal of rumprun is to support real hardware. Defining the cloud as the only supported platform makes sense if you have to write or port hardware device drivers. For rumprun those drivers come for free as rump kernel components, so if you want to link them in (optional) and run on real hardware, it's possible. Having that possibility makes sense too: your cloud platform and IoT (+) platform can be the same thing, it's just the orchestration layer that differs. +) given a large enough "T"