[FIX] FPS drop on multicore/hyperthread cpus
Posted 23 December 2011 - 03:11 AM
running on a Lenovo y570 i7-2670QM, GT555m, 8GB PC3-10600 DDR3.
I fixed this issue by forcing Skyrim to use only 2 physical (not HT) cores. FPS drop == gone.
This may only apply to i7-2670QM, or only my hardware configuration. Who cares, I can play at 30-60fps now! YMMV
1) Launch Task Manager (CTRL+ALT+ESC or CTRL+ALT+DELETE)
2) Launch Skyrim
3) ALT+TAB to task manager
4) Under the Processes tab, right click TESV.exe and click Set Affinity
5) Uncheck <All Processors>, and check CPU 0 and CPU 2
6) ALT+TAB back to Skyrim
If the issue is fixed, you can make Skyrim launch this way every time:
1) Open the directory TESV.exe is in.
2) Make a new text document. Rename it to TESV.bat
3) Right click TESV.bat and click edit.
4) Paste this in:
start /high /affinity 0x5 TESV.exe
5) Save file. Create shortcut on desktop to TESV.bat
I spent many hours trying to figure out this game breaking issue.
I hope my solution is of use to others.
Posted 07 July 2012 - 04:41 AM
Posted 07 July 2012 - 04:43 AM
Edited by AceDC, 07 July 2012 - 04:43 AM.
Posted 07 July 2012 - 05:01 AM
Well, in case it doesn't, this would also be useful to people using FX-series AMD CPUs. Those of us using traditional multi-cores (pre-FX AMDs and lower-end or very high-end non-HT Intel processors) should be unaffected.
Lastly, doesn't Skyrim.ini have a line for setting the number of hardware threads? Why not use it?
Posted 07 July 2012 - 05:12 AM
Posted 07 July 2012 - 05:37 AM
Two problems: for one, I couldn't get 1 and 2 to work on my quadcore; the game would freeze at the very end of loading a save game. Second, 3 made the first two cores load more heavily, and the latter two comparatively lightly, while 4 seemed to hit core #4 heaviest (though all cores were still showing a light to moderate load). Not at all expected results.
It's still worth trying, I guess, but since HT cores aren't arranged in the most effective fashion (I would have made it so they reported to the O/S as cores 2/3 with the physical cores being 0/1, myself, instead of this silly interleaving they have going), it probably won't be as effective as manually setting thread affinities. *shrugs*
These people might have been onto something, they just didn't realize it.
Try putting this under [General]:
iNumHWThreads=2 (alternatively 3 if that freezes)
iHWThread3=4 (if NumHWThreads=3)
I currently have the following set:
Cores 3 and 4 (logical 2 and 3) are being loaded the most, as expected, while the first two cores are seeing only a light load. I'll try mixing it up here in a minute.
I can't seem to get the main two threads to "unpair". They always seem to be together somehow; 1/2, 2/3, 3/4, 1/4. No matter what combination of settings I use, I can't get core usage into the staggered pattern that you fellows with HT need.
1/4 might work. 4 is an HT core, but if it's the only serious thing running on it, then that might not matter.
The following got high usage on 1/4:
...which is not at all intuitive. Neither were most of the other reactions I got. Something tells me Bethesda didn't actually intend for anyone to use these settings...
Setting affinities is probably still best, but give this a shot. I'm curious as to how it goes.
Edited by Septfox, 07 July 2012 - 06:58 AM.
Posted 11 July 2012 - 01:22 AM
Posted 11 July 2012 - 02:03 AM
Edit: Would this work if HT is disabled?
Edited by abc123qw, 11 July 2012 - 02:09 AM.
Posted 11 July 2012 - 03:41 AM
A "quad-core" HT processor, if I'm not mistaken, is laid out like so:
Core 0 (physical core) | Core 1 (virtual thread running on core 0) | Core 2 (physical core) | Core 3 (virtual thread running on core 2)
AMD FX processors also have a version of HT, but it's more on the hardware side; there's four/eight actual cores, but they share certain resources like cache.
Anyway, the problem normally is that the game loads the first two logical cores, which in an HT-enabled CPU are physical core 0 and HT core 1; essentially, 90% of the game's processing on one physical core. Disable HT, and it'll use physical core 0 and physical core 1 because the virtual "cores" are disabled and cores 1/3 become logical cores 0/1.
The CPU will also run cooler, consume less power, and probably actually run better. More overclocking room too because of the reduced heat, if you're into that sort of thing.
FX processors are different in that they have pairs of cores called "modules" which share resources. The game automatically loads the first two logical cores, in this case a single module, leading to the same performance issues. On Intel processors you can simply switch off HT; on AMD FX processors, you need to disable every other core, e.g. 1/3/5/7, so you only have one core using a given set of resources.
Benefits are largely the same; reduced heat, reduced power, no resource sharing means the individual cores don't fight over resources.
TL;DR you don't need to change anything if you turn HT off, the game will run better without any tweaks.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users