We started to notice that several VNF (Virtual Network Function) vendors were recommending to turn off (disable) Hyper-threading on hypervisors. But why? They claimed it helped their performance.
Throwing a switch and disabling this, means that the number of cores that are exposed to users, is cut in half. So a 24 core CPU, has 48 cores if Hyper-threading is enabled, and only has 24 cores if it is disabled.
This post isn't meant to go into the depths of Hyper-threading itself. The question we had, was whether disabling it or enabling it, affected performance, and to what degree.
We ran a benchmark that was comprised of three "layers".
- Non-Hyperthreaded (24 cores) vs Hyperthreaded (48 cores)
- Increasing vCPU of the Benchmark VM (increments of eight: 1,8,16,24)
- Each test ran several Sysbench tests with increasing threads (1,2,4,8,16,32)
The servers we are running on, include: Cisco M5 (512G RAM, 24 vCPU)
We collected the results in Excel, and ran a Pivot Char graph on it, and this is what we found (below).
It appears to me, that Hyperthreading starts to look promising when two things happen:
- vCPU resources on the VM increase past a threshold of about 8 vCPU.
- an application is multi-threaded, and is launching 16 or more threads.
Notice that on an 8 vCPU virtual machine, the "magic number" is 8 threads. On a 16 vCPU virtual machine, you do not see hyperthreading become an advantage until 16 threads are launched. On a 24 vCPU system, we start to see hyperthreading become favorable at about 16 threads and higher.
BUT - if the threads are low, between 1 and about 8, the hyperthreading works against you.
No comments:
Post a Comment