Skip to content

Configuring the System for Best Performance

It is a common scenario for system administrators to require the absolute best performance out of their Sunlight.io system. In this section we describe how to configure the best performance mode for VMs to access unparalleled virtual storage and network IOPs in a cluster of nodes.

Achieving 1 Million virtual storage IOPs

Follow the steps outlined above to create virtual networks and datastores. When creating the datastore, make sure that the following settings are enabled:

  1. The Datastore must be created with 'Thick provisioned' option enabled. This ensures that there is no additional block allocaton occuring when writing to new sections of the physical block devices. Note that with thick provisioning enabled you cannot choose any level of overcommit on the datastore. Enable thick provisioning for the DataStore

  2. You must select as many physical drive IOPs per node to support the required aggregate virtual IOPs. This means that in order to achieve 1 Million virtual IOPs there must be at least as many physical storage IOPs available on each node. As an example, each physical Intel P4610 NVMe flash drive can provide over 600K READ IOPs when measured under ideal circumstances. In order to achieve an aggregate of over 1 Million READ IOPs from a single node there must be at least 2 drives selected in the datastore.

  3. When creating the Resource Group, select the 'CPU Pinning' attribute. This ensures that every virtual CPU is pinned to a physical CPU core and therefore helps to avoid scheduling and context switch overheads. Enable CPU pinning

  4. When creating the Resource Group, do not select any overcommit settings for CPU resources, this ensures that there is a 1-to-1 mapping of virtual CPU cores to physical CPU cores. Disable CPU overcommit

  5. When creating the Resource Group, select the 'Optimise for storage latency' option to ensure that the VMs are always placed on a node that has locally optimal physical storage drives. Optimise Resource Group for storage latency

  6. Assign cores from the same CPU socket as the flash drives are physically attached. On the current Sunlight system model this is the second CPU socket. This will provide an extra performance boost to avoid any CPU memory copy overheads and guarantee absolute best performance. Selecting cores on the second CPU socket

  7. Select the newest VM distro type to ensure you have the latest kernel version, on the current release that is Ubuntu 17.10, with a minimum of 8 cores and a minimu of 4GB of memory. Utilising a separate ephemeral drive form the VM root device is also recommended. Creating a performance optimised VM flavour Creating a performance optimised VM

  8. Now login to the new VM and download the following scripts to assist with measuring the best IOPs performance from the second ephemeral drive of the VM: a) Create a directory: mkdir Test b) Change into that directory: cd Test c) Download the following scripts into the directory wget https://performance.sunlight.io/files/fio-3.2 wget https://performance.sunlight.io/files/pin_irq_range.sh wget https://performance.sunlight.io/files/prep_vm.sh wget https://performance.sunlight.io/files/randread.fio wget https://performance.sunlight.io/files/select_irq_range.sh d) Make them executable: chmod +x * e) Now prepare the VM to run the test: ./prep_vm.sh f) and finally run the performance fio test: ./fio-3.2 randread.fio You should see a result like the following per virtual drive fio test output

Achieving lowest network latency between 2 or more VMs

Certain applications require the absolute lowest latency between virtualised workloads in order to guarantee the best performance of an application. The Sunlight.io platform allows you to achieve this by configuring the following parameters:

  1. When creating the virtual networks, ensure that you select all the physical paths available on the cluster of nodes. This ensures that any VMs communicating across the physical switch have as many paths as possible to traverse.

  2. When creating the Resource Group, select the 'CPU Pinning' attribute. This ensures that every virtual CPU is pinned to a physical CPU core and therefore helps to avoid scheduling and context switch overheads.

  3. When creating the Resource Group, do not select any overcommit settings for CPU resources, this ensures that there is a 1-to-1 mapping of virtual CPU cores to physical CPU cores.

  4. For the absolute lowest inter-VM network latency performance you can even deploy VMs on the same compute node and even on the same exact CPU socket to ensure there is absolutely no delay introduced in the hardware by communicating across CPU sockets.

  5. Select the newest VM distro type to ensure you have the latest kernel version, on the current release that is Ubuntu 17.10, with a minimum of 8 cores and a minimu of 4GB of memory.

Achieving highest network throughput between 2 or more VMs

For other classes of applications there may be a requirement to achieve the highest level of throughput between 2 or more virtualised workloads. The Sunlight.io platform allows you to achieve this by configuring the following parameters:

  1. When creating the virtual networks, ensure that you select all the physical paths available on the cluster of nodes. This ensures that any VMs communicating across the physical switch have as many paths as possible to traverse.

  2. When creating the Resource Group, select the 'CPU Pinning' attribute. This ensures that every virtual CPU is pinned to a physical CPU core and therefore helps to avoid scheduling and context switch overheads.

  3. When creating the Resource Group, do not select any overcommit settings for CPU resources, this ensures that there is a 1-to-1 mapping of virtual CPU cores to physical CPU cores.

  4. For the absolute highest inter-VM network throughput performance you can even deploy VMs on the same compute node and even on the same exact CPU socket to ensure there is absolutely no overhead introduced in the hardware by communicating across CPU sockets.

  5. Select the newest VM distro type to ensure you have the latest kernel version, on the current release that is Ubuntu 17.10, with a minimum of 8 cores and a minimu of 4GB of memory. Note that increasing the number of virtual CPU cores will provide a linear increase the amount of data transfer that can be achieved between VMs running on the same physical host. Across physical hosts this is more likely to be limited by the external switch and hardware NIC performance.