In machines with more than 2 logical processors (whether they are multiple physical processors, multiple DualCore or single QuadCore processors, or DualCore + HT processors), a new variable is saved to the config.wtf file.
The processAffinityMask variable is a decimal number composed of a binary mask representing which cores WoW will allow certain threads to be scheduled on. By default, this variable is set to "3" representing logical processors 1 and 2.
In case some of you are uncomfortable with the binary flags, here's a little picture that illustrates the mask and which logical processors will be used, for systems with up to 4 logical processors.
On my system, I seem to get better performance (higher FPS) when changing the mask to "15", even though I only have 1 physical processor with 2 cores and zHyperThreading. I'm curious to know, which threads does this mask schedule?
With the default affinity mask set to cores 1 and 2, I actually get poorer performance than when I disable HyperThreading. But enabling HyperThreading (to get those extra two logical processors) and changing the mask to "15" seems to give me about 20 more FPS.
Are there any consequences to changing this setting, such as instability? Are there any recommendations for changing it from its default value to achieve better performance on systems with 4 or more logical processors?
You can use this to let WoW run on a specific core(s) but it only works up to two cores. If you set it on 15, you just let the game use 2 out of your 4 processors but you didn't tell it which ones.
Is the default value for processAffinityMask always "3" (I.e., always use the first two virtual processors presented by the operating system) or is it determined dynamically at runtime?
As far as I know, it's set to default at 2 (first two cores). Your chart above describes how the number (when translated to binary positions) describe what you can set it to to enable the cores you want. I think on a hyperthread system, the system counts [Real core][HT core][Real core][HT core]. You might want to try "5" instead of "15"
Also note that some system drivers take advantage of both Hyperthreading and multicore so you might notice a bigger bump in certain hardware/driver setups.