So, I saw a few times today where people were mentioning the possibility of gaining a good bit of framerate by setting your processAffinityMask to not use core 1. I thought it sounded insane, but decided to test it out anyway. Here are my results:
Hardware Being Tested
Intel Core i5 750 @ 3.8GHz (200MHz BCLK, 19x multiplier)
4GB G.Skill DDR3 @ 1600MHz; 9-9-9-24-2T timings
XFX Radeon HD 5770 @ stock
Background Processes
Chrome with 21 open tabs (my normal browser load)
Notepad++ for note taking and config.wtf modifications
MSPaint for screenshot management
Task Manager for monitoring core utilization
Test Process
I decided not to go with anything overly scientific. If the framerate gain was going to be anything palpable, it would be noticeable simply by standing in front of the AH in Orgrimmar at peak time. The test was done on the US-Rexxar realm. Framerate averages were done over a 60 second period. My character was not moved during or between any test (nor was the camera angle changed). Obviously other characters moved, but again, if the framerate gain was enough to worry about, it should still be noticeable.
Cores are noted as 1, 2, 3, and 4. Scientifically, they should be 0, 1, 2, and 3, but it's just easier to read this way. All "spikes" mentioned in the below notes were spikes in utilization percentage. The screenshot of CPU utilization was done while idling in game, rather than during any stressful part of the load.
processAffinityMask "15" (Control, as it was already in my config.wtf, all cores enabled)
Average Framerate - 55
Notes: I noted a spike on core 1 after entering my username and password. While the character was loading into game, I noted a small spike on cores 1 and 4. As the character entered the game and became playable, I noted a large spike on core 1.
CPU Utilization:
No processAffinityMask Entry
Average Framerate - 58 (+5.4%)
Notes: I noted no real spike after entering my username and password. While loading into game, I noted a spike in cores 1 and 4. As the character entered the game and became playable, I noted a large spike on core 1. Overall, fairly similar to processAffinityMask "15".
CPU Utilization:
processAffinityMask "14" (cores 2, 3, and 4 enabled)
Average Framerate - 57 (+3.6%)
Notes: I noted a small spike on core 4 after entering my username and password. While loading into game, I noted a spike in cores 2, 3, and 4. As character entered game and became playable, I noted a large spike in core 4. I also noticed (subjectively) that the game loaded noticeably faster (more on this later).
CPU Utilization:
processAffinityMask "12" (cores 3 and 4 enabled)
Average Framerate - 55 (+0%)
Notes: I noted a small spike on cores 3 and 4 after entering my username and password. While loading into game, I noted a spike in cores 3 and 4. As character entered game and became playable, I noted a large spike in cores 3 and 4. I also noticed (subjectively) that the game loaded noticeably faster (more on this later). Once in game, core utilization was noticeably higher than when a total of 3 or 4 cores were available to the game.
CPU Utilization:
processAffinityMask "7" (cores 1, 2, and 3 enabled)
Average Framerate - 58 (+5.4%)
Notes: I noted a small spike on cores 1, 2, and 3 after entering my username and password. While loading into game, I noted a large spike in cores 1 and 3. As character entered game and became playable, I noted a large spike in cores 1, 2, and 3. I also noticed (subjectively) that the game loaded noticeably slower again, similar to processAffinityMask "15" or no entry (more on this later).
CPU Utilization:
processAffinityMask "6" (cores 2 and 3 enabled)
Average Framerate - 56 (+1.8%)
Notes: I noted a small spike on cores 2 and 3 after entering my username and password. While loading into game, I noted a large spike in cores 2 and 3. As character entered game and became playable, I noted a large spike in cores 2 and 3. I also noticed (subjectively) that the game loaded noticeably faster again, similar to processAffinityMask "14" and "12" (more on this later). Once in game, core utilization was noticeably higher than when a total of 3 or 4 cores were available to the game.
CPU Utilization:
Load Times
After noting subjectively that the load times seemed faster when core 1 was not in use, I decided to time how long it took my character to load into game. I loaded with no processAffinityMask entry, a setting of 15 (all cores), and a setting of 14 (cores 2, 3, and 4). The timer was stopped when the game world was viewable, not when characters were fully loaded or high-res textures were fully loaded, as that would be testing I/O and not CPU. Each was done three times and the average value is shown below:
- processAffinityMask "15": 15 seconds
- No processAffinityMask Entry: 15 seconds (+/- 0%)
- processAffinityMask "14": 11 seconds (-26.7%)
Conclusions/Results
Well, it seems like there is no real framerate gain to be had by doing this on a non-Hyperthreaded CPU. Removing the virtual cores from being used on a Hyperthreaded CPU may show some gain, but I have no way of testing that. The maximum framerate change was 3fps, or 5.4%, which is easily within margin of error, considering the lack of control I had over other characters in the game. The odd thing seems to be the load times. Logically, there's no reason that eliminating core 1 from being used should lower the game's load time, since that's mainly I/O based while addons are loaded. I'm also not certain if there's some odd caching going on in the OS that's letting it load faster at some times. The results seem pretty conclusive, though.
Again, I have no way of knowing if framerate gains are to be had by changing processAffinityMask on a Hyperthreaded CPU. I simply don't have the hardware to test. If you'd like to test it, please feel free. Try to keep the test similar to mine, however, as that would give the most uniform results. Any feedback, thoughts, observations, or critiques are also welcome, if they're constructive.