OpenStack Newton has been recently released. During this cycle we did quite some work on increasing the performance and overall reliability of our Windows and Hyper-V OpenStack compute drivers.
This is the first post in a series where we are going to share some of our Hyper-V vs KVM benchmarking results for this OpenStack release, get ready to be surprised!
To begin with, here’s our setup:
- Controller node, Ubuntu 16.04.1 LTS (default kernel version 4.4.0-45-generic)
- KVM Compute node, Ubuntu 16.04.1 LTS (default kernel version 4.4.0-45-generic)
- Hyper-V Compute node, Windows Server 2012 R2
- Hyper-V Compute node, Windows Server 2016
Hardware Specs (all nodes are identical) | |
---|---|
Processor | Intel(R) Xeon(R) CPU E5-2650 @ 2.00GHz |
Installed memory (RAM) | 128 GB |
Network cards | Chelsio Communications Inc T420-CR 10 Gigabit Ethernet |
Storage | Intel SSDSC2BA200G3T 200GB SATA Solid State Drive |
All the nodes have plain vanilla OS installs with the latest updates.
The Linux hosts have been deployed using DevStack. Here you can find more details about the deployment and configuration.
The Hyper-V compute nodes include the Hyper-V Compute driver.
Configuration
A set of basic steps have been taken to improve performance on both types of hypervisors.
For the KVM Compute node, we followed the official documentation:
In /etc/nova/nova.conf the “cpu_mode” was modified to “host-passthrough”, as follows:
[libvirt]
cpu_mode = host-passthrough
The VHostNet kernel module improves network performance:
modprobe vhost_net
For the Hyper-V Compute nodes, the active power option scheme has been set to “High Performance“:
powercfg.exe /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
Note: in our results, changing the power option scheme brought roughly a 10-15% performance boost.
Rally
We used Rally as a benchmarking tool for the OpenStack deployment, installed on the Controller node.
Our Rally scenarios can be found here. To begin with, just download and run this script, it will install Rally in the “~/rally” virtualenv:
./install_rally.sh –url https://github.com/cloudbase/rally –branch blogpost
If everything ends successfully, a short green message should appear saying how to activate the Rally virtual environment:
source ~/rally/bin/activate
First, you have to provide the details about the OpenStack deployment that you are going to benchmark. A simple way to register an existing deployment in Rally is through the deployment configuration files.
Put your cloud access data into a JSON configuration file (for existing OpenStack deployments we can use “existing.json”) and run the following command to register the deployment in Rally:
rally deployment create –file=existing.json –name=existing
Rally should now be able to list all the images/flavors/networks etc. from the OpenStack deployment:
rally show images
rally show flavors
rally show networks
To run a benchmark test, you need a task configuration file. You can find here the JSON files that we are going to use. Here’s how to start the execution of a task:
rally task start –task boot_and_delete.json –task-args '{"image": "cirros-vhdx", "flavor_name": "m1.tiny"}'
Thanks for reading this first post in our KVM vs Hyper-V series! To add some suspense, benchmarking results will be published in the next entries, starting with part 2!