Have a general question about Nanos? We answer the most common question below. Can’t find yours? Ask our community!
How does Nanos compare to Linux?
Linux is a general purpose operating system designed to run on actual hardware. Nanos is a single process operating system designed to run as a virtual machine and has no support to run on hardware. Linux is designed to run multiple processes with multiple users and has full interactivity support. Nanos has no support for users or running multiple processes. Nanos fulfills a portion of the Linux syscall interface to run linux applications natively.
How does Nanos compare to containers?
Containers are pieces of the linux kernel and share a common kernel when provisioned on the same system. This makes them widely insecure compared to a virtual machine. The biggest problem with containers is that gaining access to one usually means access to the entire infrastructure.
Why don't I get the same benchmarks as you?
Benchmarks can vary widely depending on a variety of factors. For some platforms and some languages we are much faster than Linux while for others we have work to do. For instance KVM via Google Cloud works great for Go applications but the JVM on AWS is currently slower. Likewise just because networking throughput might be good doesn't necessarily mean I/O writes are as good. Different hypervisors utilize different drivers and we can have varrying support for those. Additionally certain languages utilize certain features we might have gotten to run but not have fully hashed out. Most of our tests are currently targeting 1 vCPU but we plan on having more SMP targets in the future. To be as transparent as possible we plan on including automated test results in the near future. When running your own benchmarks it is necessary to be precise on what you are testing. Be careful to use the same instance size tested from the same class c network and same region for instance.
Does this work under Kubernetes?
Yes, but we caution users to evaluate if you really need kubernetes. Chances are you don't and you will experience severe performance and security problems if you choose to run under k8s. If you still find you must here are instructions for running Nanos under k8s.
Doesn't this require the same complexity as Kubernetes or other platforms?
Great question - no! The complexity that comes with kubernetes is that it requires you to re-invent all the layers of a cloud platform that already exists. If you run a vanilla linux instance on AWS you get out of the box: networking, storage, security, routing, etc all for free. Compare that to the cloud native world where every layer has to be replicated. It's a common misconception that Nanos needs to be provisioned on top of a linux instance. The underlying hypervisor might be running linux but if you are running on something like AWS or Google Cloud we provision the unikernel as it's own ami/disk image with no linux in it. So you get to reap all the same benefits that you get of running normal linux instances with the isolation, performance and security of Nanos unikernels.