I have 2 physical CPU (each one is quad core) and hyperthreading is enabled. Task manager shows 16 logical processors. Current maxdop setting is default to zero.
When parallelism is used, if available all 16 logical processors will be used and thereof 16 schedulers can be used to span the query. To clarify when query optimizer uses parallelism (especially when hyperthreading is enabled); does it considers available logical cores and not physical cores?
When SQL Server generates a parallel plan, it does not include the DOP at which it will be executed every time. The plan simply includes parallel operators, and the DOP is selected dynamically when the query is executed, based on factors such as server load, and limitations like MAXDOP settings/hints.
While SQL Server is NUMA-aware, AFAIK it’s not able to distinguish between a regular core and a Hyperthreaded core. They’re all just logical processors.
If your workload benefits from parallel queries running on as much CPU horsepower as you can get, experiment with turning Hyperthreading off to see if it makes a difference. Hyperthreading is great for OLTP where there are lots of concurrent connections with short requests, but maybe not so much in your situation. You’ll have to test.