UT2004 is a NON multi-threading application, and as such can perform worse on a multi-core cpu, or "skips" at times (looks like lag, but it's the cpu core changing / purging cache on threads) Here is a command line (batch file etc...) option using affinity that can be used to lock UT (or any app) onto specific cores.
Example:
start /affinity 0x04 C:\UT2004\System\UT2004.exe
Where the Hex 0x04 = the 3rd core. (this is the most generic form, and works on any i3,i5,i7 since they will have at least 4 cores showing, either 4 real or 2 real and 2 hyperthread or more)
The core number is a binary mask for the cpu core value. 2^x converted to hexadecimal
First core = 0x01 0000 0001
Second core = 0x02 0000 0010
Third core = 0x04 0000 0100
Fourth core = 0x08 0000 1000
Fifth core = 0x10 0001 0000
Sixth core = 0x20 0010 0000
Seventh core = 0x40 0100 0000
etc...
You can add numbers to use multiple cores, but it's a binary mask converted to HEX.
start /affinity 0x06 C:\myapplication.exe
Would use the 2nd & 3rd cores
start /affinity 0x42 C:\myapplication.exe
Would use the 2nd and 7th cores
**Be aware, Hyperthreading means every other core is a virtual core, and should not be used for affinity unless it is paired with the correct physical core,
If hyperthreading is ON, then
Core 1 = Physical core
Core 2 = Core 1 Hyperthread
Core 3 = Physical core
Core 4 = Core 2 Hyperthread
etc...
start /affinity 0x03 C:\UT2004\System\UT2004.exe
= Core 1 + Core 2
Would be 1st Physical and 1st Hyperthread core (which are in reality the same core).
start /affinity 0x06 C:\UT2004\System\UT2004.exe
= Core 2 + Core3
Would be the 1st Hyperthread core and the 2nd physical core - BAD
Only assign UT to a single physical core, and don't use the 1st core (windows primary core) I would use the last physical core.
0x04 on a 2 core w/ hyperthreading (3rd core)
0x02 on a NON hyperthreading dual core CPU (2nd core)
0x08 on a Quad core w/o hyperthreading (4th core)
0x40 on a Quad core w/ hyperthreading (7th core)
A non multi-threading app like UT2004 can only use the total CPU / number of cores.
So a on Quad core w/o Hyperthreading, UT can only use about 25% of the total CPU (100% / 4 cores) You can use task manager to check to see if UT is on one core after using affinity as it will peak that core at times and use over 50%.
Example:
start /affinity 0x04 C:\UT2004\System\UT2004.exe
Where the Hex 0x04 = the 3rd core. (this is the most generic form, and works on any i3,i5,i7 since they will have at least 4 cores showing, either 4 real or 2 real and 2 hyperthread or more)
The core number is a binary mask for the cpu core value. 2^x converted to hexadecimal
First core = 0x01 0000 0001
Second core = 0x02 0000 0010
Third core = 0x04 0000 0100
Fourth core = 0x08 0000 1000
Fifth core = 0x10 0001 0000
Sixth core = 0x20 0010 0000
Seventh core = 0x40 0100 0000
etc...
You can add numbers to use multiple cores, but it's a binary mask converted to HEX.
start /affinity 0x06 C:\myapplication.exe
Would use the 2nd & 3rd cores
start /affinity 0x42 C:\myapplication.exe
Would use the 2nd and 7th cores
**Be aware, Hyperthreading means every other core is a virtual core, and should not be used for affinity unless it is paired with the correct physical core,
If hyperthreading is ON, then
Core 1 = Physical core
Core 2 = Core 1 Hyperthread
Core 3 = Physical core
Core 4 = Core 2 Hyperthread
etc...
start /affinity 0x03 C:\UT2004\System\UT2004.exe
= Core 1 + Core 2
Would be 1st Physical and 1st Hyperthread core (which are in reality the same core).
start /affinity 0x06 C:\UT2004\System\UT2004.exe
= Core 2 + Core3
Would be the 1st Hyperthread core and the 2nd physical core - BAD
Only assign UT to a single physical core, and don't use the 1st core (windows primary core) I would use the last physical core.
0x04 on a 2 core w/ hyperthreading (3rd core)
0x02 on a NON hyperthreading dual core CPU (2nd core)
0x08 on a Quad core w/o hyperthreading (4th core)
0x40 on a Quad core w/ hyperthreading (7th core)
A non multi-threading app like UT2004 can only use the total CPU / number of cores.
So a on Quad core w/o Hyperthreading, UT can only use about 25% of the total CPU (100% / 4 cores) You can use task manager to check to see if UT is on one core after using affinity as it will peak that core at times and use over 50%.
Comment