49
Server virtualization Ankit Singla ETH Zürich P. Brighten Godfrey UIUC

Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2 VM N pNIC Physical NIC vNIC vNIC vNIC

Embed Size (px)

Citation preview

Page 1: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Server virtualization

Ankit SinglaETH Zürich

P. Brighten GodfreyUIUC

Page 2: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

The cloud depends on it, virtually

Page 3: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

The cloud depends on it, virtually

• Sharing of physical infrastructure

Page 4: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

The cloud depends on it, virtually

• Sharing of physical infrastructure

• Spin-up a virtual machine in seconds

Page 5: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

The cloud depends on it, virtually

• Sharing of physical infrastructure

• Spin-up a virtual machine in seconds

• Live VM migration

Page 6: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Server virtualization

Hypervisor

VM1 VM2 VMN…vNIC

vNIC

vNIC

Page 7: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

virtual NIC

Server virtualization

Hypervisor

VM1 VM2 VMN…

pNIC

Physical NIC

vNIC

vNIC

vNIC

Page 8: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

pSwitchPhysical switch

virtual NIC

Server virtualization

Hypervisor

VM1 VM2 VMN…

pNIC

Physical NIC

vNIC

vNIC

vNIC

Page 9: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Networking VMs

Hypervisor

VM1 VM2 VMN…

virtual switch vSw

pNIC

vNIC

vNIC

vNIC

pSwitch

Page 10: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Networking VMs

Hypervisor

VM1 VM2 VMN…

virtual switch vSw

pNIC

vNIC

vNIC

vNIC

pSwitch

Page 11: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

pSwitch

Sidenote: Docker

Hypervisor

VM1 VM2 VMN…

pNIC

vNIC

vNIC

vNIC

Page 12: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

pSwitch

Sidenote: Docker

Hypervisor

VM1 VM2 VMN…

pNIC

OSApplicationvNIC

vNIC

vNIC

Page 13: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

pSwitch

Sidenote: Docker

Linux

pNIC

Application

Container

Docker

Page 14: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

pSwitch

Sidenote: Docker

Linux

pNIC

Application

Container

DockerAn Updated Performance Comparison of

Virtual Machines and Linux Containers

Wes Felter, Alexandre Ferreira, Ram Rajamony, Juan Rubio

IBM Research, Austin, TX

{wmf, apferrei, rajamony, rubioj}@us.ibm.com

Abstract—Cloud computing makes extensive use of virtual

machines (VMs) because they permit workloads to be isolated

from one another and for the resource usage to be somewhat

controlled. However, the extra levels of abstraction involved in

virtualization reduce workload performance, which is passed

on to customers as worse price/performance. Newer advances

in container-based virtualization simplifies the deployment of

applications while continuing to permit control of the resources

allocated to different applications.

In this paper, we explore the performance of traditional

virtual machine deployments, and contrast them with the use of

Linux containers. We use a suite of workloads that stress CPU,

memory, storage, and networking resources. We use KVM as a

representative hypervisor and Docker as a container manager.

Our results show that containers result in equal or better

performance than VMs in almost all cases. Both VMs and

containers require tuning to support I/O-intensive applications.

We also discuss the implications of our performance results for

future cloud architectures.

I. INTRODUCTION

Virtual machines are used extensively in cloud computing.

In particular, the state-of-the-art in Infrastructure as a Service

(IaaS) is largely synonymous with virtual machines. Cloud

platforms like Amazon EC2 make VMs available to customers

and also run services like databases inside VMs. Many Plat-

form as a Servive (PaaS) and Software as a Service (SaaS)

providers are built on IaaS with all their workloads running

inside VMs. Since virtually all cloud workloads are currently

running in VMs, VM performance is a crucial component

of overall cloud performance. Once a hypervisor has added

overhead, no higher layer can remove it. Such overheads then

become a pervasive tax on cloud workload performance. There

have been many studies showing how VM execution compares

to native execution [30, 33] and such studies have been a

motivating factor in generally improving the quality of VM

technology [25, 31].

Container-based virtualization presents an interesting al-

ternative to virtual machines in the cloud [46]. Virtual Private

Server providers, which may be viewed as a precursor to cloud

computing, have used containers for over a decade but many

of them switched to VMs to provide more consistent perfor-

mance. Although the concepts underlying containers such as

namespaces are well understood [34], container technology

languished until the desire for rapid deployment led PaaS

providers to adopt and standardize it, leading to a renaissance

in the use of containers to provide isolation and resource con-

trol. Linux is the preferred operating system for the cloud due

to its zero price, large ecosystem, good hardware support, good

performance, and reliability. The kernel namespaces feature

needed to implement containers in Linux has only become

mature in the last few years since it was first discussed [17].

Within the last two years, Docker [45] has emerged as a

standard runtime, image format, and build system for Linux

containers.

This paper looks at two different ways of achieving re-

source control today, viz., containers and virtual machines

and compares the performance of a set of workloads in both

environments to that of natively executing the workload on

hardware. In addition to a set of benchmarks that stress

different aspects such as compute, memory bandwidth, mem-

ory latency, network bandwidth, and I/O bandwidth, we also

explore the performance of two real applications, viz., Redis

and MySQL on the different environments.

Our goal is to isolate and understand the overhead intro-

duced by virtual machines (specifically KVM) and containers

(specifically Docker) relative to non-virtualized Linux. We

expect other hypervisors such as Xen, VMware ESX, and

Microsoft Hyper-V to provide similar performance to KVM

given that they use the same hardware acceleration features.

Likewise, other container tools should have equal performance

to Docker when they use the same mechanisms. We do not

evaluate the case of containers running inside VMs or VMs

running inside containers because we consider such double

virtualization to be redundant (at least from a performance

perspective). The fact that Linux can host both VMs and

containers creates the opportunity for an apples-to-apples com-

parison between the two technologies with fewer confounding

variables than many previous comparisons.

We make the following contributions:

• We provide an up-to-date comparison of native, con-

tainer, and virtual machine environments using recent

hardware and software across a cross-section of inter-

esting benchmarks and workloads that are relevant to

the cloud.

• We identify the primary performance impact of current

virtualization options for HPC and server workloads.

• We elaborate on a number of non-obvious practical

issues that affect virtualization performance.

• We show that containers are viable even at the scale

of an entire server with minimal performance impact.

The rest of the paper is organized as follows. Section II de-

scribes Docker and KVM, providing necessary background to

understanding the remainder of the paper. Section III describes

and evaluates different workloads on the three environments.

We review related work in Section IV, and finally, Section V

concludes the paper.

IBM Research Report, 2014

Page 15: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

pSwitch

Sidenote: Docker

Linux

pNIC

Application

Container

Docker

Page 16: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Improving networking performance

pSwitch

Hypervisor

VM1 VM2 VMN…

vSw

pNIC

vNIC

vNIC

vNIC

Page 17: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Improving networking performance

pSwitch

Hypervisor

VM1 VM2 VMN…

vSw

pNIC

vNIC

vNIC

vNIC

CPU does the work!

Page 18: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

Flexible

Page 19: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

Flexible slow, CPU-expensive

Page 20: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

Flexible

10Gbps, 84 Byte packets ⇒ 67ns time budget

slow, CPU-expensive

Page 21: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

Flexible

10Gbps, 84 Byte packets ⇒ 67ns time budget

Context: CPU-memory takes tens of ns

slow, CPU-expensive

Page 22: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

Flexible slow, CPU-expensive

Page 23: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

• Packet I/O

Flexible slow, CPU-expensive

Page 24: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

• Packet I/O

• Userspace overheads

Flexible slow, CPU-expensive

Page 25: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

• Packet I/O

• Userspace overheads

• Packet classification

Flexible slow, CPU-expensive

Page 26: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Packet processing on CPUs

• Packet I/O

• Userspace overheads

• Packet classification

Progress is being made!

Flexible slow, CPU-expensive

Page 27: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

vNIC

vNIC

vNIC

Page 28: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

pNIC

vNIC

vNIC

vNIC

Page 29: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

pNIC

physical function

vNIC

vNIC

vNIC

Page 30: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

pNIC

virtual function

physical function

vNIC

vNIC

vNIC

Page 31: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

pNIC

virtual function

physical function

VM1 VM2 VMN…

vNIC

vNIC

vNIC

Page 32: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

pNIC

virtual function

physical functionL2 sorter

(switch)

VM1 VM2 VMN…

vNIC

vNIC

vNIC

Page 33: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

pNIC

virtual function

physical functionL2 sorter

(switch)

VM1 VM2 VMN…

vNIC

vNIC

vNIC

Page 34: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

SR-IOV: Single-root I/O Virtualization

VM1 VM2 VMN…

vSw

pNIC

virtual function

physical functionL2 sorter

(switch)

VM1 VM2 VMN…

vNIC

vNIC

vNIC

DMA to bypass the hypervisor!

Page 35: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Open vSwitch

USENIX Association 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI ’15) 117

The Design and Implementation of Open vSwitch

Ben Pfaff∗, Justin Pettit∗, Teemu Koponen∗, Ethan J. Jackson∗,

Andy Zhou∗, Jarno Rajahalme∗, Jesse Gross∗, Alex Wang∗,

Jonathan Stringer∗, Pravin Shelar∗, Keith Amidon†, Martı́n Casado∗

∗VMware †Awake Networks

Operational Systems Track

Abstract

We describe the design and implementation of Open

vSwitch, a multi-layer, open source virtual switch for all

major hypervisor platforms. Open vSwitch was designed

de novo for networking in virtual environments, result-

ing in major design departures from traditional software

switching architectures. We detail the advanced flow

classification and caching techniques that Open vSwitch

uses to optimize its operations and conserve hypervisor

resources. We evaluate Open vSwitch performance, draw-

ing from our deployment experiences over the past seven

years of using and improving Open vSwitch.

1 Introduction

Virtualization has changed the way we do computing

over the past 15 years; for instance, many datacenters are

entirely virtualized to provide quick provisioning, spill-

over to the cloud, and improved availability during periods

of disaster recovery. While virtualization is still to reach

all types of workloads, the number of virtual machines

has already exceeded the number of servers and further

virtualization shows no signs of stopping [1].

The rise of server virtualization has brought with it a

fundamental shift in datacenter networking. A new net-

work access layer has emerged in which most network

ports are virtual, not physical [5] – and therefore, the

first hop switch for workloads increasingly often resides

within the hypervisor. In the early days, these hypervi-

sor “vSwitches” were primarily concerned with provid-

ing basic network connectivity. In effect, they simply

mimicked their ToR cousins by extending physical L2

networks to resident virtual machines. As virtualized

workloads proliferated, limits of this approach became

evident: reconfiguring and preparing a physical network

for new workloads slows their provisioning, and coupling

workloads with physical L2 segments severely limits their

mobility and scalability to that of the underlying network.

These pressures resulted in the emergence of network

virtualization [19]. In network virtualization, virtual

switches become the primary provider of network ser-

vices for VMs, leaving physical datacenter networks with

transportation of IP tunneled packets between hypervi-

sors. This approach allows the virtual networks to be

decoupled from their underlying physical networks, and

by leveraging the flexibility of general purpose proces-

sors, virtual switches can provide VMs, their tenants, and

administrators with logical network abstractions, services

and tools identical to dedicated physical networks.

Network virtualization demands a capable virtual

switch – forwarding functionality must be wired on a

per virtual port basis to match logical network abstrac-

tions configured by administrators. Implementation of

these abstractions, across hypervisors, also greatly ben-

efits from fine-grained centralized coordination. This

approach starkly contrasts with early virtual switches for

which a static, mostly hard-coded forwarding pipelines

had been completely sufficient to provide virtual machines

with L2 connectivity to physical networks.

It was this context: the increasing complexity of vir-

tual networking, emergence of network virtualization, and

limitations of existing virtual switches, that allowed Open

vSwitch to quickly gain popularity. Today, on Linux, its

original platform, Open vSwitch works with most hyper-

visors and container systems, including Xen, KVM, and

Docker. Open vSwitch also works “out of the box” on the

FreeBSD and NetBSD operating systems and ports to the

VMware ESXi and Microsoft Hyper-V hypervisors are

underway.In this paper, we describe the design and implementa-

tion of Open vSwitch [26, 29]. The key elements of its

design, revolve around the performance required by the

production environments in which Open vSwitch is com-

monly deployed, and the programmability demanded by

network virtualization. Unlike traditional network appli-

ances, whether software or hardware, which achieve high

performance through specialization, Open vSwitch, by

1

USENIX NSDI, 2015

Page 36: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Open vSwitch

Hypervisor

VM1 VM2 VMN…

pNICvNIC

vNIC

vNIC

pSwitch

vSw

Page 37: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Open vSwitch

Hypervisor

VM1 VM2 VMN…

pNICvNIC

vNIC

vNIC

pSwitch

vSwuser space

kernel

Page 38: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Open vSwitch

Hypervisor

VM1 VM2 VMN…

pNICvNIC

vNIC

vNIC

pSwitch

vSwuser space

kernel

decision-making “smarts”

Page 39: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Open vSwitch

Hypervisor

VM1 VM2 VMN…

pNICvNIC

vNIC

vNIC

pSwitch

vSwuser space

kernel

decision-making “smarts”

simple, fast forwarding

Page 40: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

Page 41: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

Page 42: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

srcMAC dstMAC action dstIP dstTCPPort action

Page 43: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

srcMAC dstMAC action dstIP dstTCPPort action

Page 44: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

srcMAC dstMAC dstIP dstTCPPort action

Inside Open vSwitch

userspace

kernel

srcMAC dstMAC action dstIP dstTCPPort action

Page 45: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

srcMAC dstMAC action dstIP dstTCPPort action

srcMAC dstMAC dstIP dstTCPPort action

Page 46: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

srcMAC dstMAC action dstIP dstTCPPort action

srcMAC dstMAC dstIP dstTCPPort action

Page 47: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

srcMAC dstMAC action dstIP dstTCPPort action

srcMAC dstMAC dstIP dstTCPPort action

hash-key flow-table-entrycache

Page 48: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

userspace

kernel

srcMAC dstMAC action dstIP dstTCPPort action

srcMAC dstMAC dstIP dstTCPPort action

hash-key flow-table-entrycache

hash-key = hash (srcMAC, dstMAC, dstIP, dstTCPPort)

Page 49: Server virtualization - ETH Z · PDF filevirtual NIC Server virtualization Hypervisor VM1 VM 2  VM N pNIC Physical NIC vNIC vNIC vNIC

Inside Open vSwitch

10 100 1000 10000

1

10

100

CPU Load (%)

Kernel misses / second

[The Design and Implementation of Open vSwitch. Pfaff et. al, USENIX NSDI 2015]