-
Notifications
You must be signed in to change notification settings - Fork 1
/
evaluate.tex
57 lines (35 loc) · 2.93 KB
/
evaluate.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
\section{Implementation and Evaluation.}
\subsection{Implementation.}
In this section, we describe the implementation of NIMBUS following the structure in design section.
\parae{VMSentry.}
To improve the overall performance, we tailored version 3.0 linux kernel and build a system image with the help of embedded linux tools. In order to further improve the network performance, we configured the kernel to support para-virtualized drivers.
\parae{Hypervisor.}
We use KVM as the virtualization platform and the hypervisor operating system is Ubuntu Server 12.04. As mentioned in previous section, all the network interface of VMSentry is connected to a bridged network. For the network bridge, we use a modified version of Open VSwitch, which support uniform sampling.
\parae{VM management.}
We implement monitor script that connects the serial console of each VMSentry and do the following job: monitor workload; and allocate new VMSentry on demand.
\parae{NIMBUS Controller.}
We use ovs-controller to control the traffic.
\subsection{System Benchmarks.}
\parae{Hardware setup.}
The prototype has two servers and one switch interconnected by 10 Gbps links. We use a Dell PowerEdge R815 machine (32 cores and 32GB memory) acting as the traffic generator, and another Dell PowerEdge R815 machine (48 cores and 32GB memory) as the traffic receiver, each with one 10GE NIC connecting to the 10GE physical switch. We install Ubuntu Server 12.04 as hypervisor on the receiver machine that hosts VMs. Each VM has 1 core and 256 MB memory, and runs the slim Linux.
\begin{figure}[t!]
\centering
\includegraphics[width=\linewidth]{figs/instantiation.pdf}
\vspace{-0.32in}
\caption{\small Breakdown of VM instantiation time.}
\vspace{-0.0in}
\label{fig:break}
\end{figure}
\begin{figure}[t!]
\centering
\includegraphics[width=\linewidth]{figs/CPU.pdf}
\vspace{-0.32in}
\caption{\small CPU Overhead.}
\vspace{-0.0in}
\label{fig:overhead}
\end{figure}
\parae{Profiling VM instantiation}
To have a better understanding of the factors that influence the instantiation time, we analysed the code of virtualization platform. We get the breakdown of instantiation time for the first VMSentry via the clock\_gettime() function, and record them using the printf() function.
The result in Figure ~\ref{fig:break} shows that, instantiating a new VM from scratch can be done within 300 ms. And the main part of instantiation time are network setup and loading snapshot.
\parae{CPU Overhead}
For this part, we use the traffic generator to send UDP packet to the receiver. We tested two different settings, the first one is using one percent sample rate at Open VSwitch, and the other one is using five percent sample rate. As shown in the Figure ~\ref{fig:overhead}, the CPU utilization is approximately proportional to sampled traffic. The performance of VM is limited by the emulated network driver. There is much more room to improve the VM performance with para-virtualized drivers enabled.