Jump to content

Found a couple of ini tweaks that dramatically reduce the cpu bottleneck.


HyperSlayer72

Recommended Posts

Hello everyone, and hopefully doubleyou specifically as this could be a great tweak to add to bethini.

 

I have a i7 2600k and a gtx 1060. Yes my cpu is getting on in age a bit but is still great for my needs.

 

I found some ini tweaks that lightened the cpu load improving my gpu utilization in my test scene from 72% to 96%.

 

I slapped my character in front of whiterun. The location that for me always results in reduced gpu utilization. At ultra I get ~72% Gpu Usage. and 39% Cpu. Process Specific.

 

I changed the following settings from their bethini ultra configuration to the values used at medium. Do note that these increases in gpu utilization are indeed a result of the settings actually reducing cpu usage, improving cpu overhead.

 

[LOD]
fLODFadeOutMultObjects = 6.0000 // 13% Increase in GPU Usage.
fLODFadeOutMultActors = 5.0000 // 5% Increase in GPU Usage.
fLODFadeOutMultItems = 3.0000 // 3% Increase in GPU Usage.
 
 
[TerrainManager] // 3% Increase in GPU Usage. (Many people would prefer to leave this at ultra and thats perfectly understandable.)
fBlockLevel0Distance was changed from 50000.0000 to 20000
fBlockLevel1Distance was changed from 72500.0000 to 42000
fBlockMaximumDistance was changed from 94000.0000 to 90000
fSplitDistanceMult was changed from 4.0000 to 0.750
fTreeLoadDistance was changed from 72500.0000 to 25600
 
This wound up improving my framerate from 67fps to 96fps with a very minimal performance impact.
 
I attempted the same tweaks on a higher end system as-well.
 
9700k + gtx 2080 = 142fps at ultra (no-vsync or fps caps I promise), at ultra with the above tweaks the framerate roared up to 205fps improving gpu utilization by ~20%.
 
The major thing I noticed while doing testing for this is that my 2600k processor seems incapable of being utilized nearly as much as the 9700k. my cpu would top out at 50% usage whereas the 9700k went all the way up to 78% at times.
 
For those interested in the data I collected here it is. I maintained an identical system enviroment with nothing else running except skyrim and mo2.
 
SE Vanilla 1080p - ENB Installed with "Use Effect" Off -  144hz Havok Settings in Bethini - Turned towards whiterun 
 
SE Ultra Low
28% CPU  // The Cpu Usage Measured with a fps cap of 65 fps set in enb. Done with the intention of isolating cpu usage of the given graphics preset.
18% GPU  // The GPU Usage Measured at 65fps. Will of course be quite low at low graphics settings.
57% GPU Uncapped  // The GPU Usage Measured with the fps uncapped. This is the value that really matters. 
 
SE Poor
30% CPU
20% GPU
57% GPU Uncapped
 
SE Low
32% CPU
26% GPU
55% GPU Uncapped
 
SE Medium
32% CPU
43% GPU
85% GPU Uncapped \\ This is where I noticed the improved gpu utilization dispite the expectation that ultra would better utilize the gpu.
 
SE High
35% CPU
58% GPU
77% GPU Uncapped
 
SE Ultra -
38% CPU  \\ The elevated cpu usage dispite the capped framerate also caught my attention and highlights the impact of leaving the above ini tweaks at ultra.
69% GPU
72% GPU Uncapped 67 FPS
 
SE Ultra with Medium Lod + TerrainManager settings.
34% CPU
62% GPU
90% GPU Uncapped 96 FPS
 
This all may seem minor for some but this has enabled me to finally use open cities without nearly as much of a performance hit. I now maintain 75fps with open cities compared to my previous average of 52fps.
 
Here are some screenshots taken on the high end system. (The game was running at 1080p the monitor was 1440p.)

 

In conclusion, these tweaks work great for people plagued with low gpu utilization. If however your gpu is already fully utilized by skyrim (rare for vanilla) then these tweaks will have no effect for you. Additionally for people who plan to mod their games graphics way beyond ultra, and not use open cities in their load order these tweaks become pointless.

Edited by HyperSlayer72
Link to comment
Share on other sites

These settings are very important in relation to performance, and I have known this for some time, and is the biggest reason why BethINI improves performance. Please note that BethINI Ultra tends to push all draw call settings to their seeable maximum (except TerrainManager settings). This is why I generally recommend BethINI High. I think the takeaway here is that the GPU is used more and provides more FPS when the CPU is less bottlenecked in your case. Each frame requires so many draw calls, and the farther out, the slower it renders the scene. This game doesn't use the CPU very well.

 

Your CPU has 8 threads/4 cores. I would like to see if you see improvements with the following in your Skyrim.ini. It probably does nothing, but it has been theorized that it could improve CPU usage on CPUs with more than 4 threads.

[General]
iNumHWThreads=8
Link to comment
Share on other sites

Unfortunately setting iNumHWThreads=8 seems to make no difference at all. No change in gpu usage and the cpu graph is just as unpredictable as usual. Seems that Thread#3 of my cpu is being hit harder than the rest of the threads though. 75% on thread 3. Approximately 30% - 50% across all other threads. Id be curious what the HWThread options do.

 

Getting back to the above tweaks, especially the Actor and Object fade distances. This is an awkward position because essentially anyone with a strong video card is likely to play at ultra, but at the same time its those same people that could benefit from the tweaks. Do you think something could be added that informs users of the impact of these tweaks? It took me several hours to find these and think all users who play at high/ultra should be aware of the option.

Link to comment
Share on other sites

  • 2 weeks later...

Interesting findings! Im running a very high-end system (9900K + 2080 Ti) with appx 600 mods (80% textures), Dyndolod ultra trees 2k, ENB etc and I get 60 fps 90% of the time - BUT there is one setting that really confuses me and that is fLODFadeOutMultObjects... I cant go higher than maximum 10 (preferrably 5) on this setting because that generates A LOT of stutter and framedrops in Whiterun, Riverwood etc and it doesnt matter if I tweak or lower any other settings (shadowquality, reflections, LODs etc etc)-  if I put fLODFadeOutMultObjects higher than 10 = stutters/framedrops. Anyway, Im going to try with your settings above which looks very interesting...

Edited by TheDude
Link to comment
Share on other sites

A quick follow-up to my previous post: I did some more tests with the fLODFadeOutMultObjects settings and for me, it doesnt really matter if I lower every_other_setting_available (including fadeactors and items), as long as fLODFadeOutMultObjects=10 or higher I get framedrops and stutter.

 

For example; on the bridge in Riverrun: 

fLODFadeOutMultObjects=30 // 52 fps with occasional dips down to 40-45 (!)

fLODFadeOutMultObjects=10 // 56 fps with occasional dips down to 50-ish

fLODFadeOutMultObjects=5 // 60 fps no dips whatsoever, silkysmooth (well ok, maybe down to 58-59 in certain places in Riften...)

 

Really weird... Of course, if I disable ENB i get appx 5-6 fps boost but still, I have no idea why fLODFadeOutMultObjects is such a performance-hog on my system... Any theories?

Edited by TheDude
Link to comment
Share on other sites

Please post your INI settings. You can use pastebin. It could be mod related, but I don't normally associate that particular ini setting with big frame drops like that. The initial drop from 60 fps to 56 fps and 52 fps, sure, but not the big drops.

Link to comment
Share on other sites

A setting of 5 for fLODFadeOutMultObjects is just way too low. I could see things popping in needlessly everywhere. Lowest I'd recommend is 12.

 

Try changing the following in SkyrimPrefs.ini and increasing fLODFadeOutMultObjects back to 30:

[Display]
iReflectionResolutionDivider=2

This setting affects the resolution used for screen space reflections. It has a tremendous performance impact and does not really affect visual quality much in my testing. It should offset the fLODFadeOutMultObjects bump. 

 

If you still see frame drops, try setting fLODFadeOutMultObjects to 12, as I think that's a reasonable value.

 

It really is sad seeing top of the line software dip in FPS due to unoptimized games.

Link to comment
Share on other sites

Yeah, but thats the thing, I dont really see any difference between fLODFadeOutMultObjects=5 and fLODFadeOutMultObjects=12...?

 

Also, I've tried iReflectionResolutionDivider=2 several times but that does nothing. I also tried Bethini High settings today which of course lowered almost everything from Ultra and sure it was a little bit better but it doesnt even compare to fLODFadeOutMultObjects=5 vs fLODFadeOutMultObjects=30. Thats like night and day. 

 

Thanks anyway, Ill try some more testing and post them here!

Link to comment
Share on other sites

It may not appear as noticeable for you because you are using DynDoLOD. I tested on a virtually vanilla test environment that I use for INI testing. I concur that fLODFadeOutMultObjects does control a lot of fps. Your INI files were already very well setup for a rig with your capabilities.

Link to comment
Share on other sites

Yes, I think you're right, and I will do some tests wihout Dyndolod as well, thanks!

 

Yeah, I've been tweaking those a lot lately so its good to hear Im doing something right at least...  ::):

But of course, its still pretty annoying that I get stutters on my extremely powerful rig. I know its a lot of mods, ENB and Dyndolod etc, but its just on a 1080p resolution for gods sake... For comparison: I can run Witcher 3 with 4k DSR and HD Reworked project at a silkysmooth 60 fps 99% of the time, but Skyrims engine cant even handle 1080p... Oh well.

Link to comment
Share on other sites

Well, I think I solved the problem. I figured it was CPU-related so Ive spent the day overclocking my 9900K and finally managed to get it stable on 5.0 Ghz (with xmp on in the BIOS etc)! This raised the benchmarkscore from a modest 2507 to a much more impressive 3366!And my tests shows no framerate dips whatsoever when using:

fLODFadeOutMultObjects = 15
fLODFadeOutMultActors = 15
fLODFadeOutMultItems = 15
Silkysmooth 60fps... I will run some more tests with fLODFadeOutMultObjects = 30 but for me this is a HUGE improvement and feels really great!
 
Edit: yep, I definitely solved it. Cranked up fLODFadeOutMultObjects = 30 but I still get 60 fps even in Riverwood and Whiterun! Crazy that I had to OC my 9900K to get these results, but still, Im so glad that I finally solved it!
Edited by TheDude
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.