1. if you have dual core processor without HT don't bother changing anything because it will not help.
2. Representation of Cores:
Cores are numerated like this Core1, Core2, Core3, Core4
HyperThreading indeed makes somewhat a Virtual Cores of you existing Cores but remember that it's only virtual (this virtual core adds something like 30% performance boost to this core)
so if you have a 4 core processor you should list your Cores in the following way:
Core1, Core2, Core3, Core4
if you have a 3 core processor:
Core1, Core2, Core3
8 core processor:
Core1, Core2, Core3, Core4, Core5, Core6, Core7, Core8
and so on...
now if you want wow to run on a selected core and not on other core you simply make a string of 0(zeros) and 1(ones)
for example i have 4 core processor without HT
and i want to run wow on all 4 cores
Core1, Core2, Core3, Core4
1 1 1 1
so my output string will be: 1111
if i want wow to run on Core2 and Core3 only
Core1, Core2, Core3, Core4
0 1 1 0
so my output string will be: 0110
if i want wow to run on Core2 and Core4 only
Core1, Core2, Core3, Core4
0 1 0 1
so my output string will be: 0101
now if i would have a 4 core processor with HT that would mean that i theoretically will have twice as much cores as i have( 4x2=8 )
so what does it mean? that means that instead of my "Core1, Core2, Core3, Core4"
i will have:
Core1, Core1Virtual, Core2, Core2Virtual, Core3, Core3Virtual, Core4, Core4Virtual
now if i want wow to run on Core2 and Core4 and Core4Virtual only
Core1, Core1Virtual, Core2, Core2Virtual, Core3, Core3Virtual, Core4, Core4Virtual
0 0 1 0 0 0 1 1
so my output string will be: 00100011
ok now we want to set wow to run on those cores by using
SET processAffinityMask "x"
the only thing we need is this magical number
HOWTO:
if we want to set wow on the cores from the last example we had our output string: 00100011
now we need to rewrite it in a reverse order! so 11000100
this is a binary representation of number that we want to insert instead of x ( in the SET processAffinityMask "x" )
the x is a decimal representation of our 11000100(which is binary) so we need to change our binary 11000100 into a decimal number
easiest way is to use windows calc and turn it into programmer mode or something like that in View menu(sorry i don't have english windows
)
basically there will be a selection of HEX, DEC, OCT, BIN
we need to select BIN and paste our 11000100 into it and then select DEC that gave me 196
so our x is 196 -> SET processAffinityMask "196"
now examples which i suggest to set
4 core processor without HT:
Core1, Core2, Core3, Core4
0 1 1 1
output string: 0111
reverse: 1110
decimal: 14
SET processAffinityMask "14"
4 core processor with HT:
Core1, Core1V, Core2, Core2V, Core3, Core3V, Core4, Core4V
0 0 1 0 1 0 1 0
output string: 00101010
reverse: 01010100 (we can skip leading zero) so 1010100
decimal: 84
SET processAffinityMask "84"
OR
Core1, Core1V, Core2, Core2V, Core3, Core3V, Core4, Core4V
0 0 1 1 1 1 1 1
output string: 00111111
reverse: 11111100
decimal: 252
SET processAffinityMask "252"
With 8 cores i strongly suggest using last 4-6 cores
about 2 cores: SET processAffinityMask "3"
about 2 cores with HT: SET processAffinityMask "15"