Abstract
I- Introduction
II- Related Work
III- Background
IV- Evaluation
V- Conclusions
References
Abstract
Software defined systems use virtualization technologies to provide an abstraction of the hardware infrastructure at different layers. Ultimately, the adoption of software defined systems in all cloud infrastructure components will lead to Software Defined Cloud Computing. Nevertheless, virtualization has already been used for years and is a key element of cloud computing. Traditionally, virtual machines are deployed in cloud infrastructure and used to execute applications on common operating systems. New lightweight virtualization technologies, such as containers and unikernels, appeared later to improve resource efficiency and facilitate the decomposition of big monolithic applications into multiple, smaller services. In this work, we present and empirically evaluate four popular unikernel technologies, Docker containers and Docker LinuxKit. We deployed containers both on bare metal and on virtual machines. To fairly evaluate their performance, we created similar applications for unikernels and containers. Additionally, we deployed full-fledged database applications ported on both virtualization technologies. Although in bibliography there are a few studies which compare unikernels and containers, in our study for the first time, we provide a comprehensive performance evaluation of clean-slate and legacy unikernels, Docker containers and Docker LinuxKit.
INTRODUCTION
Cloud computing is a well-established but constantly evolving technology. Virtualization is a fundamental element of cloud computing. It allows cloud users to share the same underlying infrastructure, as isolated software abstractions. It enhances portability, flexibility and scalability on cloud, while it improves the resource utilization and reduces the cost and energy consumption of the cloud infrastructure. Software Defined Systems (SDS) also use virtualization to provide a software abstraction for different subsystems including Software Defined Networking (SDN) [1], Software Defined Storage (SDStorage), Software Defined Servers (Virtualization) etc. [2]. The key objective of SDS is to provide a unified abstraction of different underlying systems as a single comprehensive system or resource pools [2], [3]. As far as cloud is concerned, the ultimate goal is to create a Software-Defined Cloud (SDCloud), where all the physical resources will be virtualized and controlled via software [4]. The core of any SDCloud is considered to be SDCompute [2]. SDCompute may employ any virtualization technology such as XEN or KVM hypervisors. New lightweight virtualization technologies could become part of SDCloud and co-exist or even replace traditional fullfledged VMs. Containers and unikernels are two of the most dominant lightweight virtualization technologies. Containers are a more mature technology, compared to unikernels and offered as a product by various cloud providers. They share the same operating system of a host machine. Their main drawback is weak isolation. On the other hand, although they are not a new idea, unikernels, have recently gained momentum as a new virtualization approach in cloud computing. A unikernel is an immutable, single address space machine image, which can be deployed by a hypervisor and contains a library operating system. Unikernels are much smaller and have less overhead compared to full-flegded VMs, they also provide higher isolation compared to containers.