You are on page 1of 9

Performance Study

10Gbps Networking Performance
VMware® ESX 3.5 Update 1
With increasing number of CPU cores in today’s computers and with high consolidation ratios combined with  the high bandwidth requirements of today’s applications, the total I/O load on a server is substantial. Single  1Gbps network cards are unable to support the demands of these applications, and multiple NICs are often  impractical because the number of ports utilized on the host and on the network switches. Now 10Gbps  Ethernet adapters offer a solution that provides much higher bandwidth while using fewer ports on the hosts  and switches. Support for 10Gbps networking devices was introduced in ESX 3.5. Features such as TCP segmentation offload  (TSO), jumbo frames, and multiple receive queues were introduced to efficiently use 10Gbps devices. ESX 3.5  Update 1 added support for PCI‐E–based Intel Oplin 10Gbps Ethernet adapters to ESX.  In this paper, we present the following results: A single one‐vCPU virtual machine can drive 8Gbps of traffic on the send path and 4Gbps traffic on the  receive path when using standard MTU (1500 byte) frames. Using jumbo frames, a single virtual machine can saturate a 10Gbps link on the transmit path and can  receive network traffic at rates up to 5.7Gbps. Both transmit and receive performance scale very well with increasing load on the ESX host. Even on hosts with high consolidation ratios, all virtual machines get a fair share of the available receive  and transmit bandwidth. This paper covers the following topics: “Performance Enhancements in ESX 3.5” on page 2 “Benchmarking Methodology” on page 2 “Standard MTU Performance” on page 4 “Jumbo Frame Performance” on page 5 “Performance Scalability with Multiple Virtual Machines” on page 6 “Conclusion” on page 8 “Resources” on page 9

Copyright © 2008 VMware, Inc. All rights reserved.


 including support for  jumbo frames and TSO for Enhanced VMXNET devices. Table 1.  such as the socket size and the message size. which acts as a data sender Netserver process. that allows the CPU‐intensive task of segmenting  large TCP packets (up to 64KB) to be offloaded to the hardware. Jumbo frames are large Ethernet frames.  Benchmarking Methodology We used the network benchmarking tool netperf 2. for the tests. Because the guest operating system can now  send packets larger than the standard MTU to ESX. Netperf has a client‐server model and comprises the following: Netperf client.93GHz 16GB RAM Intel 82598 XF 10Gbps dual‐port  adapter Client machine HP DL 380 G5 2 quad‐core Xeon X5355 at 2.el5  Windows Server 2003 SP2 Enterprise Edition  64‐bit 1 virtual CPU 512MB RAM Virtual device: Enhanced VMXNET For tests using both single and multiple virtual machines. see “Resources” on page 9. typically  9000 bytes. we used five simultaneous netperf sessions per  virtual machine.5 also introduced support for NetQueue. the device can use multiple physical CPU cores for processing packets destined for different virtual  machines on the host.el5  Red Hat Enterprise Linux 5 Update 1 AS 64‐bit  kernel: 2.5 Update 1 Red Hat Enterprise Linux 5 Update 1 AS 64‐bit  kernel: 2.10Gbps Networking Performance Performance Enhancements in ESX 3. which are larger than the standard Ethernet MTU (maximum transfer unit) of 1500 bytes. because a single session is unable to saturate a 10Gbps  link even when ample CPU cycles are available. which acts as a receiver To check for network performance under different configurations. see the Netperf Manual. Multiple netperf sessions are needed.6. Inc. For more details on netperf. This boosts the networking performance on the receive path (which traditionally has  higher costs than the transmit path) when multiple virtual machines are running on the same host. Copyright © 2008 VMware. Benchmark Test Configuration Hardware ESX  HP DL 580 G5 4 quad‐core Xeon X7350 at 2.66GHz  16GB RAM Intel 82598 XF 10Gbps dual‐port  adapter Software ESX  Client machine Virtual machines ESX 3. the processing overheads on the transmit path are greatly  reduced. netperf allows you to specify parameters. The NetQueue API allows a NIC driver to have multiple  queues for processing incoming packets on different physical CPU cores. 2 . and end‐to‐end latencies.  using bulk transfers.18‐53. It includes support to measure TCP and UDP throughput.5.  TSO is a feature.  ESX 3. widely supported by today’s network cards.5 A number of enhancements have been integrated into the networking code of ESX 3.4.  For a link to the manual.2 for all the tests.6. Guest  operating systems using jumbo frames need fewer packets to transfer large amounts of data and can achieve  higher throughputs and lower CPU utilization than guests using packets with the standard MTU size. Hence. Netperf measures unidirectional  network performance for TCP and UDP traffic. on a machine with MSI‐X  support.18‐53. All rights reserved.

vmx file for each virtual machine: scsi0:0. All virtual machines used for the  experiments used a uniprocessor kernel or HAL and were configured with one virtual CPU. We booted the virtual machines in nonpersistent mode by adding the following line  to the . For more details on enabling NetQueue. see  “Resources” on page 9. instead of creating 15 clones of the original virtual machines. using ifconfig eth1 mtu 9000 NOTE   It is important that there is no mismatch of MTUs along a given link. For the scaling tests using multiple virtual machines. We configured the Intel Oplin driver (ixgbe) to be loaded with MSI‐X based interrupt and 16 receive queues  on the test interface and a single queue on the second interface of the dual‐port NIC by using the following  command: esxcfg-module -s "InterruptType=2. Inc. 3 . we increased the Pending Tx Packet queue size from the  default value of 200 to 500 using VI Client (Configuration > Advanced Settings > Net >  Net. we  used nonpersistent disks.2 VMDQ=16.1" ixgbe For the changes to come into effect.” For a link. To enable jumbo frames. by setting Device Manager > Network adapters > VMware PCI  Ethernet Adapter > Properties > Advanced > MTU to 9000 In the Linux virtual machine.10Gbps Networking Performance The details of the experimental configuration are presented in Table 1. Because 16 virtual machines sending a large number of small packets can easily overflow the default queues  on the host.MaxNetifTxQueueLen). All virtual  machines were configured with 512MB of RAM and used the Enhanced VMXNET virtual device. using esxcfg-vswitch -m 9000 vSwitch1 In the Windows virtual machine. we needed to reboot the ESX host.  the MTU was set to 9000 in the following places: In the client.netNetqueueEnabled). see “Performance  Comparison of Virtual Network Devices. All changes to such a virtual  machine are lost after the virtual machine powers down. We pinned the Oplin interrupt vector (0xb1 in our case) to the adjoining core by running the  following command in ESX: echo "move 0xb1 2" > /proc/vmware/intr-tracker For the tests using multiple virtual machines. All rights reserved. we enabled NetQueue using VI Client (Configuration >  Advanced Settings > VMkernel > VMkernel.mode = independent-nonpersistent In this way. using ifconfig eth1 mtu 9000 On the ESX host. TSO was enabled by default in the virtual machines as well as on the client machine. Copyright © 2008 VMware. We pinned the virtual  machine to physical CPU 3 using VI Client (VM > Edit Settings > Resources > Advanced CPU > Scheduling  affinity). To  understand the performance difference between e1000 and vmxnet virtual devices. we could boot multiple virtual machines from the same virtual disk. For tests using a single virtual machine.” For a link.Boot. for tests using multiple virtual machines. see “Resources” on page 9. for minimal variance in the experiments.  see “Enabling Support for NetQueue on the Intel 82598 10 Gigabit Ethernet Controller. both the virtual machine and  physical NIC interrupt vectors were pinned to two adjoining cores on the same CPU.

 the  run lengths were increased to two minutes to compensate for the skew in starting experiments simultaneously  in as many as 16 virtual machines.  The network performance between two virtual machines on the same host is independent of physical NIC  speeds and is discussed in detail in “Networking Performance in VMware ESX Server 3. 4 . For the  receive tests. On the receive path. and then with jumbo frames enabled. Standard MTU Performance Figure 2 shows the TCP throughput observed for Linux and Windows one‐vCPU virtual machines  transmitting and receiving without using Jumbo Frames. whereas Windows virtual machines are limited to 3Gbps of traffic. This paper does not discuss the performance when two virtual machines are running on the same ESX host. because the processing  overheads on the receive path are higher than those on the transmit path. with current hardware.10Gbps Networking Performance Figure 1. We ran two sets of throughput tests—first  without jumbo frames. see  “Resources” on page 9. For the tests using a single virtual machine. With either operating system.5. The receive throughput is  usually lower than the transmit throughput for the same network configuration. Linux virtual machines can receive 4Gbps of  traffic. Test Setup for Send Test from Virtual Machine to Native Environment guest (virtual machine) netperf virtual switch ESX host client machine netserver crossover cable Figure 1 shows the test configuration for the send tests in which a virtual machine is sending data. Copyright © 2008 VMware. a single uniprocessor  virtual machine can drive approximately 8Gbps of traffic. we swapped the netperf and netserver processes. All rights reserved. Using a large socket size and a large message size  helps transmit performance significantly. all  reported numbers are the average of three one‐minute runs. This difference in performance can  be attributed to the differences in the TCP/IP stacks of the two operating systems.” For a link. For the tests using multiple virtual machines. Thus. Inc. a one‐vCPU virtual machine can drive 8Gbps of traffic on the transmit path and  4Gbps on the receive path.

64KB 512B 4KB 512B 8KB 16KB 64KB Netperf configuration (Socket size . Similarly. 5 . irrespective of the message sizes being used for the test. the throughput for Linux virtual machines increases by up to 40 percent over the standard  MTU case. As the graphs show. Inc. For  jumbo frame tests. Copyright © 2008 VMware.64KB .64KB .8KB . Windows  throughput remains nearly constant for all the network configurations. with jumbo frames. We have observed that Windows receive performance is adversely affected by socket sizes greater  than 64KB.10Gbps Networking Performance Figure 2.Message size) Transmit Receive Linux Windows Jumbo Frame Performance Though the transmit throughput using the standard MTU (1500 bytes) packets comes close to the native  throughput. Jumbo frames can help reduce some processing overheads because  large Ethernet frames result in few packets. with a 128KB socket. a single uniprocessor virtual machine is CPU limited and cannot saturate a 10Gbps link. we used 128KB sockets instead of 8KB sockets because most operating systems see benefits  from jumbo frames when using large socket sizes.64KB .64KB . the Linux virtual  machine is able to saturate the 10Gbps link.8KB . Thus. as can be seen in the graph. Single Virtual Machine Performance with 1500-byte Packets 9 8 Throughput (Gbps) 7 6 5 4 3 2 1 0 8KB . All rights reserved.  receive throughput is limited to 4Gbps. a single virtual machine can saturate a 10Gbps link on the transmit path and its  receive performance can improve by up to 40 percent in some cases.  Figure 3 shows the throughput results for one‐vCPU virtual machines using 9000 byte jumbo frames.  On the receive path.64KB .64KB .64KB 512B 4KB 512B 8KB 16KB 64KB 8KB .

  the bandwidth requirements of most applications are low. Multiple Virtual Machine Transmit Performance 10 9 8 Throughput (Gbps) 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Number of virtual machines Linux 8KB .8KB -16KB -64KB 64KB . These virtual machines share the host CPU  and memory as well as the storage and networking devices.512B Linux 64KB .16KB Windows 64KB .8KB -16KB -64KB Netperf configuration (Socket size .64KB . Figure 4.512B Linux 64KB .512B Windows 8KB . Single Virtual Machine Performance with 9000-byte Packets 10 9 8 Throughput (Gbps) 7 6 5 4 3 2 1 0 64KB .64KB . In real world deployments.10Gbps Networking Performance Figure 3. Ideally. as virtual machines are  added to the system. 6 .Message size) Transmit Receive Linux Windows Performance Scalability with Multiple Virtual Machines One of the primary advantages of using virtualization is the ability to consolidate multiple physical servers  into multiple virtual machines running on a single physical host. Figure 4 and Figure 5 show the results from the transmit  scaling and receive scaling tests.512B Windows 64KB . in which all virtual machines are simultaneously stressing the network.16KB Copyright © 2008 VMware. we ran  tests with as many as 16 virtual machines sharing the same physical NIC. All rights reserved. and hence consolidation ratios will be higher.128KB 128KB 128KB 8KB 16KB 64KB . respectively. Inc. The results presented in this section simulate the worst case  scenario. the throughput should increase linearly and then stabilize after a certain point (and not  decrease as the load is increased on the system). To understand the performance in such a scenario.64KB . We assume that a large number of small virtual  machines will share a single physical 10Gbps NIC.64KB .128KB 128KB 128KB 8KB 16KB 64KB .

 this is a result of the fact that Red Hat Enterprise Linux 5 running natively (on the client)  cannot push beyond 6Gbps when using small sockets and small message sizes. To  confirm this. The Linux small socket size and small message size case does not perform as well as the others and. Inc. throughput is usually limited by the TCP/IP stack or  by the processing power of the single client. ESX scales well with an increasing number of virtual machines on the system. All lines on the graph show a similar trend—the throughput increases linearly until it reaches  line rates and remains constant until the load reaches seven virtual machines.512B Windows 8KB . we saw a very gradual continuous decline as the load in increased to 16 virtual  machines. which is receiving all traffic from multiple virtual machines. The large socket size cases show that  VMware Infrastructure 3.10Gbps Networking Performance Figure 4 shows how the transmit performance scales with an increasing number of virtual machines. All rights reserved. Our tests show the worst  case scenario.5 scales well and that networking throughput increases until it reaches the saturation  point (9.512B Linux 64KB .512B Windows 64KB .512B Linux 64KB . In the previous sections. three virtual machines are enough to saturate the link in  the receive case.16KB Figure 5 shows how performance scales on the receive path with an increasing number of virtual machines. we ran Red Hat Enterprise Linux 5 natively on the same hardware (with 16 physical cores) and  found that it can drive only approximately 6Gbps of traffic when using an 8KB socket size and 512 byte  message size. Performance  should be better in real world deployments in which it is rare that all virtual machines booted on a system are  pushing traffic at the maximum rate at the same time. As we increased to more than  seven virtual machines. Multiple Virtual Machine Receive Performance 10 9 8 Throughput (Gbps) 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Number of virtual machines Linux 8KB . we  showed that a single virtual machine can drive up to 8Gbps of traffic. Figure 5.4Gbps for standard MTU) and remains constant despite increasing load on the system.  as mentioned earlier. 7 . In tests with  small socket sizes and small message sizes. Thus. in which all virtual machines are running a bandwidth‐intensive application. In such configurations. Virtual machines in typical customer environments  usually have much lower throughput requirements and can scale to a much larger numbers of virtual  machines. throughput increases linearly up to a few virtual machines and  then stabilizes at a lower value. Copyright © 2008 VMware. For both  Linux and Windows. two virtual machines are enough to saturate a 10Gbps link.  As expected from the single virtual machine results.16KB Windows 64KB .

Conclusion The results presented in the previous sections show that virtual machines running on ESX 3.  Thus.5 Update 1 can  efficiently share and saturate 10Gbps Ethernet links.  Our detailed scaling tests show that ESX scales very well with increasing load on the system and fairly  allocates bandwidth to all the booted virtual machines. The  relatively flat lines indicate that even when the system is highly loaded.10Gbps Networking Performance Figure 6. Scaling on the receive path is similar. Jumbo frames can also boost receive throughput by up to 40 percent. Throughput Fairness in Test with 15 Virtual Machines 800 700 600 Throughput (Mbps) 500 400 300 200 100 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Virtual machines Linux Rx Linux Tx Windows Rx Windows Tx We also investigated fairness among the TCP flows across all virtual machines. the average throughput per virtual machine is 627Mbps and the  standard deviation is a mere 17Mbps. 8 . ESX 3. Two virtual machines can easily saturate a 10Gbps link  (the practical limit is 9. allowing a single virtual  machine to receive traffic at rates up to 5. in which there are 75  TCP connections (five per virtual machines). Copyright © 2008 VMware. with  throughput increasing linearly until we achieve line rate and then gracefully decreasing as system load and  resource contention increase. For example. A single uniprocessor virtual machine can push as much  as 8Gbps of traffic with frames that use the standard MTU size and can saturate a 10Gbps link when using  jumbo frames.5 Update 1 supports the latest generation of 10Gbps NICs with minimal overheads and allows  high virtual machine consolidation ratios while being fair to all virtual machines sharing the NICs and  maintaining 10Gbps line rates. all virtual machines get a fair share of  the bandwidth.3Gbps for packets that use the standard MTU size because of protocol overheads). All rights reserved. Figure 6 shows the average  throughput per virtual machine when using a configuration with 64KB sockets and 16KB messages. Inc.7Gbps. and  the throughput remains constant as we add more virtual machines. in the Windows transmit case with 15 virtual machines.

806.117.886. Copyright © 2008 VMware.356.999. Patent Nos.433.679. All other marks and names mentioned herein may be trademarks of their respective companies.102. 7.136. All rights reserved.492.002.481. 3401 Hillview Ave. patents pending. 7.683.277. 7.412.966.vmware.487. 7.820.434.html “Networking Performance: VMware ESX Server 3. 7. 6.998.10Gbps Networking Performance Resources “Enabling Support for NetQueue on the Intel 82598 10 Gigabit Ethernet Controller“ http://kb.281.089. 7. 7. 7. Inc..377.vmware.428. 7.601.636.925.netperf. 7.030.156. Palo Alto.961.” http://www.vmware. 7.022.278. VMware. 6. submit your feedback to: docfeedback@vmware.vmware. Protected by one or more of 6.269. Revision: 20081104 Item: PS-071-PRD-01-01 9 . and VMotion are registered trademarks or trademarks of VMware.711. 7.260. 6.242.496. 6. 7. 6. 7. 7. 6.290. in the United States and/or other jurisdictions. CA 94304 www.111.598. 6.149.735.699.815.710. 6. Inc.951.222.702.672. 7. 7.424. 7.111.704.pdf Netperf manual  http://www.789. Inc. 7.558.412. 7.409. 6.413. 7.277.275. and VMware. Virtual SMP.S.795.289. “Performance Comparison of Virtual Network Devices” www.944. 6. 7. the VMware “boxes” logo and design.847.145.pdf If you have comments about this documentation.