Jump to content

Steam: 2.9.8.1214+ FPS performance issue


Go to solution Solved by Moezilla,

Recommended Posts

Posted
12 hours ago, scommander2 said:

Right.  I think that bitsum Process Lasso can make the CPU affinity adjustment in real time when dcs.exe is launched according to SP's video, but I have not tried it yet.

Curious what you'll find, that would be great ....

Posted

Process Lasso Testing

Initial Setup

  • Launch DCS first
  • Select dcs.exe and set CPU affinity for all P-Cores:

image.png

  • select dcs.exe and set CPU priority "Above Normal":

image.png

  • verify the above settings for: 1. CPU affinity with all P-Cores and CPU priority "Above Normal":

image.png

  • check task manager for the CPU metrics as well as Game bar:

image.png

image.png

  • Exit DCS
  • Relaunch DCS and verify task manager (details) for:
    • CPU affinity   - no longer to set again
    • CPU priority   - no longer to adjust again

Reboot my system

  • Launch DCS and verify with task manager (details) for:
    • CPU affinity   - all P-Cores are assign for dcs.exe
    • CPU priority  -  running as "Above Normal"

Conclusion

Process Lasso and ParkControl are very good software to handle:

1. CPU parking disable/enable (ParkControl only)

2. Core scheduling

3. CPU affinity with the specified core(s)

4. CPU priority for the specified process

5. more features, but the above features are good for DCS so far.

However, these two software are running in the background when Windows starts up.

CPU Unpark is one time setup with the minimum features but the app terminated when the user closes it.   My powershell script is for adjusting CPU affinity and CPU priority, but it is required to be executed after the new DCS launched for every time.

 

 

 

 

Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted (edited)
4 hours ago, scommander2 said:

Process Lasso Testing

Initial Setup

  • Launch DCS first
  • Select dcs.exe and set CPU affinity for all P-Cores:

image.png

  • select dcs.exe and set CPU priority "Above Normal":

image.png

  • verify the above settings for: 1. CPU affinity with all P-Cores and CPU priority "Above Normal":

image.png

  • check task manager for the CPU metrics as well as Game bar:

image.png

image.png

  • Exit DCS
  • Relaunch DCS and verify task manager (details) for:
    • CPU affinity   - no longer to set again
    • CPU priority   - no longer to adjust again

Reboot my system

  • Launch DCS and verify with task manager (details) for:
    • CPU affinity   - all P-Cores are assign for dcs.exe
    • CPU priority  -  running as "Above Normal"

Conclusion

Process Lasso and ParkControl are very good software to handle:

1. CPU parking disable/enable (ParkControl only)

2. Core scheduling

3. CPU affinity with the specified core(s)

4. CPU priority for the specified process

5. more features, but the above features are good for DCS so far.

However, these two software are running in the background when Windows starts up.

CPU Unpark is one time setup with the minimum features but the app terminated when the user closes it.   My powershell script is for adjusting CPU affinity and CPU priority, but it is required to be executed after the new DCS launched for every time.

 

 

 

 

If I understood it well. When you stop the "Power" service, your CPU will never park cores and will work with 100% performance all the time. So you don't need to run an additional software and you reduce a lot of interupts made by "Power" service. So it might be a better solution than "CPU Unpark". I have an old CPU so my cores are never parked and I didn't tried this solution myself. But there is a guy who claims that this is the best solution ever. The game starts running very smooths.

Edited by JohnRedcorn
Posted (edited)

Hi @JohnRedcorn, let me share what I know about it (I may not say 100% correct since I am an UNIX person not a Windows guy.  In UNIX world, there is no CPU park rather than CPU idle/bound).

The Power service profile with 100% (High performance) with the sub-item processor power management is where I can set the minimum and maximum CPU unitization percentages.  And, I do make both min/max 100% to use them possible.

About the CPU parking disable, I guess/think that an entry in the registry to be zero from 100 to make Windows not to park a CPU possible.

I think that both are important for me to ensure the CPU performance/availability when dcs.exe needs the CPU resource.  Well, will these options work for everyone, it is hard to tell 🙂 

Edited by scommander2
Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted
18 hours ago, scommander2 said:

Hi @JohnRedcorn, let me share what I know about it (I may not say 100% correct since I am an UNIX person not a Windows guy.  In UNIX world, there is no CPU park rather than CPU idle/bound).

The Power service profile with 100% (High performance) with the sub-item processor power management is where I can set the minimum and maximum CPU unitization percentages.  And, I do make both min/max 100% to use them possible.

About the CPU parking disable, I guess/think that an entry in the registry to be zero from 100 to make Windows not to park a CPU possible.

I think that both are important for me to ensure the CPU performance/availability when dcs.exe needs the CPU resource.  Well, will these options work for everyone, it is hard to tell 🙂 

 

Well, the guy here on the forum says that disabling "Power" service is better than to set your CPU to a 100% usage for minimum and maximum performance in power plan. The reason for this is that even if you set it to 100% usage, the "Power" service continue producing a lot of interupts, so your CPU need to handle these interupts. When the "Power" service is not working then there will be no interupts at all from this service, which is reduce CPU usage. But because this service is not working, winodws woesn't controls CPU usage at all, so it will work with 100% performance all the time and I guess that there will be no core parking at all. But I'm not sure about core parking.

 

Just read this thread:

 

  • Like 1
Posted

Thanks for sharing.

I did a quick testing with the power service disable and rebooted my system.

I agree that there was no interruption from the power management but the CPU unpark is still required.

Comparing both scenarios w/o power management: I found there is not too much different in my system (again, the result may be different from other users).

Thanks. 

 

 

Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted
3 hours ago, scommander2 said:

Thanks for sharing.

I did a quick testing with the power service disable and rebooted my system.

I agree that there was no interruption from the power management but the CPU unpark is still required.

Comparing both scenarios w/o power management: I found there is not too much different in my system (again, the result may be different from other users).

Thanks. 

 

 

You are welcome.

Well, with DCS you never know which solution will give you the best result. But it is worth trying every solution possible. 👍

Posted
50 minutes ago, JohnRedcorn said:

Well, with DCS you never know which solution will give you the best result. But it is worth trying every solution possible. 👍

I did find something interested to me while the power service was off...

I would like to spend more time to retest again and share my findings... Thanks 🙂 

Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted

I'll throw my two pennies in this thread, given my recent experience with the latest patch, version 2.9.8.1214 MT. This latest patch has reintroduced a ton of studdering compared to the last patch, which was running at a steady 70 FPS with very few hiccups. It's the same performance whether playing Multiplayer or stand-alone. I am getting around the same FPS but with constant stuttering.  I have played with Lasso with very little change, so until this is fixed, it's not that fun to fly at the moment.  I do hope they look at fixing this "improvement" sometime soon. 

Rig

I9 9900K 5.1

4090

64GB Ram

M.2 SSD

VR Quest 3  using openxr

Posted
9 hours ago, Scendore said:

I'll throw my two pennies in this thread, given my recent experience with the latest patch

Thanks for inputs.  At least, few of us have the very similar potential implementation issue due to the recent releases. 

Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted

Stuttering in 2nd game start when core 8 affinity is on with windows 10 LTSC and 11 Pro.

Some forum post i saw suggested to install windows 11 pro (dual boot, still hate it for all them graphics interface changes).

BUT the stuttering is there ALSO on second game start & play. Definitely this bug is NOT fixed on my system.

Posted (edited)
1 hour ago, jackd said:

Some forum post i saw suggested to install windows 11 pro

Really?  Windows 11 Pro makes the different with the CPU8 affinity on verse Windows 10 xx?

I had an ED tech support ticket created about the DCS with CPU8 affinity on/off, and the ED tech support told me that DCS has no restriction with the CPU8 affinity on.

So, it sounds that it is OS issue?!

Thanks for info...

Edited by scommander2
Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted (edited)

By now i am open for any possible fixes, the last DCS that worked fine for me was 2.9.8.1107.

Just finished installing windows 11 pro, and the latest DCS 2.9.9.2280

Makes no difference.

Edited by jackd
Posted

Sharing the CPU8 affinity question with the ED Tech support ticket

My question:

Is it possible to clarify for me since I got confused that setting CPU affinity on CPU8 has no impact to dcs.exe or not?  Thanks.

The ED Tech support replied:

In theory, this can reduce the waiting time for a response from an overloaded core. I am based on the opinion of the users who found this workaround.
I don't have any lags, however, disabling the eighth core dramatically reduces the overall load on the entire processor. I can't explain it, but it impressed me.  :)

 

 

  • Like 1
Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted (edited)

the fix right now seems to use projectlasso from Bitsun, where you can save the settings for core 8 affinity off only when DCS.exe is active,

tip was from ED supporter Alexander:

- processlasso rule set for DCS.jpg

Edited by jackd
  • Like 1
Posted

CPU Parking / Power Performance Tuning

Based on @JohnRedcorn (thanks for sharing), I did find something interested to me, and there were my observations when the power service was disabled:

1. All P-Cores were active and no more parking, even the system rebooted or booted from cold first time.

2. CPU Parking app was errored since all power plans were disabled, the Bitsum ParkControl had no more parking option (I think that ParkControl CPU parking is 100% based on on one of the power plan).

image.png

3. My total CPU utilization was able to go above 70% or more,  and depended on the load of DCS needed.

4. FPS was very stable.

5. It was required to reboot the system after the power service disabled.

 

Question: Is it possible to keep the power service and having CPU unparking constantly?

The issue that I find that the power plan does control my CPU parking as soon as I login my account (because ParkControl does report some CPUs are parked, as well as the CPU unpark) regardless I have the "never" sleep on in my setting. Some or the specific process does make the changes and ParkControl or CPU unpark settings are overriden. 

I found the following link that describes all possible power/performance tuning to adjust the current power plan that I set:

https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning

I have applied lots of options that are related processor and performance, and I think the changes do help somehow according to the reports from ParkControl and CPU unpark.

The CPU affinity and priority are still applied for dcs.exe to ensure all threads can take all P-Cores possible.

 

My conclusion

My personal opinion about DCS stuttering is caused by OS settings since the new DCS design is required the multithreading (MT) CPU environments.  However, if OS does park number of CPUs, then DCS will not able obtain the CPU resources to processes data in time and the bottleneck is introduced.

This is just beginning, more tunings that I will try.  Not sure 24H2 will make better or worse.   

 

 

Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted (edited)

Attached my initial DCS power configuration "dcs_powercfg.cmd":

: DCS power configuration
:
: the reference is available at:
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning


:
: set max/min cap to 100% when AC is on
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#minimum-and-maximum-processor-performance-state
:
Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMAX 100
Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMIN 100

:
: Processor performance boost mode to Aggressive
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#processor-performance-boost-mode
:
Powercfg -setacvalueindex scheme_current sub_processor PERFBOOSTMODE 2

:
: Processor performance core parking maximum and minimum cores in 100%
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#processor-performance-core-parking-maximum-and-minimum-cores
:
Powercfg -setacvalueindex scheme_current sub_processor CPMINCORES 100
Powercfg -setacvalueindex scheme_current sub_processor CPMAXCORES 100

:
: Processor performance core parking utility distribution with disable for not distribute CPU util crosses other CPUs during the load.
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#processor-performance-core-parking-utility-distribution
:
Powercfg -setacvalueindex scheme_current sub_processor DISTRIBUTEUTIL 0

:
: Intel Hardware Controlled P-states (HWP) with the favors performance
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#intel-hardware-controlled-p-states-hwp
:
Powercfg -setacvalueindex scheme_current sub_processor PERFEPP 0

: active the current plan
Powercfg -setactive scheme_current

 

Edited by scommander2
Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted

Well, the core parking feature is an OS feature and I guess that other games don't have any problem with it because they are not divided to a so many threads like DCS does.

I have posted an article from NVidia which describes that it is actually not so good to divide the main game process to a lot of threads.

You can read it here: https://developer.nvidia.com/blog/limiting-cpu-threads-for-better-game-performance/

It is an interesting article, but unfortunatelly we can't do nothing here. Only developpers can limit the number of threads.

Anyway, did you checked your UEFI setup? It might be that there is some power options which can be disabled, so the OS wouldn't be able to park the cores anymore? You can try to download a manual for your motherboard from its manufacturer site and check if there is some power options which can limit the OS core parking functionality.

  • scommander2 changed the title to Steam: 2.9.8.1214+ FPS performance issue
Posted
On 11/10/2024 at 1:31 AM, JohnRedcorn said:

Well, the core parking feature is an OS feature and I guess that other games don't have any problem with it because they are not divided to a so many threads like DCS does.

Thanks for the comment, indeed....

Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted

Power Plan / CPU Affinity and Priority Continue Update

I have observed and discovered that my system power plan is altered with another plan and some CPUs are in the parking state.  For example, my Avast (antivirus) sets the power plan with Avast own "high performance" plan if the Avast performance option contains an app with the max performance enabled.

Goal

1. Apply my own power plan constantly regardless other processes have altered my power plan already Apply so that all of CPUs stay with unparking.

2. Apply rules of the P-Core affinity and "Above normal" process priority with dcs.exe constantly.

Scripts

  • Power Plan - the specific DCS tunings, especially the core parking rules [filename: dcs_powercfg.cmd]:
: DCS power configuration
:
: the reference is available at:
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning


:
: set max/min cap to 100% when AC is on
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#minimum-and-maximum-processor-performance-state
:
Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMAX 100
Powercfg -setacvalueindex scheme_current sub_processor PROCTHROTTLEMIN 100

:
: Processor performance boost mode to Aggressive
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#processor-performance-boost-mode
:
Powercfg -setacvalueindex scheme_current sub_processor PERFBOOSTMODE 2

:
: Processor performance core parking maximum and minimum cores in 100%
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#processor-performance-core-parking-maximum-and-minimum-cores
:
Powercfg -setacvalueindex scheme_current sub_processor CPMINCORES 100
Powercfg -setacvalueindex scheme_current sub_processor CPMAXCORES 100

:
: Processor performance core parking utility distribution with disable for not distribute CPU util crosses other CPUs during the load.
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#processor-performance-core-parking-utility-distribution
:
Powercfg -setacvalueindex scheme_current sub_processor DISTRIBUTEUTIL 0

:
: Intel Hardware Controlled P-states (HWP) with the favors performance
: https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/hardware/power/power-performance-tuning#intel-hardware-controlled-p-states-hwp
:
Powercfg -setacvalueindex scheme_current sub_processor PERFEPP 0

: active the current plan
Powercfg -setactive scheme_current

 

  • CPU affinity/Process priority - to bind dcs.exe with all P-Cores and "Above Normal" process priority [filename: dcs_env_all_p_cores.cmd]:

NOTE: some systems may need CPU8 to be off for affinity, and I found CPU8 on has no impact to me

:
: set CPU affinity to the process
:
: Binary to Decimal at https://www.rapidtables.com/convert/number/hex-to-decimal.html
: For example for 12 P-Cores
: Binary  = 111111111111
: Decimal = 4095
: "1" - select
: "0" - not select
:
powershell.exe "$process = Get-Process dcs; $process.ProcessorAffinity = 4095"

:
: sets process with the specified priority
:
: Priorities are:
: Realtime     -> 256
: High         -> 128
: Above normal -> 32768
: Normal       -> 32
: Below normal -> 16384
: Low          -> 64
:
powershell.exe "gwmi win32_process -f 'name=\"dcs.exe\"' | foreach-object { $_.setPriority( 32768 ) }"

 

  • Setup process - to call "dcs_powercfg.cmd " and "dcs_env_all_p_cores.cmd" [filename: dcs_env_setup.cmd]:

NOTE: this setup process will loop for every 60 minutes (changeable) to apply the power plan rules, CPU affinity and process priority


: a DCS environment setup environment

:loop

:
: execute the power plan adjustment
:
CALL "<path>\dcs_powercfg.cmd" > NUL

:
: execute the CPU affinity and priority with dcs.exe
:
CALL "<path>\dcs_env_all_p_cores.cmd" > NUL

TIMEOUT /T 60 /NOBREAK > NUL

goto loop

 

  • Startup process - to start dcs setup cmd (dcs_env_setup.cmd) [filename: dcs_env_setup_startup.cmd]:

NOTE 1: this process calls "dcs_env_setup.cmd", and make it into the background process.  In addition, lowers "dcs_env_setup.cmd" to "Below Normal" process priority. 

NOTE 2: "dcs_env_setup_startup.cmd" can be placed under C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup to be executed after the Windows login.


: start dcs_env_setup.cmd

:
: start process in hidden and sets process with the priority "Below normal"
:
powershell.exe "$process = Start-Process -FilePath \"<path>\dcs_env_setup.cmd\" -WindowStyle Hidden -PassThru; $PROCESSID=$process.Id; gwmi win32_process -f \"ProcessId='$PROCESSID'\" | foreach-object { $_.setPriority( 16384 ) }"

 

Testing

I have tested my scripts for few days in either MP or instant action, my FPS is around 50-60 and depends on number of objects in the playground (60 FPS is always when I am in air for the most cases).

 

 

 

Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

Posted
Spoiler

Dell XPS 9730, i9-13900H, DDR5 64GB, Discrete GPU: NVIDIA GeForce RTX 4080, 1+2TB M.2 SSD | Thrustmaster Warthog HOTAS + TPR | TKIR5/TrackClipPro | Total Controls Multi-Function Button Box | Win 11 Pro

 

  • 3 months later...
Posted

This observation...
 

I'm honestly don't know why ED has divided the main game process to so many threads. I have found an interesting article from NVidia where their devs explains why it is doesn't good to divide the main game process to a lot of threads. They actually explains that there has to be a balance and if you start to open to many threads you are significantly reducing the game performance.

You can read it if you want, here is the link, it is NVidia site: https://developer.nvidia.com/blog/limiting-cpu-threads-for-better-game-performance/

Does not seem to have elicited a response from DCS devs?  

@BIGNEWY

@NineLine

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...