You tried with HT enabled vs. disabled?Me. My team and I and our workloads that we ran. (SQL Server)
Were virtual machines involved? If so, how?
You tried with HT enabled vs. disabled?Me. My team and I and our workloads that we ran. (SQL Server)
Is this on a physical appliance or in a virtualized environment?
You tried with HT enabled vs. disabled?
Were virtual machines involved? If so, how?
That would mean you would have to disable HT on a host and migrate the VM to said host to find out if HT gave you such a speed up. That said the VM will still have a certain number of vCPUs allocated to it. A VM with 8 vCPUs on a HT enabled host would use 4 cores and 8 total threads. However, on a host without HT enabled you would get 8 full cores. Only way 4c/8t can be as fast as 8c/8t in threaded applications is if the instructions are small enough that 1/2 or less of the resources on a core are being used. At that point you would in theory get a 100% increase in performance from HT. That just doesn't happen.Tin, no VMs.
By tin you mean bare metal and or physical appliance? Even so your experience is the exception and not the rule. In most cases I have seen the speed up by HT is about 30% as HT allows for more execution units on a physical core to be used. In order to get an 80% speed up you would need your execution units to only be half used.Let me restate myself, perhaps it was misunderstood:
SQL Server running on tin. No VMs. HT gave improvements of up to 80% with no cases of performance loss for the workloads that we ran, which were datawarehouse and ODS loads.
What kind of CPU?SQL Server running on tin. No VMs. HT gave improvements of up to 80%
That is a physical appliance.It wasn't an appliance. They were two servers, exactly the same config. It was initially SQL Server 2008, eventually upgraded all the way to 2017.
When running with HT disabled, is it possible the server was configured to use more threads than there were CPU cores available for it to use (i.e. not being used by anything else)? That's definitely a way I could see it get a disproportionate speedup from using HT - if threads were getting starved out. However, it'd be an artificial case, because the solution would be just to decrease the number of threads and suddenly your non-HT performance would improve.
That for sure is a possibility with only 12c/24t. Where I work we do some cloud hosting and I've seen Server 2008 R2 VMs running Oracle with 28 vCPU. It is very possible that your work load needed more CPU grunt than 12c alone could provide, hence the large increase in performance by HT. If you had 24c your speedup would probably have been 100%.they were dual CPU Xeons, 6C12T per CPU
To be honest unless you have an in RAM DB the storage layer will always be your bottleneck. DBs can get around some of the storage bottlenecks with caching and predictive calls, however, if you make a call to a table it didn't expect then it still has to go to storage.Our bottleneck was always the storage in our daily runs
Nope. Servers ordered from our provider to our specifications. Initially it was supposed to be only used for our DW and reporting, but then over the years it's role expanded to internal file share, and FTP server, one VM for two years, and some other (very!) small applications because other teams "didn't have budget." We also upgraded the machine's RAM once and the storage twice.That is a physical appliance.
I know.To be honest unless you have an in RAM DB the storage layer will always be your bottleneck. DBs can get around some of the storage bottlenecks with caching and predictive calls, however, if you make a call to a table it didn't expect then it still has to go to storage.
So HT was disabled on only one? If so, did you ever check that they indeed performed identically when HT was either enabled or disabled on both?They were two servers, exactly the same config. It was initially SQL Server 2008, eventually upgraded all the way to 2017. I don't recall the exact CPU model, but they were dual CPU Xeons, 6C12T per CPU.
In this case, I wonder if simply increasing the number of threads in your non-HT case could've improved performance. If the threads were blocking on I/O, then having more could increase the effective queue depth, resulting in higher IOPS - thereby netting you more performance. In this case, having more threads scheduled on the HT machine could improve performance beyond what just the HT, itself, is doing.Our bottleneck was always the storage in our daily runs
I'm assuming they were using local disk, age makes me think 10k HDD, instead of a SAN. 24 10k disks will only get you about 3600 IOPS with a max of 6GBps sequential reads. If they were on a SAN it would have been 8Gbps fiber at first so that would have really killed your through put.If the threads were blocking on I/O, then having more could increase the effective queue depth, resulting in higher IOPS - thereby netting you more performance.
Consider the likely hardware era it'd be somewhere between Nehalem and Ivy Bridge most likely (maybe Haswell). Boosting and TDP worked differently than now so there was likely no clockspeed difference between HT on/off like there would be now. That certainly wouldn't make for all of the difference, but it helps.All I'm saying is that it would need further investigation to know if the real differentiator was HT. There's certainly a chance that the IPC in executing your queries was exceptionally low, but I wouldn't expect so.