by SimRacing.org.uk   

Read this first!    
 
nonchalant-unilinear
April 24, 2024, 05:16:48 PM +0100 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
Series
Recent
Forthcoming
News: Upcoming Events are as follows: 1 - RRE/AC/ACC Sunday - No event ; 2 - GTL Monday - No event 3 - AC Wed - No event 4 - RRE Thursday - No event

RACE SERIES KEY A19=Assetto Corsa, E10=Raceroom Experience, L23=UKGTL GT Legends, LN2=Legacy NoGrip GT Legends, LNE1=Legacy NoGrip GT Legends Endurance races
 
  Start Here      Home   Help Search Calendar Login Register     LM2 Replays Downloads Rules Links Circuits Teams  
Pages: [1]
  Print  
Author Topic: Report: GT Legends and multicore CPUs.  (Read 546 times)
0 Members and 1 Guest are viewing this topic.
Nappe1
Ex-NoGrip Coordinator
SimRacing.org.uk Staff
Full Member
****
Posts: 830

Protobuilders' Garage


View Profile
« on: February 13, 2020, 07:20:54 AM +0000 »

Some of you may already know this, but for me this was new knowledge.

Background information.
Back in a day, when GT Legends was released, multicore CPUs were just arriving in home desktops and as it was a new thing and GTL seemed to have next to none advantage running on several cores, the design team made the game start with single core active only. However I came across some videos demonstrating how GTR2 gets quite boost when ran with affinity to set to all available cores. So I decided to test if it was same with GTL, after all, games are based on same engine, just different versions.

Benchmarking
So, I looked up for track that can't keep up 60fps with everything maxed out in replay mode with my hardware setup (i7-6700, GTX1070, running 2560x1440) when ran with GTL's default affinity. As I knew JCRR's St. Roch being very slow with FULL shadows, I changed shadows high (and kept everything else full). Fired up FRAPS with perfomance logging, loaded up the replay you can see in Giannini thread and started fps logging from replay time code 50.715 seconds. When car crossed the finish line I stopped the fraps and alt tabbed to fraps log folder to see that I had fps for each second logged to CSV.

Next I took the task manager, went to processes and changed gtl.exe affinity to all cores. (that is 8 in my case, as i7-6series has hyperthreading so it's four physical cores shows up as 8 ones.) And did the replay benchmarking again exactly same as I did with  single core.

The Results
Difference in average fps was no biggie, something like 57 fps vs. 59 fps, but the gain in situations where there was big drops in first run was remarkable. Lowest fps in first run was 42 fps. Exactly in same spot in second run, recorded fps was 57 fps. So, having all cores checked helps a lot in points where the fps usually suddenly drops. I did the tests with vsync on, as that's the way I play the game. Of course that limits exact true performance bit more, but most likely it also helps to balance the fps drops. having drop from 60 to 57 fps is not that big than having drop from 150 fps to 57 fps.


I will add here some graphs as soon as I am back home.

I also noticed that in the first run Core 1 was capped to 100% on those fps drops and even GTX1070 clocks dropped to 1523MHz. So system was so CPU limited that GFX card had huge amount of idle time to spend. In second run none of the cores reached no more than half of their peak rate and the GFX card kept it's clocks in max 1924MHz. So the efficiency was really better.


Why This happens then?
Most likely the process scheduler in Windows XP was not really as efficient as it is now in Windows 10 and 10 to 15 years ago cpus had 2-3 cores, while there's now 4-16 cores That means having always free core to other than GTL task. Another thing is  that DirectX's threading capabilities have come long way since early 2000's and while GTL's old DX9 engine cannot use parallerlism available in DX12, The overall multicore efficiency is much better. It could be that DX9 background workers cannot use more cores than what is allowed to it's host application, so as the GTL locks itself in single core, it also locks the background DX processes behind that very same limitation.


So, How to fix it?
As windows still does not allow setting default affinities from shortcut properties, there's several more or less easy ways to do this. Most obvious is start GTL and go to task manager to change the affinity. Of course this is not very handy, but more or less annoying. Some people use commericial computer performance analytic tools, which allow adding affinity setup in shortcuts, but as this feature is then part of the quite big suite of tools, it is more or less like killing snail with steam roller.

So, if there's no good solution available, I usually do one by myself. Smiley It's a small program, that you start before GTL and it looks for gtl.exe process and when it finds it, it automatically sets the affinities to settings you have yourself defined. After that it keeps watching every 30 seconds that the affinities stay as you wanted.

I will release this software when I have finalized it. Smiley
« Last Edit: February 13, 2020, 07:43:56 AM +0000 by Nappe1 » Logged

GTL Modding: The real never ending story.
Member of - Protobuilders' Garage - Brickyard Legends Team - RP Design
Wiltshire Tony
Director, UKGTL
SimRacing.org.uk Staff
Hero Member
****
Posts: 15109


"I'd rather be Sim-Racing" said Noddy


View Profile
« Reply #1 on: February 13, 2020, 09:57:05 AM +0000 »

I think most using GTL here are aware of these limitations.

We also use this to use more available RAM. https://www.simracing.org.uk/smf/index.php?topic=12160.msg218224#msg218224
Logged

The only UK based GTL community which races every Monday night. We are always looking for new drivers of all ages and abilities. GTL here since 2006.

Nappe1
Ex-NoGrip Coordinator
SimRacing.org.uk Staff
Full Member
****
Posts: 830

Protobuilders' Garage


View Profile
« Reply #2 on: February 13, 2020, 11:06:12 AM +0000 »

I think most using GTL here are aware of these limitations.

We also use this to use more available RAM. https://www.simracing.org.uk/smf/index.php?topic=12160.msg218224#msg218224

I was aware that it used to be so that there was no use using more cores than one.
That seems no longer be true. There is clear advantage of forcing the GTL use at least 2-3 cores. That was suprising.

2GB barrier breaker (aka. 4GB patch) is mandatory for most of the JCRR's tracks, so I am using that.
Logged

GTL Modding: The real never ending story.
Member of - Protobuilders' Garage - Brickyard Legends Team - RP Design
S.Cargo
Jr. Member
**
Posts: 63



View Profile
« Reply #3 on: March 25, 2020, 04:29:21 PM +0000 »

A bit late to the party (as usual) but... don't you guys know about RunAff ? (I would be surprised that you don't)
Just in case, I've been using it for years on P&G and now GTL, and on my PC it did make a big difference.
from the RunAff readme:
Quote
RunAff Version 1.3
This utility will launch a program and then set its Processor Affinity Mask.
The mask governs which CPU's the program will be allowed to use.
This version supports up to 16 processors.
A delay can be specified in seconds, after launch, before attempting to set the affinity mask.
Notification of confirmation of failure is by audio messages.
For programs using StarForce protection there is an optional switch to wait until the StarForce window closes before starting the delay timer.
RunAff needs 4 parameters, the 5th is optional, any following parameters will be passed to your program
Simple format:
RunAff.exe <program> <folder> <processors> <delay> [WaitStarForce] [Program parameters]
<program>  - the name of the executable file. If the path is not included, then it is expected to be found in the startup folder
<folder> - the startup folder
<processors> - specify which processors to use, as a string, e.g. 015EF (Processors are numbered 0-9ABCDEF)
<delay> - number of seconds to wait before attempting to set the mask
WaitStarForce - extra wait until StarForce window closes, before starting timer for the delay
Examples:
RunAff GTL.exe C:\GTL 0123 10 WaitStarForce - Run and set for the first 4 processors, 10 secs after StarForce quits
RunAff GTL.exe C:\GTL 23 0 - Run and set for the 3rd & 4th processors, immediately
RunAff GTL.exe C:\GTL 9 120 - Run and set for the 10th processor, after 2 minutes
Not sure where you can download this utility from at the moment (it used to be on NoGrip), but if anybody wants to give it a try, just let me know.
Logged
Pages: [1]
  Print  
 
Jump to:  

Hosted by DaveGymer.com
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.138 seconds with 25 queries.