VMware Cloud Community
barrickd
Contributor
Contributor
Jump to solution

Enable or Disable Hyperthreading

It's my understanding that in previous versions of ESX (v3.0) running on older Intel processors, it was advised to DISABLE hyperthreading in the server BIOS.

We currently have several DL380 G6 servers with dual quad core processors (Intel E5530's) that will be recycled to host our ESX 4 installation. Is it now considered best practice to ENABLE hyperthreading given the processors in these servers while running ESX 4?

thanks

Reply
0 Kudos
1 Solution

Accepted Solutions
sssstew
Enthusiast
Enthusiast
Jump to solution

Yeah its even in Vmwares performance best practices now too :-

http://www.vmware.com/pdf/Perf_Best_Practices_vSphere4.0.pdf

Stew

View solution in original post

Reply
0 Kudos
10 Replies
DSTAVERT
Immortal
Immortal
Jump to solution

Absolutely enable Hyperthreading.

-- David -- VMware Communities Moderator
Reply
0 Kudos
RParker
Immortal
Immortal
Jump to solution

Roger that!

Definately

Reply
0 Kudos
ncarde
Enthusiast
Enthusiast
Jump to solution

Seems like Nehalem and beyond might have changed the thinking on using Hyperthreading again -- haven't been able to find anything specific to this but for pre-Nehalem check out this link for Pros and Cons before you enable:

Hyperthreading

Reply
0 Kudos
mittim12
Immortal
Immortal
Jump to solution

I would enable. See this nice post by Scott Drummonds. http://vpivot.com/2010/03/06/hyper-threading-on-vsphere/






If you found this or any other post helpful please consider the use of the Helpful/Correct buttons to award points

RParker
Immortal
Immortal
Jump to solution

The cons are dwindling. That site points to another that can only come up with 1 con.

And it's not a con, especially with the NEW processors. The L2 and L3 cache are shared. That's not a negative, in fact the NEW processors are slit processors anyway, so hyper threading is what they were designed to do.

The ONLY caveat to hyper threading is APPS. APPS on physical systems see physical devices, therefore they can make calls to the hardware layer, and depending on the compiler it may actually be a detriment. SQL server can take advantage of SMP by utilizing those threads, but some apps cannot, but ironically what programmers and companies will NOT tell you is those apps are poorly written.

For instance,

For / Next loops and do / while loops can be headaches for many people.

If you logically think

If 1 is a number, and a is not

then you can do calculations.

Sounds simple right? Well programmers are lazy most of the time, and they don't do simple checks, so when calculations occur on a NON number (such as SQL) you get abends (abnormal terminations) or code that causes errors, because the software is expecting integers where letters are.

This may seem very basic, but you would be surprised to know that hyper threading is a math intensive path, and you can split numbers (such as complex formulas), but you can't split lines of text... where do you split a word, and know how to put it back together. Math calculations can be done in parallel, stings cannot.

There are a myriad of other examples, I will spare you.

Suffice to say that APPS are the problem, and since Virtual Machines do NOT have access to the hardware layer it doesn't matter if the vCPU are hyper threaded or not. They are ALL identical.

THE ONLY real difference here is ESX can utilize those threads much more efficiently by using 16 instead of 8 if they are available. If they AREN'T available, that is less threads to optimize performance. The early hyper threading days were idle process time. If a CPU is NOT busy it can spawn a thread that is an idle thread (and they were less than 20% of the speed of the processor), now you get VM's with unequal threads.

That's where the problem comes in, NOW ALL the threads, regardless of core speed with the new hyper threading are the same, so why not simply spawn 2 threads instead of one.. the likely hood that you can "choke" a thread is very very low, and all it means is the cache has to cover for a re-read of a CPU instruction.

We are talking cores capable of TRILLIONS of instructions per second. 1 or 2 re-reads is NOT going to make a difference. I can pretty much guarantee that.

Reply
0 Kudos
ncarde
Enthusiast
Enthusiast
Jump to solution

Great discussion here -- many thanks to the OP for the initial question and the great answers provided by those who followed!

Reply
0 Kudos
sssstew
Enthusiast
Enthusiast
Jump to solution

Yeah its even in Vmwares performance best practices now too :-

http://www.vmware.com/pdf/Perf_Best_Practices_vSphere4.0.pdf

Stew
Reply
0 Kudos
barrickd
Contributor
Contributor
Jump to solution

Thank you everyone!

Reply
0 Kudos
jasoncllsystems
Enthusiast
Enthusiast
Jump to solution

I did a quick test and I found with Hyperthreading Enable, my VM run much more faster & better performance.






Regards,

jlchannel

MALAYSIA VMware Communities

http://www.malaysiavm.com

'If you found this or any other answer useful please consider allocating points for helpful or correct answers ***

http://www.malaysiavm.com
Reply
0 Kudos
sssstew
Enthusiast
Enthusiast
Jump to solution

Interesting you should say this Jason, we too have found this. I have started a new thread in this forum to ask everyone else if they have found the same.

Stew
Reply
0 Kudos