DCS Multithreading Update

MT is a programming technique that allows multiple threads to exist within the context of a single process. A thread is an independent path of execution within a program, and MT allows a program to perform multiple tasks concurrently, improving its performance and responsiveness.

Here at the v303 FG, we are hoping that this brings our Aircrews a much more smooth and enjoyable experience with our current sim-rigs while operating on the Group server. Time will tell, but anything helps!

To date, DCS has performed most of the computational workload on a single thread (some audio components were moved to a separate thread). This was not a problem in most cases because the Graphics Processor Unit (GPU) did most of the work, and FPS was mostly limited by the performance of the GPU.

As DCS evolved, GPUs have become much more powerful whilst the performance of a single CPU core remained practically unchanged. Instead, CPU manufacturers increased the number of cores rather than the clock speed of individual cores. As a consequence, DCS performance has become CPU-limited. In parallel, DCS World has become much more complex with increased reliance on CPU calculations that has exacerbated the problem.

To improve efficiency of CPU resources usage, we have reworked the core of our engine. First, at the architectural level, it has been divided into two main threads: graphical and logical. This opens up new possibilities for further thread parallelization of calculations in both the logical and graphical parts of the engine independently.

Second, to meet the requirements of scalable multithreading, and the needs of modern graphics APIs, the graphical engine part has been significantly enhanced. In addition, many subsystems have been updated, or written from scratch.

Internal testing has begun, and we plan to release the updated DCS graphic engine (EDGE) next year. The initial release of Multithreading support will contain a fully reworked engine including preparation of the graphical frame and the separation of the graphical and logical parts onto two independent threads.

It should also be noted that the most significant performance improvements will be regarding larger missions. This will be a welcomed change, especially in multiplayer where unit numbers are typically far higher. VR performance will also see a significant performance improvement in large missions. https://www.digitalcombatsimulator.com/en/news/newsletters/2b4826e39c84423db49b8789fe2409f3/

Launching Multithreading DCS
After next Open Beta update, you can find the new folder "bin-mt" in your DCS Open Beta main root folder where you have installed DCS Open Beta. i.e. "D:\Eagle Dynamics\DCS World OpenBeta". To launch the multithreading version, navigate to the "bin-mt" folder and launch DCS.exe from it. i.e. "D:\Eagle Dynamics\DCS World OpenBeta\bin-mt\DCS.exe". For your convenience, you may want to create a shortcut for "D:\Eagle Dynamics\DCS World OpenBeta\bin-mt\DCS.exe" on your desktop.

Be advised that the DCS launch shortcut that is automatically created on your desktop after DCS installation will launch the DCS updater from i.e. "D:\Eagle Dynamics\DCS World OpenBeta\bin\DCS_updater.exe". You may have gotten used to the process where you launch DCS and it checks for available updates before launching the game. If you make a shortcut for the multithreading version (i.e. "D:\Eagle Dynamics\DCS World OpenBeta\bin-mt\DCS.exe") then this shortcut will launch DCS, and it will not check for updates before launching the game.


Why is MT currently optional?
As MT is a complex addition to DCS, we have made it optional for initial public testing. Once fully tested and working well, it will be enabled by default.

How long will MT be in preview?
It depends on public test results and feedback; we will keep you all informed as things develop.

What is the maximum number of threads the game can utilize?
About half of P-cores are dedicated for the graphics needs. Currently the rendering pool scales up to 16 threads on P-cores (1 core = 2 threads). The other P-cores are used by the main logic thread, sound engine threads, and the auxiliary thread pool that occupy all available space. E-cores are used only by the resources streaming pool that has no limits (1 core = 1 thread).

Will VR and flatscreen have an equal performance improvement?
MT is agnostic between a 2D monitor and VR. Both will see the same proportion of improvement. Note that VR is in general more demanding so you will see lower FPS than flatscreen performance given the higher rendering overhead.

Will performance be improved for people currently bottlenecked by their GPU?
MT may not help with performance if you have a GPU bottleneck. This is because the GPU is responsible for rendering and processing graphics, and it operates independently of the CPU. So MT may not directly improve GPU performance, but it can help to improve overall application performance by offloading non-GPU related tasks to separate CPU threads.

Are there any downsides to MT if I have a CPU with few cores (Like an old quad core)?
While MT can improve performance on a CPU with multiple cores, it may not provide significant benefits on a CPU with few cores. In fact, it could even lead to decreased performance in some cases.

Will the dedicated server also be multithreading?
Currently the dedicated server is ST, work on a MT dedicated server is planned for the future.

Will I be able to play on MT servers/large missions that I couldn't before?
You should see improvement in larger missions, but mission designers should still consider unit count in any mission they create. Overloading a multiplayer mission with units will result in loss of performance.

Will MT and Single Thread (ST) be updated separately or updated at the same time?
You can update DCS in the usual way.


Can MT and ST clients join the same server?
Yes, MT and ST users can play on the same server.

Should I enable HT / SMT in my motherboard BIOS?
Currently, users with more than 32 threads should disable HT/SMT, but for everyone else we recommend enabling HT/SMT.

Can I expect more bugs with MT, and can they be reported the same way or do I need to do separate reports for MT and ST?
MT is a very complex addition to DCS, we have done a lot of testing but you may see issues we have missed. If you do, please report them on the forum bugs section. When reporting issues, please make it clear that you are using multithreading by either by adding “MT” to the title or in the topic itself.

I have not seen any improvement what can I do?
If you are not seeing any improvement in performance, please make a forum post with your dcs.log dxdiag and a track replay example in the performance issues forum section.

How can I launch VR in MT?
Same way you do now but using the bin-mt/ dcs.exe with the added launch parameters. ( example "C:\DCS Open Beta\bin-mt\DCS.exe" --force_enable_VR --force_OpenXR )
Steam users will have a MT VR option in the launch pop up.


 
Top