Are there any methods (linux kernel options, sysctl settings or configurable scheduler modules) that can cause a high priority process/thread to run on a physical processor core with the second (hyper threading) virtual core unscheduled in order to maximize single thread performance (by preventing from competitive situations, not sharing the L1 cache and the possible use of maximum cpu clock - Turbo Boost), while at the same time running lower priority processes/threads on both virtual cores of other physical cores with lower cpu clock to maximize total system throughput ?
In other words: Is it possible to disable hyper threading dynamically based on priority ?
In case there are any CPUs using the process/thread priority to decide which of the two threads on a hyper threading core is allowed to make progress first in a competitive situation, is the linux kernel able to schedule high priority processes/threads such that they share the physical core only with very low priority processes/threads in order to minimize their effect on the other thread ?
While the high priority process is sleeping, both virtual cores of its former physical core should again become available for lower priority processes, which makes it inappropriate to use
taskset to exclude one physical core from the CPU affinity mask of all other processes.