# Performance of Communication- and Computation-Intensive SaaS on the OpenStack Cloud
## 1 Introduction  
Rapid developments in computing and communication technologies have led to the emergence of a distributed computing paradigm called cloud computing, which, due to its on-demand nature, low cost, and offloaded management, has become a natural solution to the problem of expanding computational needs [1]. The term \"cloud\" is an acronym for common, location-independent, online utility provisioned on-demand. The capabilities of different applications are exposed as sophisticated services that can be accessed over a network. Generally, cloud providers offer different types of services, such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Cloud infrastructures provide platforms and tools for building IT services at more affordable prices compared to the prices of traditional computing techniques. Organizations can use different implementations of cloud software for deploying their own private clouds. OpenStack is an open-source cloud management platform that delivers an integrated foundation to create, deploy, and scale a secure and reliable public or private cloud [2]. The compute service Nova, object storage service Swift, and image service Glance are the main parts of OpenStack. Another open-source local cloud framework isEucalyptus [3], provided by Eucalyptus Systems, Inc (Santa Barbara, CA, USA). A typical Eucalyptus cloud is composed of a front-end cloud controller, a persistent storage controller, a virtual machine image repository, a cluster controller, and many compute nodes. Cloud computing makes extensive use of virtual machines (VMs) because they allow workloads to be isolated and resource usage to be controlled. Xen is primarily a bare-metal type 1 hypervisor that can be directly installed in the computer hardware without the need for a host operating system [4]. Xen directly controls, monitors, and manages the hardware, peripheral, and I/O resources. Kernel Virtual Machine (KVM) [4] is a feature of Linux that allows Linux to act as a type 1 hypervisor, running an unmodified guest operating system inside a Linux process. KVM uses full virtualization for Linux on x86 hardware. KVM is designed and optimized to take full advantage of the hardware-assisted virtualization extensions. Furthermore, KVM is widely considered the de facto standard for OpenStack and the virtualization management API libvirt [5]. The Nova libvirt driver manages the communication between OpenStack and KVM. Containers present an emerging technology for improving the productivity and code portability of cloud infrastructures. Rather than running a full operating system on virtual hardware, container-based virtualization uses an existing operating system and provides extra isolation. Container runtimes, such as LXC [6], Singularity [7], and Docker [8], largely abstract away the differences between the many operating systems that users run. In many cases, due to the layered file system, Docker container images require less disk space and I/O than the equivalent VM disk images. Thus, Docker has emerged as a standard runtime, image format, and build system for Linux containers. The Lawrence Berkeley National Laboratory has developed Singularity [7], a novel container technology with a format different from that of the Docker image. Singularity is designed to integrate well with resource managers of HPC systems. It also focuses on container mobility and can be run in any workload with no modification to any host [9]. HPC vendors have also begun integrating native support for containers. For example, IBM has added Docker container integration to Platform LSF to run the containers on an HPC cluster [10]. This allows the containers to be executed on an LSF-managed cluster similar to a conventional job but with a fully self-contained environment. UberCloud application software containers provide ANSYS Fluids and Structures software for execution on the Microsoft Azure cloud [11].