Gone Full Unikernel
&gt; Try 5, 10, 20 megabyte small.<p>OpenWRT&#x2F;LEDE will happily work on a system with 4MB of storage:<p><a href="https:&#x2F;&#x2F;www.lede-project.org" rel="nofollow">https:&#x2F;&#x2F;www.lede-project.org</a><p>QNX had a graphical environment, a web browser, a web server, a text editor, image viewer, various games, a package manager, etcetera on a 1.44MB floppy:<p><a href="http:&#x2F;&#x2F;m.youtube.com&#x2F;watch?v=K_VlI6IBEJ0" rel="nofollow">http:&#x2F;&#x2F;m.youtube.com&#x2F;watch?v=K_VlI6IBEJ0</a><p>Less is definitely more, but you do not need a Unikernel to achieve such sizes and you lose observably by going with a Unikernel. If something goes wrong with your application such as it becoming non-responsive, you need to attach gdb or get a core dump like a kernel developer would to understand what happened. Your production systems that are likely EC2 instances that lack such functionality, which means debugging is much harder with a unikernels than it would have been with a monolithic, hybrid or micro kernel. Furthermore, disk space is cheap, which is why few opt for OpenWRT&#x2F;LEDE over more full featured Linux distributions in datacenters.<p>If you want the experience of a single address space and little more code than your application, you could run FreeDOS, which also fits on a floppy and has a code base that is mature. There are guides for doing this online. Here is one for doing a web server:<p><a href="http:&#x2F;&#x2F;www.instructables.com&#x2F;id&#x2F;Retro-dos-web-server&#x2F;?ALLSTEPS" rel="nofollow">http:&#x2F;&#x2F;www.instructables.com&#x2F;id&#x2F;Retro-dos-web-server&#x2F;?ALLSTE...</a><p>The world moved away from such designs because the observability and stability were awful. We might have &quot;safe&quot; languages now that improve stability of the application, but those could just run as a process in an environment where proper debugging can be done when something goes wrong. The few percentage points of performance that you get from eliminating the mechanisms that enable you to understand what went wrong do not out justify discarding them.<p>Also, you lose the advantage of a shared memory pool with unikernels, which are generally intended to run in VMs. Partitioning memory in VMs causes internal fragmentation, which artificially lowers the density of applications per machine. It also can lower block IO efficiency from double caching between the host and guest. Hardware virtualization is a useful technology, but it is an inefficiency that we need to eliminate with containers, rather than one that we should to embrace with unikernels.