HT might not even be the best idea if you need to rely on those threads.
One of the first things that I do when I get a new system is to disable hyperthreading - and I've done this since when HT first appeared.
On a case-by-case basis, I may enable hyperthreading. Those cases are when the system spends significant time with all physical cores busy. If you don't have significant periods of time with 100% CPU usage, hyperthreading can hurt your performance. Even if you do hit over 100%, hyperthreading is often only a mild benefit.
On Linux you can dynamically enable/disable logical CPUs by writing to the
/sys filesystem.
echo 0 > /sys/devices/system/cpu/cpu113/online
will instantly remove logical CPU 113 from the system. The command
echo 1 > /sys/devices/system/cpu/cpu113/online
will put logical CPU 113 back online.
On a typical Linux system the "htop" command will show core usage. For example, it may show:
(For some reason, "htop" numbers CPUs from 1 to N, whereas most tools number them from 0 to N-1.)
In this screenshot, CPUs 1 to 72 are the "physical" cores, and CPUs 73 to 144 are the HT "second class" cores. (Core 73 is sharing core 1 resources.) If you iterate the command
echo 0 > /sys/devices/system/cpu/cpu$idx/online
from $idx=72 to $idx=143 - you'll instantly disable hyperthreading (until the next boot). Write a "1", and instantly the logical core is back.
I've tested quite a few workloads with and without HT using this technique - and HT is seldom a big win.
Also note that different systems enumerate cores differently. I think that Windows puts logical core 0 and logical core 1 on the same physical core (and logical core 142 and logical core 143 on the same physical core).