thank you for your support and feedback! just a side note to how different mods are received here on nexusmods: the reason is probably my long description (?) of this mod, capable to cover so many windows games, that people abstain to read and obviously use and vastly prefer a single game skse based mod for a reason at least i do not understand as an insider. but the reason is probably the way i offer this mod. i cannot find another reason so far. another user made me aware of that. so if you have the time to read long descriptions you may even find and try this simple and effective mod! :)
the principle is easy to understand: - it is based on the amount of game tasks and to separate them from all other tasks as good as possible to minimize any influences. - the more (game optimized) cpu cores available and the higher the cpu core ipc is the lower the cpu related stutter can be configured.
before you post or test please ensure that your cpu is within my recommendation. i tested a laptop i7 7700 and it works even nicely with 4 core/ 8 threads! but this is the reasonable minimum and depends on the game.
my guide is not intended for people with an already perfect, stutter free system (most probably your settings are not as demanding or not ultra or already optimized. in all these cases my mod is simply overkill. please move on and ignore my mod until you use demanding settings and see somtimes lower fps or stutter. a cpu not supporting ryzen smt or intel hyperthreading or cpu already running with deactivated smt via BIOS (which i do not recommend=lesser options to assign core affinity) may not profit as much from this optimization method. the higher your fps are the lower the less the effect will be recognizable, the more demanding the setup is the more effect you will encounter. i can confirm it works even nice with slower gpu and cpu!
q: why two cores and assigning core affinity with processhacker? a: many older games and programs (dx11 and lower) place their primary tasks in the first two cores area. you can monitor this with task manager. almost always one or two primary game cpu cores are receiving the highest (rendering) workloads while others remain in idle. so it makes sense to put more load on these idling tasks. you can also test other settings dependent on the number of cores available. very important is using processhacker to assign non game tasks to the two excluded virtual cores so they cannot interfere with game relevant tasks (avoid stutter!). this is the core affinity setting. if you do this consequently and use the permanent save option you will encounter much smoother gameplay regardless of the (configured) game you play! if you configured the correct tasks for all cores and processhacker runs in the backround assign it also to the two spared cores.
you will definitely encounter a difference if you own a capable cpu with smt or at least 6 to 8 cores.
the reason why this works is that standard task interference with game tasks is reduced and some sse / fallout 4 graphics related tasks have to be prepared as a single cpu task (dx11 limitation) to feed gpu regardless how many logical cores your cpu provides. if this cpu task is not fast enough you will encounter stutter while gpu is not fully utilized. the only way to reduce this bottleneck is to give such a task as much single core priority as possible. this means: 1. the higher the single core ipc is the lower the chance of cpu bottleneck 2. the higher the single core priority for the most important fo4/sse task is, feeding the gpu with draw call related rendering tasks, the lesser the chance of micro stutter is. 3. separating primary game tasks from other os load by disabling one of the two logical cpu cores and assigning them to the os means full cpu core power for the primarily used cores. you can check that by monitoring your primary game and os tasks!
if you own an amd ryzen 5xxx cpu i recommend to read this to optimize your cpu for efficiency and gaming in BIOS. the difference before after can be amazing. i tested this and my cpu works much cooler, faster and less noisy compared to other ways of optimizing. i used the curve optimizer to undervolt my cpu stable with the maximum value (30 as negative value, should be the same for most BIOS). the higher the number of cores the lower the chance that this lowest setting will work stable. just use precision boost and curve optimizer as described and raise the value to -10 to -29 if you encounter any instabilty during testing! this is because of cpu voltage lottery.
Firstly, I have a 4-core, 8-thread CPU (Intel i7-7700K, if it matters). If I am understanding correctly, I tell my system to only allow the game to use logical cores 0, 2, and 4-7.
In my Skyrim.ini, I have iNumHWThreads=8. My research on this setting basically says "Set this to the number of cores your CPU has, doubling that number if it has hyperthreaded." (Mine does.)
My question is, if I am now telling the system to only let the game use 6 of my 8 logical cores, should I also change this ini setting from 8 to 6?
yes exactly(for the game tasks). if you use iNumHWThreads set it to six or the number of logical cores you allow the game to use. i have exactly the same configuration on my laptop with a mobile i7-7700 and it works nice with skyrim and fo4. this solution works for many games and it not restricted to a single game or skse. you just need the program "Processhacker" as described and as a replacer for windows 10 taskmanager. but you don't need iNumHWThreads game settings if you use core affinity.
this seems to do mainly the same as my mod does and what i describe just with another tool and with some limitations (it works for skyrim, not for any other game). it changes also some skyrim specific values and separates os tasks from game tasks? i don`t know. if you do not like processhacker which i use as win 10 standard task manager, which is in my opinion the most advanced task managing tool for win 10 and for free, managing all task important settings, try and use whatever you want.
the most important thing is that you understand what you are doing and that you have to test the effect with your hardware and dependent on the game settings and used graphics interface and drivers. you can setup affinity, priority, i/o priority, and even page priority with processhacker. you can not do or compare that with a game specific dll plugin and you cannot save each setting for a task/game separately for permanent use more than one game as you can do with my solution.
this is much more effective for a cpu core based tuning than a skse dependent dll. processhacker can offer individual cpu config for all tasks/games without any skse dependency. i use it for all dx9 and dx11 and also some older games. for example gtr2 car racing. absolutely essential to set core affinity and also for all other gamebryo engine related games like oblivion and all fallout versions... you can use it as an universal cpu core balancing enhancer. A skse dependent dll file solution makes only sense if you want a game specific solution. And apart from that processhacker is a capable replacer for the windows 10/11 os taskmanager for most purposes. all the best to the modder of the linked mod but it works only for one single game and at least i play more games and i like to configure and optimize the cpu core settings specifically for any game. you can not apply optimal GTR2 core settings to skyrim and vice versa. both games can be individually covered perfectly with my solution and optimized for the available cpu cores.
thanks for feedback. the memory use (for each game in case of dll) is one but not the most important aspect and in my experience the os recognizes the affinity settings without an open task manager. you can check it by youself. for monitoring and to be sure affinity assignment works correct i recommend to run the processhacker task in the background (it enables you to monitor what you configured and how it works) you can and should also (ideally) try to separate most os tasks (including task manager) from the game tasks so core interference and related os driven stutter is lowered to zero. just configuring game tasks does not separate them fully from os tasks and the related load. the automatic os core assignment is ok for general applications but not optimal for managing game specific bottlenecks or out of the box os misconfiguration. if you encounter stutter you should check for core/task interferences and core saturation during gameplay! the more logical and physical cpu cores are available the easier the separation and finetuning of task per core assignment is. the effect is generally effective and stability friendly compared to cpu overclocking and other approaches not tackling the problem at the source. by the way you can address all your games, os applications and os tasks individually in the os with processhacker 3.0, task by task, core by core - not only for one specific game. just configure core affinity and save the config as you like and it will work until you change it even after restarting the os. only some vital os system tasks are excluded for manipulation. you get the difference between this and the game task specific dll approach ? simply chose what makes more sense for you.
I tried to download processhacker (https://github.com/winsiderss/si-builds/releases/download/3.0.5553/systeminformer-3.0.5553-setup.exe) and it couldn´t be saved to my pc because chrome informed that it has a virus: "Failed - virus detected". It even didn´t let the Kaspersky to examine it. I never saw anything like that. It seems pretty dangerous. I will use process lasso instead. I play SkyrimVR with i9 12900kf 32 ram ddr5 rtx 3080 win 10.
the link is clean, the false virus detection is a well known problem. it is a false positive. do what you like and you think is safe for you. i use this tool without any problems. check your kaspersky av if it is up to date or kick it. i recommed microsoft av but even this reports in some cases a virus due to wrong or outdated av detection scripts.
the affinity setting with processhacker is to assign the virtual cpu cores to run processes properly and with highest priority. how you configure that is your decision. think in a way that you assign all cores properly not to turn them off.
the best is to concenrate the power of most cores on the game process ("game".exe). how many cores is your decision. in most cases i recommend to assign most cores to the game.exe and a few (depending on the number of available cores) to the essential an most time buisy os, browser or background core processes. not all running processes are freely assignable thanks to microsoft. i think for security reasons. this is a guide to assign all all the available virtual cpu cores for proper use.
additionally you can give the game process a higher "priority" level. you can tinker with that for optimal results.
if smt works: yes, you can do that for a game and the related game process. the optimal setting depends on your cpu! the goal is to make the game stutter free as possible by stretching the cpu load using as many cores as possible depending on the available amount. it depends on the game(tasks), the os load and the available number of virtual cpu cores.
Just awsome piece of work I really hope we can have this kind of mods for STARFIELD too Cause it seems cpu demanding And i have i5 9400 that has only 6 cores So It will be great if we have such stuff on games
it is just a means to manually optimise or correct the cpu core workload. the more cores are available the more finetuning is possible. the i5 9400 has (only) 6 cores available to a assign. successfully applied the result is lesser stutter during gameplay.
it works - vr independent, including vr games. it is a means to reduce cpu related stutter and to optimize cpu core workload depending on your setup. it works with all kind of executeables. a game exe is a special case of that and vr game is a special case of a game. so yes it works - depending on your optimization skills
the affinity setting depends on your setup and your game. you should test and set it individually for each game exe. the goal should be to separate the game related tasks from the os tasks/processes as much as possible to reduce any stutter related influence. in your case you have 8 options to do that. so for many modern multi core supporting games i would try to assign one or a max of two cores to the os tasks and the rest to the game exe (core affinity). this should work out of the box nice with your cpu. but please test it. there is no general rule for any game and any setup. more cores available means more options for finetuning. for newer games mostly all cores are assigned out of box and the os tries to manage the resources. for skyrim and fo4 i would begin with a 6:2 or 7:1 core affinity ratio (6 or 7 cores for the game and 1 or 2 for the not game related tasks). test it and chose the setting with lowest overall stutter. especially older games (2005 and earlier) and dx9 and dx11 tend to need an individual manually set affinity setting like the older gtr2 game exe where win10 only assigns one core out of the box and produces a stuttery mess as a result. assign at least four cores for such a game and the game exe and the game runs butter smooth and with maxed out fps! it is a night and day difference in such cases if you correct that manually. if you own win11 please let me know your results and you general impression if and how it works as all my tests are based on win7 and and win10. read also the description and the sticky posts and you should be well prepared. thanks!
thanks for this. i really wanna try it, but i keep getting access denied for skyrim exe. i've tried all other processes like chrome, mspaint ect, and i can change affinity for every process running accept skyrim and nexus mod manager (yeah i still use that). those 2 show access denied any ideas? thanks
edit; seems i can't change msafterburner exe either
i cannot confirm this problem. is it a problem with admin rights and your os settings? access denied for skyrim.exe seems a user end problem. something seems wrong with your settings or os or you have a virus. check if admin rights are set (for no reason) or other 3rd party programs block access. skyrim.exe should not run with admin rights for safety reasons. it also may introduce other file access problems.
Wow this seems to give me a nice boost. I wanted to ask something though. I have 10 cores and 20 threads. So when you set the affinity of the 2nd thread for the first two physical cores, that would be CPU 0 (active) CPU 1 (deactivated) CPU 2 (active) CPU 3 (deactivated)
i recommend to follow my description :) fiddle with the core affinity until you get the best results for your setup. the goal is to lower stutter as much as possible while demanding game tasks can do their work with least possible os task interference. 4790 has nice overclocking and undervolting capabilities as far as i remember, 8 virtual cores and it aged well.
Man this is amazing, You even typed out at the bottom that this fix/mod doesnt increase fps significantly, But Jesus man, I gained like 20-30 fps in some heavy areas, Thank you massively for this. (Specs= Intel Core i7 9700K , 32G ram , EVGA GeForce RTX 2080 Ti , ROG PG278Q monitor)
thanks for your feedback! i know this "30fps or more effect" from some older games like gtr2 where correct assignment of core affinity makes this stuttering game out of the box stutter-free with my mod while the fps raise astronomically. these older games actually exist. using it for fo4, sse or oblivion can help but the gains can be huge if the cpu is your bottleneck. but it depends on your hw.
112 comments
just a side note to how different mods are received here on nexusmods:
the reason is probably my long description (?) of this mod, capable to cover so many windows games, that people abstain to read and obviously use and vastly prefer a single game skse based mod for a reason at least i do not understand as an insider.
but the reason is probably the way i offer this mod. i cannot find another reason so far. another user made me aware of that. so if you have the time to read long descriptions you may even find and try this simple and effective mod! :)
the principle is easy to understand:
- it is based on the amount of game tasks and to separate them from all other tasks as good as possible to minimize any influences.
- the more (game optimized) cpu cores available and the higher the cpu core ipc is the lower the cpu related stutter can be configured.
before you post or test please ensure that your cpu is within my recommendation.
i tested a laptop i7 7700 and it works even nicely with 4 core/ 8 threads! but this is the reasonable minimum and depends on the game.
my guide is not intended for people with an already perfect, stutter free system (most probably your settings are not as demanding or not ultra or already optimized. in all these cases my mod is simply overkill. please move on and ignore my mod until you use demanding settings and see somtimes lower fps or stutter.
a cpu not supporting ryzen smt or intel hyperthreading or cpu already running with deactivated smt via BIOS (which i do not recommend=lesser options to assign core affinity) may not profit as much from this optimization method.
the higher your fps are the lower the less the effect will be recognizable, the more demanding the setup is the more effect you will encounter.
i can confirm it works even nice with slower gpu and cpu!
q: why two cores and assigning core affinity with processhacker?
a: many older games and programs (dx11 and lower) place their primary tasks in the first two cores area. you can monitor this with task manager. almost always one or two primary game cpu cores are receiving the highest (rendering) workloads while others remain in idle.
so it makes sense to put more load on these idling tasks.
you can also test other settings dependent on the number of cores available. very important is using processhacker to assign non game tasks to the two excluded virtual cores so they cannot interfere with game relevant tasks (avoid stutter!). this is the core affinity setting. if you do this consequently and use the permanent save option you will encounter much smoother gameplay regardless of the (configured) game you play!
if you configured the correct tasks for all cores and processhacker runs in the backround assign it also to the two spared cores.
you will definitely encounter a difference if you own a capable cpu with smt or at least 6 to 8 cores.
the reason why this works is that standard task interference with game tasks is reduced and some sse / fallout 4 graphics related tasks have to be prepared as a single cpu task (dx11 limitation) to feed gpu regardless how many logical cores your cpu provides. if this cpu task is not fast enough you will encounter stutter while gpu is not fully utilized.
the only way to reduce this bottleneck is to give such a task as much single core priority as possible.
this means:
1. the higher the single core ipc is the lower the chance of cpu bottleneck
2. the higher the single core priority for the most important fo4/sse task is, feeding the gpu with draw call related rendering tasks, the lesser the chance of micro stutter is.
3. separating primary game tasks from other os load by disabling one of the two logical cpu cores and assigning them to the os means full cpu core power for the primarily used cores. you can check that by monitoring your primary game and os tasks!
if you own an amd ryzen 5xxx cpu i recommend to read this to optimize your cpu for efficiency and gaming in BIOS. the difference before after can be amazing. i tested this and my cpu works much cooler, faster and less noisy compared to other ways of optimizing. i used the curve optimizer to undervolt my cpu stable with the maximum value (30 as negative value, should be the same for most BIOS). the higher the number of cores the lower the chance that this lowest setting will work stable. just use precision boost and curve optimizer as described and raise the value to -10 to -29 if you encounter any instabilty during testing! this is because of cpu voltage lottery.
Firstly, I have a 4-core, 8-thread CPU (Intel i7-7700K, if it matters). If I am understanding correctly, I tell my system to only allow the game to use logical cores 0, 2, and 4-7.
In my Skyrim.ini, I have iNumHWThreads=8. My research on this setting basically says "Set this to the number of cores your CPU has, doubling that number if it has hyperthreaded." (Mine does.)
My question is, if I am now telling the system to only let the game use 6 of my 8 logical cores, should I also change this ini setting from 8 to 6?
if you do not like processhacker which i use as win 10 standard task manager, which is in my opinion the most advanced task managing tool for win 10 and for free, managing all task important settings, try and use whatever you want.
the most important thing is that you understand what you are doing and that you have to test the effect with your hardware and dependent on the game settings and used graphics interface and drivers.
you can setup affinity, priority, i/o priority, and even page priority with processhacker. you can not do or compare that with a game specific dll plugin and you cannot save each setting for a task/game separately for permanent use more than one game as you can do with my solution.
this is much more effective for a cpu core based tuning than a skse dependent dll. processhacker can offer individual cpu config for all tasks/games without any skse dependency. i use it for all dx9 and dx11 and also some older games. for example gtr2 car racing. absolutely essential to set core affinity and also for all other gamebryo engine related games like oblivion and all fallout versions... you can use it as an universal cpu core balancing enhancer.
A skse dependent dll file solution makes only sense if you want a game specific solution. And apart from that processhacker is a capable replacer for the windows 10/11 os taskmanager for most purposes. all the best to the modder of the linked mod but it works only for one single game and at least i play more games and i like to configure and optimize the cpu core settings specifically for any game. you can not apply optimal GTR2 core settings to skyrim and vice versa. both games can be individually covered perfectly with my solution and optimized for the available cpu cores.
by the way you can address all your games, os applications and os tasks individually in the os with processhacker 3.0, task by task, core by core - not only for one specific game. just configure core affinity and save the config as you like and it will work until you change it even after restarting the os. only some vital os system tasks are excluded for manipulation.
you get the difference between this and the game task specific dll approach ? simply chose what makes more sense for you.
It even didn´t let the Kaspersky to examine it. I never saw anything like that. It seems pretty dangerous. I will use process lasso instead.
I play SkyrimVR with i9 12900kf 32 ram ddr5 rtx 3080 win 10.
EDIT: so I have 2 rows, CPUs 0-15, and I shut off 1 and 9, is that sort of what you were driving at? did I understand it right?
think in a way that you assign all cores properly not to turn them off.
the best is to concenrate the power of most cores on the game process ("game".exe). how many cores is your decision. in most cases i recommend to assign most cores to the game.exe and a few (depending on the number of available cores) to the essential an most time buisy os, browser or background core processes. not all running processes are freely assignable thanks to microsoft. i think for security reasons.
this is a guide to assign all all the available virtual cpu cores for proper use.
additionally you can give the game process a higher "priority" level. you can tinker with that for optimal results.
cheers all the same
Does this just mean "Disable CPU 0 and CPU 2"?
I really hope we can have this kind of mods for STARFIELD too
Cause it seems cpu demanding
And i have i5 9400 that has only 6 cores
So
It will be great if we have such stuff on games
the goal should be to separate the game related tasks from the os tasks/processes as much as possible to reduce any stutter related influence.
in your case you have 8 options to do that. so for many modern multi core supporting games i would try to assign one or a max of two cores to the os tasks and the rest to the game exe (core affinity). this should work out of the box nice with your cpu. but please test it. there is no general rule for any game and any setup. more cores available means more options for finetuning.
for newer games mostly all cores are assigned out of box and the os tries to manage the resources. for skyrim and fo4 i would begin with a 6:2 or 7:1 core affinity ratio (6 or 7 cores for the game and 1 or 2 for the not game related tasks). test it and chose the setting with lowest overall stutter.
especially older games (2005 and earlier) and dx9 and dx11 tend to need an individual manually set affinity setting like the older gtr2 game exe where win10 only assigns one core out of the box and produces a stuttery mess as a result. assign at least four cores for such a game and the game exe and the game runs butter smooth and with maxed out fps! it is a night and day difference in such cases if you correct that manually.
if you own win11 please let me know your results and you general impression if and how it works as all my tests are based on win7 and and win10. read also the description and the sticky posts and you should be well prepared.
thanks!
any ideas? thanks
edit; seems i can't change msafterburner exe either
access denied for skyrim.exe seems a user end problem. something seems wrong with your settings or os or you have a virus. check if admin rights are set (for no reason) or other 3rd party programs block access. skyrim.exe should not run with admin rights for safety reasons. it also may introduce other file access problems.
Correct?
Thanks and endorsed!
i know this "30fps or more effect" from some older games like gtr2 where correct assignment of core affinity makes this stuttering game out of the box stutter-free with my mod while the fps raise astronomically. these older games actually exist. using it for fo4, sse or oblivion can help but the gains can be huge if the cpu is your bottleneck. but it depends on your hw.