This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Speed testing on a GB internet connection: To VM or not to VM

I am lucky enough to live in an area where i was recently able to upgrade my home internet connection to gigabit fiber.  To date I have been running Sophos UTM as a VM on a Dell R710 I picked up on ebay running ESXi.   Unfortunately that machine was topping out at about 120 Mbits/Second using SpeedTest.net as a benchmark.  For reference, my Dell R710 has dual x5660 2.8 GHz Hexacore CPUs.  I decided since I was paying for the high speed service, I should probably be able to actually use it, so I started looking into a system that I could run UTM and get close to the speed of my internet connection.

The system I picked out is as follows:

Motherboard: GIGABYTE GA-Z170N-WIFI
Processor:  Intel Core i7-6700 8M Skylake Quad-Core 3.4 GHz
Memory:  16GB (2 x 8GB) DDR4 SDRAM 2666  (PC4 21300) 
HardDrive: 128 GB M2 SSD
NIC: Intel PRO/1000 Pt Dual Port PCIe Server Adapter (Intel 82571EB Chip)

Even though the motherboard has 2 Intel NICs on it already, I decided I would use the Server adapter because I had it laying around and there have been reports of issues with the Intel l219 based port.  Sure enough neither ESXi nor Sophos UTM would recognize that port out of the box.

I was really hesitant to dedicate the whole system to running UTM though given the great success I have had with ESXi.  There are only 5 of us using the connection, so a quad core hyperthreading CPU was way overkill.  The only question I had was how much performance I would loose due to the virtualization.  I decided to test it out on 3 configurations.

Config 1: UTM running as a VM under ESXi with 2 virtual NICs each connected to a VM switch attached to its own 82571 port
Config 2: UTM running as a VM under ESXi with both 82571 one ports passed directly through to the VM using DirectPath IO
Config 3: UTM running all by itself on the machine without ESXi

VM Software: ESXi version 6.0 VM version 8 VMs.  Each VM was given 6 processors and 8 GB of RAM on 50 GB partitions

I set UTM 9.401-11 up the same on all 3 configurations with:

Intrusion Prevention Engine enabled
Command & Control/Botnet Detection Engine enabled
Web Protection Virus Scanning enabled checking for criminal, nudity, drugs, extremists and nudity.
To test the connection speed I connected a laptop up to UTM and checked its connection speed using speedtest.net.  Speedtest.net gets kind of creaky at gigabit speeds.  To make sure I was testing my setups limiations and not their servers, I hooked my laptop up to the fiber connection immediately before starting the 3 tests and immediately after completing the 3 tests.  I did 5 speed test for each configurations and averaged the results
These are my results (note upload and download speeds are in mbits/sec and ping times are in ms):

Download
Raw Config 1 Config 2 Config 3 Raw
894 423 419 422 907
846 423 419 421 762
884 423 421 422 821
868 424 422 422 835
916 423 421 423 808
Average 881.6 423.2 420.4 422 826.6
Upload
Raw Config 1 Config 2 Config 3 Raw
820 460 501 493 762
800 464 498 494 813
884 461 499 496 838
697 468 496 499 826
819 467 498 498 643
Average 804 464 498.4 496 776.4
Ping
Raw Config 1 Config 2 Config 3 Raw
4 5 3 4 2
2 3 5 4 4
2 3 4 4 4
4 5 4 3 3
2 3 4 4 2
Average 2.8 3.8 4 3.8 3

 

As you can see,  all 3 configurations performed very similarly.  The only real difference was upload speed was hindered a bit by using virtual NICs instead of passthrough NICS.  

I have decided to run ESXi on the server and limit UTM to 3 or maybe 4 processors and 6 to 8 GB of ram and give the rest to my PLEX VM



This thread was automatically locked due to age.
Parents Reply Children
  • Resource pools only compartmentalize resources for scheduling purposes.  There is no way to force multiple CPUs to work as a single thread.  It simply isn't possible.  You could not make a 1 vcpu box consume 16ghz of processing power with cpu resource pools.  Test it out, you will see.  It will spread that one cores worth of gigahertz between different physical cores, but the guest/vCPU will never see more than a cores worth of performance.

  • The handling of the data from a single transfer is clearly a single thread.  When the transfer is happening, The CPU utilization only spikes to show a single core going all out no matter which config I use.  Neither ESXi nor any other OS out there has the ability to split code from a single thread onto multiple cores. The person who figures this out would be very rich indeed as CPUs have essentially been frequency bound for many years now.