Test Your Rig's Civ 5 Performance - Built in Benchmarking!

Status
Not open for further replies.

Bleser

Prince
Joined
Jun 23, 2002
Messages
445
Location
USA
Hey Civ5ers,

Some of you may know this, but I stumbled across a Word document in the game's install directory that shows how to run three different types of benchmarks with Civ 5. They seem very well thought out and can help determine bottlenecks in your system's performance. I have not had a chance to run them yet (I use my free time to PLAY this fantastic game!), but could imagine that people posting they're results for the late game benchmark or unit benchmark here could help people identify if it is their CPU, GPU, RAM, or a combination holding them back and what would be the most wise component to upgrade.

Here is the text from the Word document:
Civilization 5 Benchmark modes.

The benchmark modes in Civilization5 are designed to stress and test various aspects of the users hardware and supporting software ( e.g. drivers ). There are 3 benchmarks in total. Each benchmark tests a specific workload scenario. In addition, any of the tests can be run with command line modifiers which alters the way threaded rendering submission is handled by Direct X 11. To ensure the benchmark results are reported, in the config.ini ( located in your “\Documents\My Games\Sid Meier's Civilization 5” ) make sure that “LoggingEnabled = 1”. The results will be stored in the logs folder at the same level as the config.ini. Ensure that “MaxSimultaneousThreads” is set to the number of processor cores you wish to test against. Values for MaxSimultaneousThreads greater than 16 are unsupported and clamped.

Late Game View Benchmark. This benchmark is designed to simulate a late game workload. This scenario exercises all aspects of the game engine pipeline since all simulation and renderable object types are represented at a frequency consistent with a game that has been in progress for 300+ turns. To run this test, run the application with the command line option “-benchmark lateGameView”. Case insensitive. Results are reported in the “LateGameViewBench.log” file. Full Render Score reflects the active rendering settings of you application. No Shadow render score turns the shadow pass off for the application. No Render score emulates an infinitely fast GPU and will bypass most driver overhead. This serves as a baseline for Civ 5’s engine performance vs GPU and Driver performance. ( note while in this mode, the display will flicker ). All results are reported as frames rendered over 60 seconds. Additionally the number of draw call made per frame is reported. Note: Mousewheel zoom in some benchmarks are enabled for inspection, however using this will affect the end results. For consistent results the user should avoid altering the zoom level.

Unit Benchmark. This benchmark is designed to stress test the users system by executing a parallel series of animation and rendering tasks. The workload will heavily stress the CPU as well as GPU and driver. It is designed as a total throughput test to evaluate a users system and determine where the bottlenecks occur. Results reported are similar to the Late Game View benchmark, however the display settings are overridden for consistency. Therefore changes to the graphics settings will not impact the test except for setting resolution. To run this test, run the application with the command line argument “-Benchmark Units”, case insensitive.

Leader Benchmark
The Leader Benchmark is designed to test advanced rendering features which we use for our leader scenes. This test can run through any of the leader scenes specified and report the performance for that leader. Also this test can be used to measure the performance of Compute Shading features via our variable bitrate compression technology. This compression test measures the GPGPU performance of the video card. To run in leaderhead benchmark mode, start the app with “-LeaderBenchmark “ To run in compression mode, start the app with “-LeaderBenchmark –compression”. Note: Compression mode will do nothing but continually decompress and display textures for the given scene for the specified duration. The leaders themselves will not be displayed.

The full syntax for the command line options are: -LeaderBenchmark [-compression] [-duration timeinsecs] [-norendering] [-logname logfilename] <listofleaderfiles> -logname is the name of a file to append to (Default is 'LeaderBenchmark.csv') -duration is how long to remain in each scene -norendering is equivalent to the norender option in the previous benchmarks. <listofleaderfiles> is a list of XML files (e.g. CatherineScene.xml OdaNobunaga_Scene.xml)

The benchmark dumps a file into the app directory named 'LeaderBenchmark.csv' which contains the resulting information. Statistics are given for each leader independently, and they're appended onto the file from one run to the next. Mean FPS is the statistic that matters. It's an average over the entire run for each leader, with the first 30 frames ignored to prevent load time and startup hitches from skewing the results.
General rendering options. These options allow advanced users to change the way Civilization 5 handles threaded display lists (DL) on DX11. For more information about this, users are encouraged to read the DX documentation. Note: this is for advanced testing for threaded GPU drivers. These settings are also stored in the config.ini file.
“ThreadingMode = 0” Controls the threading strategy: (0=default,1=no display lists,2=one DL per command set, 3=split mode, 4=aggregate mode).
0 - Do whatever we think is best (equivalent to 2currently) 1 - Disable display list use and do everything on the immediate context 2 - Our current behavior
3 - Split and merge command sets, aiming for a particular display list size.
* This mode is aiming at a balanced load. It will squish together small DL's, but will also rip large ones apart. This may produce more DLs than our current path does, depending on the workload.
4 - Combine small command sets into one display list, but never split them.
* Should be as good as 'split' at eliminating small lists, but won't try to balance the load.
“TargetJobSize = 100” Number of commands per diplay list to aim for in SPLIT and AGGREGATE thread modes.
 
hmm, maybe people with 4core and hyperthreading are having their performance issues due to "MaxSimultaneousThreads" parameter not working properly in game.

I have i3-530, hyperthreading off which basically should give the same single-thread performance as say Core i7-940 ( also with hyper threading off) and at least the demo end-turns are running fast as a fox
 
It seems to be broken for me.

On the LateGameView test I just see 2 settlers standing on each side of a big sea, nothing happens, the camera doesn't move, I can only zoom in and out. After a while the shadows from the settlers detach from the units and get stuck in place on the screen.

On the Units test I just get a uniformly dark grey screen that slowly gets brighter and brighter.
 
This kind of misses the point. The problem isn't one of performance, it's a problem with grid locked units.

The AI tries to move every unit every turn. If they have some space to move that's fine. The problem comes in the later game when almost every tile has a unit on it. Most can't move until another unit moves, because they are surrounded.

If you try to move an army through an allies territory this becomes very apparent. You can't move your troops till other troops get out of the way. They can't move, because you're in their way (lol)

I played a deity game, and by turn 200 it was impossible to attack anyone who isn't on your border. Hitting 'next turn' takes 5-10 minutes - not because you're waiting for things to render or fights to resolve, but because you're waiting for 1000 gridlocked units to get out of each others way.

Nothing happens, then eventually unit #587 moves, which enables #54 to move, which enables #712 to move.. rinse and repeat like a million times as each unit tries to use its 2 moves (for no apparent reason other than because 'it can')
 
On the topic of the benchmark mode, great info, thanks!

This kind of misses the point. The problem isn't one of performance, it's a problem with grid locked units.

The AI tries to move every unit every turn. If they have some space to move that's fine. The problem comes in the later game when almost every tile has a unit on it. Most can't move until another unit moves, because they are surrounded.

If you try to move an army through an allies territory this becomes very apparent. You can't move your troops till other troops get out of the way. They can't move, because you're in their way (lol)

I played a deity game, and by turn 200 it was impossible to attack anyone who isn't on your border. Hitting 'next turn' takes 5-10 minutes - not because you're waiting for things to render or fights to resolve, but because you're waiting for 1000 gridlocked units to get out of each others way.

Nothing happens, then eventually unit #587 moves, which enables #54 to move, which enables #712 to move.. rinse and repeat like a million times as each unit tries to use its 2 moves (for no apparent reason other than because 'it can')

Good explanation of the problem. Maybe this should be its own discussion? I've spoilered my reply for now, so as to not derail the tread about the benchmark mode.
Spoiler details :

Just a guess, but I expect this scenario falls into the "not the way the visionary expected it to be played" bucket. My opinion, the 1upt is intended to discourage or even eliminate the practice of having hundreds of units, as each unit represents tens, hundreds, or possibly even thousands of individual soldiers. If you try to get too many units into a battle, your own units will be blocking each other. I could see using maybe one row of melee units and one row of ranged, with a rear area of reinforcements which can't move forward until the lines break, but not hundreds of units where the whole map is choked.

And there is not much to be done about it as far as programming goes. Gridlock is gridlock no matter what algorithm you use or what hardware the program is run on. I suppose the pathing code used by AI's could mark units as able / unable to move and update when the last hex is filled / first hex is empty, but it's still a massive loop. Unless they bypass a unit for the turn once it can't be moved the first time but that would lead to exploitation by humans who can work out a pattern to making progress with minimum empty tiles.
 
"any of the tests can be run with command line modifiers "

How do you run the command line modifiers? I started a game and pressed the tilda key, but that didn't bring up a box to type in the command.
 
hmm, maybe people with 4core and hyperthreading are having their performance issues due to "MaxSimultaneousThreads" parameter not working properly in game.

I have i3-530, hyperthreading off which basically should give the same single-thread performance as say Core i7-940 ( also with hyper threading off) and at least the demo end-turns are running fast as a fox

Could you elaborate more about this? I have an Intel Core i5 750 overclocked to 4.0 GHz and the game performs very well - but if there is some bug about cores to improve the performance I'd be all ears.
 
"any of the tests can be run with command line modifiers "

How do you run the command line modifiers? I started a game and pressed the tilda key, but that didn't bring up a box to type in the command.

You use a command-line interface like cmd.exe to start the game and then just append the modifiers like this: "C:\Games\Steam\steamapps\common\sid meier's civilization v\CivilizationV.exe" -benchmark units

Alternatively you can create a shortcut to the game and insert the modifiers in the Target field.
 
Status
Not open for further replies.
Top Bottom