X1685
#1
Posted 22 July 2013 - 02:46 AM
When in debug I see that the GPU line now has P95 and P99 values. I am wondering what these are showing because my P99 hits 230% occasionally, when the tile shape/texture load process activates.
#3
Posted 22 July 2013 - 06:51 AM
#4
Posted 22 July 2013 - 07:14 AM
Quote
1. The HUD DEBUG text now includes data about P-95 and P-99 statistical percentiles for frame time (measuring FPS). It shows how much slower the P-95 and P-99 frame times are to the P-50 (mode) frame time, which is shown as well. Data is collected and kept for 10 seconds.
To give you some idea what these values mean, a P-95 display of "25%" means that 5% of frames (in the last 10 seconds) were 25% or more slower than the mode (middle value). Similarly, for P-99 and 1% of frames. What this does is allow you to see how consistent the game is being at rendering frames - lower P-95 and P-99 percentages are better.
2. When the HUD DEBUG page is active, 5 live graphs are drawn in the bottom-right of the screen. These are, from top to bottom, frame time, render process, updater process, loader process and sound process. The graphs are updated every frame, though the four process graphs only have new data every 250ms (for performance reasons). The frame time graph is accurate to the frame.
These graphs will allow you to see exactly when and how much the processes doing work affects the frame time, both in overall FPS and in terms of variation (jitter, stutter, etc.).
James Ross
Open Rails 3D & Environment Lead Developer
Regards,
Rob Roeterdink
#5
Posted 22 July 2013 - 11:54 AM
#6
Posted 22 July 2013 - 01:04 PM
copperpen, on 22 July 2013 - 11:54 AM, said:
Not true, the loader is meant to use the processor it does and its CPU usage is completely unrelated to any non-smooth experience you have. It is people making such statements that make me hesitant to show any data live in OR, so you can expect these graphs to be hidden in the future.
#7
Posted 22 July 2013 - 01:17 PM
#8
Posted 22 July 2013 - 01:47 PM
copperpen, on 22 July 2013 - 01:17 PM, said:
Oh, that's a good one.
copperpen, on 22 July 2013 - 01:17 PM, said:
It is a combination of at least two things, that I've seen so far, but it obviously varies somewhat by PC and route. The main issue is the GPU stalling unnecessarily, due to the poor design of the graphics drivers (at least for NVIDIA). The drivers return from creating and setting up a resource when its data is only in RAM, not VRAM, and then when you try and draw using the new resource (e.g. new texture, vertex buffer, etc.) the GPU stalls (waits idle) while the driver slowly copies it from RAM to VRAM. This is infuriating behaviour to watch as there appears to be no good solution except to simply "wait" between a resource finishing loading, and trying to actually use it (see experimental feature 'loading delay').
The other issues I have seen is generation 2 garbage collections. These are much more unpredictable, and during normal running sometimes occur without any visible pause at all, and other times cause a single frame to be delayed by 100ms. There are many, many factors in this; we could try to not create as much garbage during loading of data, or even just generally, or (my preference) we can try newer versions of .NET (4.0 in particular has some good GC improvements). This is, however, not as easy as in most apps due to the complex libraries we use.
#9
Posted 22 July 2013 - 04:06 PM
now we're one this subject, there's something that's been bothering me for quite some time.
When the system has to load a 'new' sound (i.e. one that's not been played before in this session), the whole display freezes while the sound is loaded.
I would assume that with multithreading etc., display would be independent from sound, but apparantly that is not so.
Are we one thread short - should sound have it's own thread? Or is there something else going on in the background that's causing this?
Thanks,
Rob Roeterdink
#10
Posted 22 July 2013 - 10:34 PM
James Ross, on 22 July 2013 - 01:04 PM, said:
It is people making such statements that make me hesitant to show any data live in OR, so you can expect these graphs to be hidden in the future.
A minor comment on the last sentence :rotfl:,
Thats the exact reason why most cars do not have numerals on any temp or pressure gauges (if they have them). This goes back to at least the 1960's when car manufacturers started getting many complaints of fault cooling systems not long after the introduction of high cooling system pressures. These pressures allowing a higher coolant temperature and allowed the engine to run more effiecently and also the heater performed better. The solution adopted was to remove the numbers and provide a out of range colour coding on the scale.
Lindsay