Originally Posted by Blameless
This is exactly the opposite of what SMT/hyperthreading is.
Moving to SMT rather than CMT allows fewer, stronger, cores to achieve the same level of multi-threaded performance as more weaker ones. SMT has no performance penalty to anything unless the additional logical cores are actually used.
There is no distinction between the logical CPUs presented for each core. There are finite execution and cache resources, and heavily utilizing one logical core will reduce the performance the other can provide, but a core with with SMT enabled is no slower than the same core without SMT enabled, if only one logical core is being utilized.
This is not what I've seen..
By and large, unless the program has an affinity mask to tell them otherwise, Windows will keep demanding threads from sharing the same cores as long as possible.
except when both threads requires too much resource on the cores, this rarely happens now a days, but does occur when HT-off performs better than HT-on.
plus dedicated resource is better than shared resource, at least on the performance stand-point.
yes i realize that, though there is a distinction on the scheduler level, at least windows could sort of discern when one logical core is loaded and the other shared logical core can't be fully used.
it could be interpreted as a "ratio" of occupancy i suppose, when the core is lightly loaded on both logical cores the ratio is 50-50, meaning they perform the same.
but if the core is heavily loaded on one logical core the ratio falls, for example 67:33, meaning the other thread will only perform at half the performance compared to the other.
theres also an issue with what threads you can put on the same core, presumably HT can perform better when both threads use the same cached data.
i think i poorly worded it, i mean it like "if 0 is full, next is 1, then 2, etc.", unless otherwise the application requests for more cores.Edited by epic1337 - 7/23/16 at 1:46pm