PDA

View Full Version : System Performance Query



cjellwood
11-09-2010, 12:19 PM
Hi,

Over the past few days I have been monitoring the performance of various signals in Win7 perfmon utilty while running FSX. The reason for doing so is because I am not buying the usual theory that FSX is simply CPU hungry. I have a situation where my CPU is loaded to 100% when at Heathrow (standard) with high frames, but when I load Heathrow extreme there is a drop in CPU load to 80% and the frames drop considerably. Basically what I witness on my system is 100% CPU -> 100fps, and 80% CPU -> 40fps on the other end of the scale.

Surely one would expect the CPU load to be highest when frames are low and the machine is struggling to keep up? Not the other way round? Here are my screen shots showing this phenomenon...

http://www.leons-world.com/img/heathrow_extreme.jpg
http://www.leons-world.com/img/heathrow_ex_Dense_Std.jpg

Overclocking the CPU makes no difference.
Overclocking the GPU makes no difference.
SLI made no difference (apart from being a bit smoother)

I agree that the CPU and GPU can be a bottleneck but only if they are low end. The minimum CPU and GPU requirements for FSX seem to be 3.4ghz on the CPU and GTX260 minimum GPU power (or equivalent). Once at that point the rules seem to change and something else becomes the foe!

Going back to PerfMon, what I found is a readin named 'File Read Bytes / Sec' in the System object drop down. I dont have a clue what it means but it is the only signal that tracks fps rates constantly i.e. low fps = low read bytes per second etc.

Microsoft says this about 'File Read Bytes / Sec'...
"Shows the overall rate, in incidents per second, at which bytes were read to satisfy file system read requests to all devices on the computer, including read operations from the file system cache. "

Given that installing a RevoDrive SSD did not improve this signal, I can only assume this relates to cache reading from memory in my case. That makes sense because memory is the only thing I have not spec'd out on my machine yet. It is currently 1066mhz DDR2 OCZ Reaper, here is full system spec which I should have mentioned earlier sorry...

AMD 965 (3.4ghz)
Crosshair II Mobo
OCZ RevoDrive 128gb SSD
OCZ 1066 Reaper DDR2
GTX260
750w PSU

I have little technical knowledge of the goings on in PC's so any help is appreciated to get this solved. Maybe RAM speed is the magic bullet? Has RAM been benched on a top end system yet? Could something be overclocked to improve that signal?

http://www.leons-world.com/img/heathrow_ex_file_bytes.gif

thanks
Chris

Neil Hewitt
11-09-2010, 01:57 PM
Hi Chris.

I'm not an FSX tweaking expert but I do know a fair bit about software performance, as I build software for a living.

The GPU is almost never a bottleneck in FSX, simply because it doesn't push enough work at the GPU to tax modern graphics cards much. This is one of the reasons that Lockheed's Prepar3d team, who are developing the code from what was Microsoft ESP, are looking to push some of the work calculating the scene onto the GPU using the toolkits provided by nVidia / AMD to allow the GPU to be used for general-purpose number-crunching in their 'spare' time.

I/O is rarely a bottleneck with modern storage technology. A fast disk and bus can probably fetch textures off the disk faster than FSX can actually process them. And much of this work was put onto separate threads - and hence in a multi-core system, separate cores - in FSX SP2.

The CPU is always where the problem lies with FSX. There's nothing else it can be, really. As to why you see lower CPU usage in Heathrow Extreme vs ordinary Heathrow on v dense, it could be any number of reasons. Without knowing how that add-on is written precisely, it's hard to know. If, for example, it happens to push the GPU harder than stock FSX is capable of doing, then you might find that your frame rate drops and a side-effect is that the PC is having to wait on the GPU to complete to such a degree that it can no longer saturate the core. With extensively single-threaded code, that can be problem. You can only get to 100% CPU if the processor has enough instructions in its pipeline to run at full tilt. Sometimes that's not even possible - software maxes out before the CPU does because it's dependent on something else - I/O, GPU, sometimes just badly-written code that has badly synchronised locks in it.

For example, suppose I write some code that sets a so-called 'mutex' - a mutually-exclusive flag - to indicate that it's starting an operation that another thread should not interrupt. Code on the other thread also wants to run, but it must sit and wait for the first code to finish and clear the mutex. Suppose the first piece of code is buggy and doesn't clear the flag? Then the second thread will sit and spin forever. It will take only a tiny fraction of the CPU available but it will bring the process to a dead halt. This is called a deadlock. I doubt there are many deadlocks in FSX, but other types of performance problem arising from poor synchronisation of operations can cause exactly the scenario you see - performance drops at the same time that CPU does.

You do make a good point about memory. In theory, if you have independent clocks and can thus keep the RAM at standard clock while overlcocking the CPU, you could reach a point where memory fetch operations became expensive in terms of CPU cycles consumed. However, most Core2 systems have their RAM clocks and FSB clocks synchronised so that the RAM clock speed is a set multiple of the FSB speed. This is intended to ensure that the RAM runs at the right speed for the CPU. Unless you've been heavily tweaking your set up and have a real enthusiast's motherboard that is extensively tweakable, I doubt it's that.

One thing I did note is that you're running FSX in windowed mode in both of those shots. Performance in a window on the desktop vs full-screen will differ, because under Win7 the desktop itself is a DirectX surface and you are going through DWM, whereas in full-screen mode you don't have to have the same overhead.

I also don't seem to see any autogen on your screen shots, nor any AI traffic. These two are known CPU hogs. I always get a serious frame-rate boost from turning off autogen. With everything maxed out I would guess your frame-rates at stock Heathrow would drop a bit.

Now, let's be realistic here. A Core i7 at 3.4GHz is going to give you an extraordinarily large number of FLOPS, IPS, however you measure it. Far far more than a Core 2 at the same clock speed. There's enough CPU there to let you get good frame rates in FSX in many scenarios. But it's clear that FSX is more than capable of saturating the fastest single core out there if you turn the sliders up high enough and run enough add-ons. Nothing short of fully re-architecting the software to take full advantage of multiple cores will let us run FSX at the full speed modern PCs are capable of. That isn't going to happen any time soon, and I think we can assume that Microsoft Flight will not be the answer, either.

An extensive re-write is the only true answer to the performance problem. There is no indication that clock speeds are going to go up any time soon, and most of the clever things that let you do more things in a single clock-cycle on a single die have already been done; I doubt we'll see much more efficiency gained there. That leaves ever-greater numbers of cores as the one solution to greater computing power. Which means multi-threading has to become a way of life for games programmers.

cjellwood
11-09-2010, 03:24 PM
thanks for the informative reply! Yes there is no AI in my shots because I wanted to keep the test as clean as possible, and no autogen because it does not show with Horizon addon scenery anyway for some reason.

After making this thread I went into my bios and set my memory to ganged mode. It made a nice imporovement to the smoothness and there was less stutters but no frame increase unfortunately. It would be good to bench the RAM soon to see what effect it has on FSX in real life terms. My Crosshair II mobo only supports 1066 DDRII so the next step is to swap the mobo for a Crosshair III and load it with some of the new 1600mhz sticks. A fairly expensive upgrade which is not welcome so close to xmas.

Chris

Neil Hewitt
11-09-2010, 09:47 PM
Ganged mode is a new one on me, but then I haven't built an AMD board since before the Pentium 4 days so I'm not up to speed with their latest stuff. From what I can see ganged = dual channel in Intel speak. I can see how that might help slightly since the majority of the work is on a single core and so that core benefits from direct access to all RAM. In a properly multithreaded environment it would actually slow things down slightly.

Memory optimisation is a bit of a dark art. Having your RAM run sympathetically to the task at hand is important for performance, certainly. But at the end of the day it doesn't change the fact that FSX was written in the expectation of a new generation of 4-5 GHz single-core processors that never happened. Even the single-thread optimisations of the Core 2 and iX series doesn't provide enough of a bump to approach where the FS team clearly thought single-threaded performance would be by 2008.

Eventually, someone will get over the concurrency hump and write a sim that will take full advantage of all the cores in machines that will increasingly have 6 or 8 of them. That will be an awesome sim :D

cjellwood
11-11-2010, 09:07 AM
4GB of 1600mhz Corsair Dominators have arrived but no motherboard to put them in yet because nobody wants to buy my old Crosshair II and OCZ Reaper 1066 Ram :(

Chris

cjellwood
11-20-2010, 09:03 AM
Here is something interesting I have just discovered.....

After stripping down my Crosshair II mobo for sale I put together a mini-ITX PC based on a Zotac 9300 GEFORCE motherboard. The processor in this rig is a Intel Core 2 Duo E6750 (2.6ghz) backed up with 4gb of respectable 800mhz ram. It runs nice and is a tidy little machine but FS runs at 80% less performance than it did on my previous machine. Well that is until I minimise the screen where the performance returns. The more I minimise the screen the better the frames which most will not find unusual. The frames can go from 20fps in full screen to 150fps if minimised to thumbnail size. I have heard of that before but never experienced it until now, it never happened with my AMD 965 even if restricted to 2 cores. It did not happen on the AMD 965 system even if I run it on the lame motherboard GPU. On the AMD system with Crosshair mobo there was never a difference in performance whether I was in full screen or minimised.

Is this an Intel phenomenon or could it be the motherboard? Maybe the spec of the motherboard is often overlooked when gearing up for FS!

In any case, as mentioned in the previous post I have DDR3 ram ready and waiting but have decided to sell all the current AMD/Crosshair gear in anticipation of the new Bulldozer which should be out in Q1 of 2011. The moment an AM3+ board is available for sale I will pick it up with a bulldozer and show the results here.
This is the link to my AMD/Crosshair listing on ebay if anyone is interested in bidding.
http://cgi.ebay.co.uk/ws/eBayISAPI.dll?ViewItem&item=200544640552&ssPageName=STRK:MESELX:IT

Chris