PDA

View Full Version : Does SMP actually do anything in Oblivion? Please post your results...


BlueSteel
03-25-06, 04:27 PM
For Oblivion I upgraded my PC with a second 7800GTs in SLI and an Athlon X2 dual-core CPU, since the game was advertised to support multi-threading.

While playing/tweaking I noticed that there are some occasions where the framerate goes down while the SLI-meter is not even half filled. An example are forested regions where an oblivion gate is nearby, in those places the framerate goes down from 30-40 to something around 20.
Since the GPUs were not fully loaded yet, I went to check my CPU load. Both graphs were pretty active, but did not even reach the 50% mark. A quick screenshot and photoshop session proved that both graphs could be added to exactly 50% total load all the time, which essentially means that Oblivion utilizes only one core.

At first I thought I had a problem with my windows installation, so I re-installed first the AMD CPU driver (version 1.2.2.2) and after that the Windows SMP hotfix (KB896256-v3). (uninstalling the hotfixed killed my windows, so I even re-installed windows from scratch, but still no change)

I found an app that monitors the total CPU load in a graph, instead of creating two seperate graphs. You can get that app from here (http://www.tucows.com/preview/198680). Sure enough, I did not manage to create a graph that exceeds 50% load while playing Oblivion.

So, finally, my question: Is this normal, and do other X2-users get the same results?
Since the Xbox 360 CPU is a multi-core design, and one of those cores alone is pretty weak, I would imagine the game makes quite heavy use of multi-threading. And, from the tweaking thread here in the forum, some people actually gained quite a few fps while tinkering with some SMP-related options in the INI. So I am still not sure if I don't just have some sort of configuration/driver problem...would be nice if others could try out the tool and post their results here. I'll do some more testing in different areas (indoors/outdoors, many NPCs, shadows etc) and post my findings here.

jolle
03-25-06, 04:45 PM
I did a quick and dirty run with the Task Manager on my other monitor.
And it was going between 50-70% acctually..

However I have made some additions to the INI file:
bUseThreadedBlood=1
bUseThreadedMorpher=1
bUseThreadedTempEffects=1
bUseThreadedParticleSystem=1
iNumHavokThreads=2
bUseMultiThreadedFaceGen=1
bUseMultiThreadedTrees=1
iThreads=10

So I may have "Enabled" MT on a few different things, such as the tree generation when running in the wild (which is where i looked at CPU usage).
heavy physics usage should perhaps pull it up even further..

But just running around, Im pretty heavily GPU bottlenecked here with this 6800GT, and the CPU is prolly not handed that much work when just walking around town.. didnt check during loadtimes, but that is one of the things I think they specified themselves..
Also using X2 driver and MS hotfix btw..

EDIT
I raised the grass and tree distance quite a bit, and ran out in to a heavy forested area.
CPU usage jumped up to about 80-89% and hovered there even as I wasnt moving.. so yeah the game definatly takes advantage of both cores when it has to.

BlueSteel
03-25-06, 06:03 PM
Thanks for testing! This is interesting... I never got 80-90% constantly, the best I got in my latest tests were short spikes around 90% when new stuff was being loaded in the background, or when I entered a different district in the Imperial City. Rest of the time was around 50%. I lowered the resolution to 800x600 and disabled HDR/bloom to be completely CPU-bound, and I still got the same results. I also played with those INI-values, but that did not increase the load significantly either.

My guess is that the main renderer is completely single-threaded after all; that would explain why the load is only slightly above 50% when you are not GPU-bound.
I tested this further in one of the Imperial City districts, standing at a position where I could see all NPCs in the area. (does not matter if they are behind buildings, the engine does no HSR from what I can tell) The framerate was pretty low (I had the sliders for actors and shadows maxed), but the CPU-usage was not much above 50%. Maybe some facegen-stuff that adds a few %-points above 50, but that's insignificant. So I guess unless there is some special stuff (sound/physics/background loading) going on, the renderer won't be much affected by having a second CPU at it's deposal. At least that's what I can see on my system so far...

But that does not explain why you get almost 90% load in forests...almost like the whole speedtree-stuff is done on the second CPU. Could you please post your INI file and the location where you got those 90%? I'd be really interested in trying that out for myself, to see if I can reproduce this somehow.

EDIT: manual signature :p
X2 3800+ @2.55GHz, DFI nf4 SLI-DR, 2x 1GB G.Skill 3-4-4-8-1T@255MHz, 2x XFX 7800GT @490/1150 SLI, X-Fi Elite Pro

jolle
03-25-06, 06:43 PM
I cant remember the name of the place, but it was a fort next to a sortof ruined village south of... one of the cities, north west I think.. hehe vague I know.. (Ill try to remember to check the name..
I think any really dense forested area should do, or I assumed it was the tree&grass generation that was causing it.
In towns and cities it seems pretty level around 50%, and in sparsly forested areas aswell, sometimes jumping up a little.

The INI changes I made are listed above.

EDIT
Odd, the place is called Hackdirt.. anyhow I went there again, and now CPU was like 20-30%.. thats lower then in town..
I increased the draw distance of trees and grass but that didnt really change much..
I think I changed Prerender frames in D3D in Rivatuner from 3 to 0 since I was there last, cant think of anything else.

EDIT II
YEah that seems to be what made the difference, set it back to 3 and CPU usage spiked again.
It was a bit dependant on where I was looking..
Hackdirt is south of Chorrol, NW from it is a fort, and when Im standing west of the fort looking east it spiked up around 80-90.
and would be about 50-60ish otherwise..

BlueSteel
03-25-06, 07:40 PM
Thanks alot! Very interesting indeed...is there also a noticable framerate increase when prerender is >0? Ah well, I'll just try to find the place and see for myself. Guess I have to re-enable fast travel to check this out with an old savegame..

Too bad that a prerender limit above 0 also introduces some really bad mouselag if the framerate gets too low...maybe a value of 1 or 2 is a reasonable tradeoff, but then the rest has to be tweaked in a way that framerates below 30fps or so never occur...seems like a tool like the good old FPS Optimizer for Morrowind would come in handy here. Just not adjusting the view distance, but the tree/grass/object distances instead...


My current problem relates to those oblivion gates, somehow my framerate gets cut in half once one of them is within my field of view. (even behind other objects or the landscape) Might be a specific SLI problem tho; I did a quick test with prerender limit 0 which did not change much there. Too bad that those things can't be controlled by turning down object draw distance...


EDIT: Just found out that that "no fast travel" plugin I was using actually disables fast travel permanently in the savegame, even if the plugin is disabled again...guess I'll have to try to find a different spot to test this after all :p

EDIT2: Did some testing in a random forest area near Cheydinhal. I could reproduce those high CPU-usage numbers by adding your INI-tweaks and setting prerender to 3. Unfortunately that did not improve the framerate at all. I have no idea where all that overhead comes from, but I actually got the highest fps when the threading stuff in the ini was at default values, prerender 3. CPU usage was below 50% at those settings. The bad thing is that prerender >0 introduces some really bad mouselag, so the best setting seems to be default INI values and prerender 0. The CPU usage is lower, yes, but the framerate seems to be the same, or even slightly better.

jolle
03-26-06, 05:45 AM
I saw someone mention that disabling water Refraction will help performance around the Oblivion gates.. not tried it myself.

BlueSteel
03-26-06, 10:51 AM
Got it, I had to disable refractions in the INI tho. Water looks exactly like before, so I think refrations are only used to create those air ripples around oblivion gates. The worst thing about the refraction shader was that it disturbed SLI, disabling it completely while an oblivion gate was within the field of view. I don't how how much difference this will make on single-GPU machines tho, I doubt it will be the 55% slowdown I experienced.

The ini setting is bUseRefractionShader=0.