6

I have looked everyware and read a bunch of documentation on this but haven't found a direct answer so here it goes:

There is a setting in the "Resources" Tab in vCenter that lets you configure Hyper-threading Core Sharing. I have this set to "ANY".

My question is with Scheduling Affinity. What happens if I leave the text field blank where you would assign specific cores?

Does VMWare handle the hyper-threading across all logical cores or does this disable hyper-threading?

Note: the Scheduling Affinity Group Box says

hyperthreading status: active
available CPUs: ## (Logical CPUs)

5
  • This is a bit of an X-Y Problem question, since your real goal is to comply with Adobe ColdFusion licensing. What have you purchased license-wise, and what is the configuration of your ESXi host hardware?
    – ewwhite
    Apr 23, 2015 at 18:29
  • The configuration for HT on the Physical Host is Enabled, Logical Processors are 40. CF requires the count of all logical processors per VM when HT is used. I need to identify that HT is being utilized on the VM. It seams to me that HT is infact being used on the VM but is not configuraed with granularity as the "Scheduling Affinity" is blank. So all logical cores are shared in my configuration and this sharing is managed by VMWare, does that sound like a true statement in my case?
    – Mike Myers
    Apr 23, 2015 at 18:56
  • How many cores is CF licensed for?
    – ewwhite
    Apr 23, 2015 at 19:02
  • I'm working through that with a Adobe rep to make sure our environment is true.
    – Mike Myers
    Apr 23, 2015 at 19:03
  • @Everyone. I appreciate everyone's input, they are all good answers. I am going to mark one correct because it defines it for me. The fact that Hyper Sharing and Scheduling Affinity were called out as separate items lead me to find that my initial understanding was correct. I found from a verbal source that; If HT is enabled at the global level, no affinity is assigned and hyper sharing is set to any at the VM level, then all logical cores are used.
    – Mike Myers
    Apr 23, 2015 at 19:09

3 Answers 3

4

The UI may be confusing here, but Hyperthreaded Core Sharing and the Scheduling Affinity are separate items.

  • Hyper threading Sharing is just finer control over the HT options.
  • The Scheduling Affinity dialog displays Hyperthreading status (which is controlled at the hardware BIOS level) and then allows you to specify taskset-style CPU affinity masks.

enter image description here

Hyperthreading Sharing

The options are:

Any – (default) The virtual CPUs of this virtual machine can freely share cores with other virtual CPUs of this or other virtual machines.

None – The virtual CPUs of this virtual machine have exclusive use of a processor core whenever they are scheduled to it. The other hyperthread of the core is “halted” while this virtual machine is using the core.

Internal – On a virtual machine with exactly two virtual processors, the two virtual processors are allowed to share one physical core (at the discretion of the ESXi scheduler), but this virtual machine never shares a core with any other virtual machine. If this virtual machine has any other number of processors than two, this setting is the same as the None setting.


In either case, I don't recommend changing any of these settings in 99% of use cases as you run the risk of performance problems or increased contention. The Scheduling Affinity box should be blank.

Is there a particular effect or situation you're trying to deal with?


I just checked the language of the Adobe ColdFusion license. For your use case, "CPU" means physical socket (which may be multi-core). The licenses are sold in 2-CPU quantities. So you need one license per dual-socket ESXi host.

6
  • I need to determine the logical cores used for HT per VM for licensing purposes. Since HT is enabled at the Host level (on the physical ESXi box) and is enabled in the VM settings then HT is active and being used across all VM's using the number of logical cpus define in scheduling affinity, Correct?
    – Mike Myers
    Apr 23, 2015 at 14:44
  • VMware Licensing is based on no. of CPUs, not based on cores or logical cores.
    – Amir
    Apr 23, 2015 at 14:49
  • @Amir, I don't think he's worried about vSphere licensing, but rather a virtualized application which has licensing restrictions.
    – GregL
    Apr 23, 2015 at 14:55
  • @MikeMyers: Yes, that's right.
    – GregL
    Apr 23, 2015 at 14:56
  • @MikeMyers What application? More detail is always better.
    – ewwhite
    Apr 23, 2015 at 14:58
1

The default for all virtual machines on a hyperthreaded system is ANY. The virtual CPUs of a virtual machine with this setting can freely share cores with other virtual CPUs from this or any other virtual machine at any time. Changing this settings can cause performance issues and you won't really be using the benefits of it. Also, Hyperthreading depends on processor type and is enabled in System bios.

1
  • so i can expect that if i have 40 logical processors that all 40 are used in hyper threading if mode = any and scheduled affinity is left blank. Correct?
    – Mike Myers
    Apr 23, 2015 at 15:58
0

The activation of Hyperthreading is set at the host level, but the decision of whether or not a given VM uses HT is set at the VM level.

As such, leaving the Scheduling Affinity box blank won't have any effect if Hyper-threading Core Sharing is set to ANY.

2
  • So are you saying then that hyperthreading is not being used with the VM if affinity is blank? This is where my confusion is.
    – Mike Myers
    Apr 23, 2015 at 15:57
  • I'm saying that having HT enabled is a seperate issue altogether from those settings. HT is set globally at the host level, and each VM on that node can be configured what to do with the threads as you want. So, in your case, HT is enabled (based on the hyperthreading status: active bit of your post), and the VM in question is going to freely share cores with other virtual CPUs of this or other virtual machines.
    – GregL
    Apr 23, 2015 at 17:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .