Jump to content

Recommended Posts

Posted

Good day gents.

 

I started the task manger while playing DCS, I use the affinity tool and when I look at the load on the cores, I have 3 around 70% and one below 25%.

 

Why would one of the core be low like that ? I alt-tabed and made sure the DCS.exe affinity was set to all cores.

 

Any ideas ?

Posted

Trick or no trick, DCS is not a multithreaded application so you should not expect perfect multicore operation.

[sIGPIC][/sIGPIC]

Daniel "EtherealN" Agorander | Даниэль "эфирныйн" Агорандер

Intel i7 2600K @ 4.4GHz, ASUS Sabertooth P67, 8GB Corsair Vengeance @ 1600MHz, ASUS GTX 560Ti DirectCU II 1GB, Samsung 830series 512GB SSD, Corsair AX850w, two BENQ screens and TM HOTAS Warthog

DCS: A-10C Warthog FAQ | DCS: P-51D FAQ | Remember to read the Forum Rules |

|
| Life of a Game Tester
Posted

That´s right. DCS.exe is running on one core at a time only, whatever you set the affinity to ;)

So you should not expect any multicore operation at all.

The affinity thing is obviously just a way to circumnavigate a bad VISTA control of the cores. Otherwise it would use less than one core for DCS :lol:

Posted

A multi-threaded program can spread different tasks over multiple cores/CPUs.

 

The upcoming WW1 flightsim RiseOfFlight will be able to utilize this technology perfecty, so the difference between 2 and 4 cores transfers almost 1:1 into a rough 40-50% increase in performance.

 

DCS is still based on the old engine in many regards, which is not capable of true multithreaded operation. You can however run the game on several cores, but the performance increase is not linear. Accordingly there are several posts reporting that DCS does not take full advantage of 3 or 4 cores, or the i7s 8-threaded architecture.

 

It's worse if you try the trick with XP, as XP was not designed to support multi-core PCs either and the hotfix only partially works. (infact you will get stutters for most games, when forcing them to use more than one core under XP)

MSI X670E Gaming Plus | AMD Ryzen 7 7800X3D | 64 GB DDR4 | AMD RX 6900 XT | LG 55" @ 4K | Cougar 1000 W | CreativeX G6 | TIR5 | CH HOTAS (with BU0836X-12 Bit) + Crosswind Pedals | Win11 64 HP | StreamDeck XL | 3x TM MFD

Posted
Supreme commander and other games work with full 4 cores in winXP FYI. WinXP does work with 4 or more cores, though its managemenet works on a different level than vista.

 

Didn't say that it doesn't work with XP, but the effect is MUCH lower than with Vista.

MSI X670E Gaming Plus | AMD Ryzen 7 7800X3D | 64 GB DDR4 | AMD RX 6900 XT | LG 55" @ 4K | Cougar 1000 W | CreativeX G6 | TIR5 | CH HOTAS (with BU0836X-12 Bit) + Crosswind Pedals | Win11 64 HP | StreamDeck XL | 3x TM MFD

Posted
A multi-threaded program can spread different tasks over multiple cores/CPUs.

 

The upcoming WW1 flightsim RiseOfFlight will be able to utilize this technology perfecty, so the difference between 2 and 4 cores transfers almost 1:1 into a rough 40-50% increase in performance.

exactly

 

DCS is still based on the old engine in many regards, which is not capable of true multithreaded operation.

exactly

 

You can however run the game on several cores, but the performance increase is not linear.

That is now the opposite of what you said above ;)

Or can you explain how a one core program could run faster, if you divide it

to several cores ? You loose time whenever you switch the cores, as they can´t run parallel !!

Only multithread software can use different cores at the same time, but the performance increase is not linear,

because the threads have to wait for each other in order to keep it synchronized.

Posted

Or can you explain how a one core program could run faster, if you divide it

to several cores ? You loose time whenever you switch the cores, as they can´t run parallel !!

Only multithread software can use different cores at the same time, but the performance increase is not linear,

because the threads have to wait for each other in order to keep it synchronized.

Multithreaded share threads themselves.

 

Singlethreaded have to rely on the OS to coordinate the CPU. Remember, the CPU is not only used for a mere calculation down from the list of that single program, but also for handling data from and to the RAM and GFX-Card, and other components, as well as interaction with the HDD.

At the same time, there are other processes running, as various drivers and parts of your OS, sounddrivers, for us flightsimmers also TrackIR, Teamspeak, etc.

So it's not like a list of calculations coming down a pipe one by one, but a lot of parallel tasks interacting with other components and programs. These are not necessarily limited by the single-threaded architecture of that main program. So, while the program may not be able to share these tasks, the OS and hardware may very well be.

MSI X670E Gaming Plus | AMD Ryzen 7 7800X3D | 64 GB DDR4 | AMD RX 6900 XT | LG 55" @ 4K | Cougar 1000 W | CreativeX G6 | TIR5 | CH HOTAS (with BU0836X-12 Bit) + Crosswind Pedals | Win11 64 HP | StreamDeck XL | 3x TM MFD

Posted (edited)

Looks like from the above post that DCS has 14 threads going...

 

I like Process Explorer/Monitor better than the text mode :) you get realtime updates with that.

 

http://technet.microsoft.com/en-us/sysinternals/cb56073f-62a3-4ed8-9dd6-40c84cb9e2f5.aspx

Edited by Slayer

[sIGPIC][/sIGPIC]

 

System Specs

 

Intel I7-3930K, Asrock EXTREME9, EVGA TITAN, Mushkin Chronos SSD, 16GB G.SKILL Ripjaws Z series 2133, TM Warthog and MFD's, Saitek Proflight Combat pedals, TrackIR 5 + TrackClip PRO, Windows 7 x64, 3-Asus VS2248H-P monitors, Thermaltake Level 10 GT, Obutto cockpit

 

Posted (edited)
DCS_process_info.jpg

 

;)

 

Interesting.

 

So we might even see yet another performance boost with the faulty affinity-set fixed? Surely looking forward to that patch ;)

 

On second thought:

I'm no professional on this, but with Slayers tool, these are all windows processes/threads needed for DCS, but not DCS calculation/processing threads, right? At least, these are mostly directx-tasks running, mostly related to sound and input.

It surely explains why Vista can run these tasks better, but it does not proof that DCS is multithreading itself, correct? If it is, my firefox is twice as multithreading as DCS? :)

Edited by Feuerfalke

MSI X670E Gaming Plus | AMD Ryzen 7 7800X3D | 64 GB DDR4 | AMD RX 6900 XT | LG 55" @ 4K | Cougar 1000 W | CreativeX G6 | TIR5 | CH HOTAS (with BU0836X-12 Bit) + Crosswind Pedals | Win11 64 HP | StreamDeck XL | 3x TM MFD

Posted
I like Process Explorer/Monitor better than the text mode :) you get realtime updates with that.

 

Yes that's right, but in Process Explorer you don't get an overview of CPU usage of all threads, which is the interesting thing here IMO.

 

I'm no professional on this, but with Slayers tool, these are all windows processes/threads needed for DCS, but not DCS calculation/processing threads, right? At least, these are mostly directx-tasks running, mostly related to sound and input.

 

Well, given that BS is a "multimedia" application, it is not surprising that it relies on external library code like DirectX for graphics, input, sound, networking, I don't think that itself justifies the conclusion that BS is not multithreaded, quite the contrary...

 

It surely explains why Vista can run these tasks better, but it does not proof that DCS is multithreading itself, correct? If it is, my firefox is twice as multithreading as DCS? :)

 

I am no expert either, so the following is pure speculation. Two observations:

 

1) When you look at all threads of the DCS.exe process you can see that there are only two threads that consume a significant amount of CPU time, one of which uses by far the most. However some of the other threads also run from time, at least for a short moment.

 

2) When you compare total CPU time the DCS.exe process consumed with total CPU time of all threads that are currently alive, you can see (in the above picture) that there is a difference of about 30 minutes, which tells me that BS sometimes spawns threads and kills them later, and these threads actually consume quite a significant amount of CPU time. For example it seems that the thread which is labeled atiumdag.dll in ProcessExplorer (which is on place 2 with regards to CPU usage) does not run continuously from the beginning, but is being killed and respawned from time to time.

 

So these observations are a bit inconclusive. Maybe you can say that BS is indeed multithreaded, but most of the CPU time is used by very few threads (2-3).

 

Does anyone know a way to show which thread runs on which core? I mean when I start BS with affinity set to one core, even then both cores are utilized more than when the PC is idling, although core 1 is tasked the most. When I set affinity to both cores then both are utilized equally (using Vista 32 that is).

Posted

As you stated DCS runs as a multimedia-application. As such, it depends on directx and other environments to run. According to the games actions, new threads are spawned.

 

That is a hail to windows, though, and explains why the multithreading-architecture of Vista provides more performance.

 

It is not a proof for DCS doing multithreading, though.

 

That would be the case if there were distinct program-components (not windows-components) calculating different tasks, like physics, weather, AI, etc. This way it was also explained for "Rise of Flight", btw. You don't see this in either analysis of DCS, though.

 

 

On the other hand, why would DCS plan to make it multithreaded, if it already was? ;)

MSI X670E Gaming Plus | AMD Ryzen 7 7800X3D | 64 GB DDR4 | AMD RX 6900 XT | LG 55" @ 4K | Cougar 1000 W | CreativeX G6 | TIR5 | CH HOTAS (with BU0836X-12 Bit) + Crosswind Pedals | Win11 64 HP | StreamDeck XL | 3x TM MFD

Posted
As you stated DCS runs as a multimedia-application. As such, it depends on directx and other environments to run. According to the games actions, new threads are spawned.

 

That is a hail to windows, though, and explains why the multithreading-architecture of Vista provides more performance.

 

It is not a proof for DCS doing multithreading, though.

 

That would be the case if there were distinct program-components (not windows-components) calculating different tasks, like physics, weather, AI, etc. This way it was also explained for "Rise of Flight", btw. You don't see this in either analysis of DCS, though.

 

I know what you mean, but this is a matter of definition. Graphics, sound, input etc. are engine tasks that can be separated, and even if we assume that their threads are handled automatically by Windows/DirectX and don't have to be spawned, corrdinated etc. by BS "itself" (I doubt that this is true, DirectX will probably do much of the low level work, but you still have to coordinate sound, input, graphics etc. manually), this still means that BS is multithreaded, just as a far as any DirectX application is multithreaded. The threads are a part of the DCS.exe process and perform tasks for BS, and you can clearly see that the whole DCS.exe process can run on more than one CPU.

 

On the other hand, why would DCS plan to make it multithreaded, if it already was? ;)

 

I would say they want to make it multithreaded (or even "multiprocessed) in the way you just explained, i.e. run more separate logical tasks in different threads/processes.

Posted
I know what you mean, but this is a matter of definition.

 

No, it's not.

 

 

A multithreaded program is different from a program that needs multiple primarily outside processes to run.

 

 

And if it was open for debate, you wouldn't like to discuss it: As I posted before Firefox alone spawns 21 tasks, 3 of which do run in parallel mode. If it really was a matter of definition, I'd say that even firefox is better in "multithreading" than DCS. :smilewink:

MSI X670E Gaming Plus | AMD Ryzen 7 7800X3D | 64 GB DDR4 | AMD RX 6900 XT | LG 55" @ 4K | Cougar 1000 W | CreativeX G6 | TIR5 | CH HOTAS (with BU0836X-12 Bit) + Crosswind Pedals | Win11 64 HP | StreamDeck XL | 3x TM MFD

Posted

Well we have to distinguish the following: a program can consist of one or more processes, and each process can consist of one or more threads. BS consists of two processes, launcher.exe and DCS.exe, however they don't run in parallel (= cooperative multitasking). I don't understand exactly what you mean by "needs multiple primarily outside processes to run"? Of course BS, like any program, also depends on other processes (mainly windows processes and drivers). But this is different from using 3rd party library code (like Windows or DirectX APIs) and differentiating the whole code into separate threads. Even though the 3rd party library code has not been written by Eagle and may spawn its own threads, this still means that both the code and the threads are a part of the whole DCS.exe process and perform certain tasks in this process. The important question is how these threads work together, i.e. if they are cooperative/preemtive, or can actually run in parallel. That a program is multithreaded does not by itself guarantee that it is a parallel program, threads can simply be used to structure the code (like in Lua for example).

  • Recently Browsing   0 members

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