Does Hyperthreading reduce DCS performance? - Page 2 - ED Forums
 


Notices

Reply
 
Thread Tools Display Modes
Old 08-11-2018, 11:11 AM   #11
Worrazen
Member
 
Join Date: Oct 2014
Location: Slovenia, Europe
Posts: 512
Default

Quote:
Originally Posted by TaHkNcT View Post
DCS uses much more than 2 threads, but 4 cores are still enough. Over all, DCS uses only 25% on my six-core CPU. HT can lower perfomance if an application uses thread instead core(in 2 core processor 0 and 2 are cores and 1 and 3 are threads). So check affinity mask on a processor with HT.
Sorry, it doesn't use more than 2 threads, DCS is still a "dual-core" application. - Yes a key distinction is to say threads not cores. Because those two threads are bouncing around on many cores, as are all other applications, the terminology to say that something can use "more cores", "multiple cores" is fundamentlly wrong because any single threaded application can use multiple cores because that's how the CPU/Firmware/OS naturally manages all the workloads/applications to run all "simultaneously in real time". Thread Scheduling is by running one application for a bit and another for a bit, back and forth, so you get the illusion everything's running at the same time.

Because this is happening so fast, the common utilities such as Task Manager and others which show the CPU Core utilization without the context of what's really happening under the hood and I think it may even fooled the MS developers and others including the public that this is some kind of "load balancing" which I've tried to prove is completely false, it's just an illusion and a play on how the numbers are presented, because things happen so fast it basically generates an average all by it self, DCS application is not really loading all 4 cores, and it's not about spreading the workload either, these basic CPU Graphs give a huge false impression of the reality what is happening inside the CPU/Software, the CPU Core Utilization isn't the most practical bit of info IMO.

With multiple cores in a CPU, an application thread might not be kept on the same exact core all the time, it may switch to another core. In the CPU/Firmware/OS scheduling logic some condition was fulfilled and the thread got bounced to another core, even if there may not be some big need for that, like some other application needing room , many things come into play, yes there just might be some super under-the-hood reason in caches, a load of other reasons, which may improve performance by .. 1-2% versus just leaving it on the same core (HW thread), the CPU architecture and the performances and performance ratios between the L1-L2-L3 caches and how the CPU is structured all come into play in this and the OS has to actually be aware of this architecture to employ the most appropirate scheduling logic for that type of architecture. So even when there isn't much of other work going on that would, threads bounce, there is some kind of a "preferred core" logic, so if there's one big application thread, it usually stays on one core but it's not guaranteed, and I think I later realized there is a function in the WIN32 API i think to FORCE the application thread to a particular core (hw thread), the changes in performance would be miniscule for most CPUs IMO unless someone does a big test and finds a CPU architecture/OS combo that breaks this, other than that you migtht get less "balance loaded" graph views which is more accurate to the reality.

DCS has one main thread and an audio thread which is almost always not maxed out (i don't remember the utilization of it right now, it's like 50 if I recall).

This is a quick summary, extensive discussion was in this thread months ago: https://forums.eagle.ru/showthread.php?t=201530&page=9

That's similar how gaming performance benchmarks used FPS but have now figured stuff out and evolved to put focus also Frame Times, which I won't be explaining here ofcourse, it's a lengthy explanation.



Example: In the middle of the video when 2 cores are enabled via affinity, two bottom cores being equal in application utilization is only an illusion or a misinterpretation more accurately, sure it's real, the actual CPU cores/HW Threads (Not HT threads), they're not equally loaded by the application, the two threads simply get bounced around those two cores to make it look like that, if you search around the thread and look at the WPA pictures you'll see the main thread being maxed(or nearly) while the audio thread much less. The taskmanager usefulness in such cases is rather detrimental, you'd be better of not having such information, would be less confusing, this is the danger of making things easier, lack of context.

Also note that sometimes I used to call a physical CPU Core a HW Thread, as traditionally there's only one HW Thread on a CPU Core, probably shouldn't, but a HT Thread is ofcourse another thing so don't mix it with "HW Thread", not interchangible, while a HT Thread is a HW Thread but not vice versa, kinda like a square/rectangle and bridge/viaduct relationships, even worse sometimes I use capital letters sometimes not when talking about application threads, i just can't make up my mind with it unfortunately. The testing from that thread was mostly without HT unless specified, so the 4 HW Threads you see are all physical cores without HT. Who the heck knows if HT threads are an actually hardware thing at all or it's all in the "mind" of the CPU/Chipset Firmware, it goes down deep so maybe only the key Intel/AMD engineers know for sure, I don't really trust the PR around this, by the time it gets to the marketing who knows how much accuracy and context the original info lost, plus it's ofcourse trade secrets, even if they're honest they would leave stuff out on purpose so full picture wouldn't be known, unless I do more research on it.

This is one of those things I wanted to go forward on and do something about it, what would be the more reliable way of looking at "CPU Utilization", but due to my business I was unable, but I might get back to it in the future. Well it's pretty much there, just looking at the CPU Total utilization, without broken down by Cores is a pretty good start. It's been a few months so I forgot a bit what exactly I was trying to get to more than that.

Also it's a bit weird why would copy protection DLLs take that much CPU over in that screenshot, you should keep watching if it's just the coincidence or it's something constant.

Quote:
Originally Posted by Sandman1330 View Post
I use process lasso to force DCS onto physical cores only. I’ve noticed it doesn’t change FPS whether on or off, but I get significantly more stuttering when I allow DCS to use logical cores (HT on)
Yeah, I think then the idea of HT thread being invisible (for sure?) to the host OS and application is a negative in the long run, for these types of , the applications and/or the OS should then recognize these and do scheduling/utilization differently without having the user to turn HT completely off in BIOS.
__________________
DCS-Setup: Win10 x64 1607AU, SSD Samsung 850 EVO 250GB, Asus P9x79, CPU: Intel Core i7 3820 @ 4.0GHz, GPU: Radeon RX 480 8GB, 24 GB RAM @ 1333 Mhz, Saitek Cyborg FLY5 Joystick.

Last edited by Worrazen; 08-11-2018 at 02:33 PM.
Worrazen is offline   Reply With Quote
Old 08-11-2018, 06:22 PM   #12
TaHkNcT
Member
 
Join Date: Sep 2012
Location: Moscow, Russia
Posts: 164
Default

Spoiler:
Quote:
Originally Posted by Worrazen View Post
Sorry, it doesn't use more than 2 threads, DCS is still a "dual-core" application. - Yes a key distinction is to say threads not cores. Because those two threads are bouncing around on many cores, as are all other applications, the terminology to say that something can use "more cores", "multiple cores" is fundamentlly wrong because any single threaded application can use multiple cores because that's how the CPU/Firmware/OS naturally manages all the workloads/applications to run all "simultaneously in real time". Thread Scheduling is by running one application for a bit and another for a bit, back and forth, so you get the illusion everything's running at the same time.

Because this is happening so fast, the common utilities such as Task Manager and others which show the CPU Core utilization without the context of what's really happening under the hood and I think it may even fooled the MS developers and others including the public that this is some kind of "load balancing" which I've tried to prove is completely false, it's just an illusion and a play on how the numbers are presented, because things happen so fast it basically generates an average all by it self, DCS application is not really loading all 4 cores, and it's not about spreading the workload either, these basic CPU Graphs give a huge false impression of the reality what is happening inside the CPU/Software, the CPU Core Utilization isn't the most practical bit of info IMO.

With multiple cores in a CPU, an application thread might not be kept on the same exact core all the time, it may switch to another core. In the CPU/Firmware/OS scheduling logic some condition was fulfilled and the thread got bounced to another core, even if there may not be some big need for that, like some other application needing room , many things come into play, yes there just might be some super under-the-hood reason in caches, a load of other reasons, which may improve performance by .. 1-2% versus just leaving it on the same core (HW thread), the CPU architecture and the performances and performance ratios between the L1-L2-L3 caches and how the CPU is structured all come into play in this and the OS has to actually be aware of this architecture to employ the most appropirate scheduling logic for that type of architecture. So even when there isn't much of other work going on that would, threads bounce, there is some kind of a "preferred core" logic, so if there's one big application thread, it usually stays on one core but it's not guaranteed, and I think I later realized there is a function in the WIN32 API i think to FORCE the application thread to a particular core (hw thread), the changes in performance would be miniscule for most CPUs IMO unless someone does a big test and finds a CPU architecture/OS combo that breaks this, other than that you migtht get less "balance loaded" graph views which is more accurate to the reality.

DCS has one main thread and an audio thread which is almost always not maxed out (i don't remember the utilization of it right now, it's like 50 if I recall).

This is a quick summary, extensive discussion was in this thread months ago: https://forums.eagle.ru/showthread.php?t=201530&page=9

That's similar how gaming performance benchmarks used FPS but have now figured stuff out and evolved to put focus also Frame Times, which I won't be explaining here ofcourse, it's a lengthy explanation.

Example: In the middle of the video when 2 cores are enabled via affinity, two bottom cores being equal in application utilization is only an illusion or a misinterpretation more accurately, sure it's real, the actual CPU cores/HW Threads (Not HT threads), they're not equally loaded by the application, the two threads simply get bounced around those two cores to make it look like that, if you search around the thread and look at the WPA pictures you'll see the main thread being maxed(or nearly) while the audio thread much less. The taskmanager usefulness in such cases is rather detrimental, you'd be better of not having such information, would be less confusing, this is the danger of making things easier, lack of context.

Also note that sometimes I used to call a physical CPU Core a HW Thread, as traditionally there's only one HW Thread on a CPU Core, probably shouldn't, but a HT Thread is ofcourse another thing so don't mix it with "HW Thread", not interchangible, while a HT Thread is a HW Thread but not vice versa, kinda like a square/rectangle and bridge/viaduct relationships, even worse sometimes I use capital letters sometimes not when talking about application threads, i just can't make up my mind with it unfortunately. The testing from that thread was mostly without HT unless specified, so the 4 HW Threads you see are all physical cores without HT. Who the heck knows if HT threads are an actually hardware thing at all or it's all in the "mind" of the CPU/Chipset Firmware, it goes down deep so maybe only the key Intel/AMD engineers know for sure, I don't really trust the PR around this, by the time it gets to the marketing who knows how much accuracy and context the original info lost, plus it's ofcourse trade secrets, even if they're honest they would leave stuff out on purpose so full picture wouldn't be known, unless I do more research on it.

This is one of those things I wanted to go forward on and do something about it, what would be the more reliable way of looking at "CPU Utilization", but due to my business I was unable, but I might get back to it in the future. Well it's pretty much there, just looking at the CPU Total utilization, without broken down by Cores is a pretty good start. It's been a few months so I forgot a bit what exactly I was trying to get to more than that.

Also it's a bit weird why would copy protection DLLs take that much CPU over in that screenshot, you should keep watching if it's just the coincidence or it's something constant.

Thanks for information that I already know. You didn't understand what I exactly wrote. If you know math, you can just realise that 25% from 6-core processor is 1.5, not 4. So 2 cores are enough for DCS. I've never said that DCS can use 4 threads/cores at 100% or really need it, but I've said that it uses more then 2 threads (even if I didn't count other DDLs from my sound and graphics cards) and it's true - I didn't write anything about CPU time. Also, you have forgotten about other programms in background like an antivirus, Oculus runtime, MSI afterburner, browser, etc. So 2-core processors are too weak now, even i3 has 4 cores. Because of that, I've written that 4 cores CPU is a good choice for DCS.

And how you could realise, I didn't use Windows Task Manager, it's uninformative, it even doesn't get you an infromation where is a bottleneck. But on my screenshot you can easily see it - main thread of DCS(100/6=16.6%).

The video which shows a lot benefit from 2 cores is incorrect or misunderstanding. You get up to 80% fps not only because of sound thread of DCS(only 0.45%), but mostly because of graphics threads of driver(almost 7+3+...~11% of CPU time, depends of graphics settings).
For clearly understand this, you can check "one-thread" application, for example, Stalker. It also gets a lot benefit from the second core.



In VR I use Oculus debug tool to understand perfomance which shows frametime line, so I think you don't need explain to me what it is.

X-plane 11 going to Vulkan this year(it uses OpenGl now) and will be use up to 4 cores. Also even now it can uses at least all 6 cores at 100% during loading(autogen).
__________________
Gigabyte GA-Z370 HD3P / SSD: Kingston HyperX 3K 240 Gb(OS), XPG GAMMIX S11 480 Gb(DCS) / Intel Core i5-8600k@4.8GHz(delidded) / 16 Gb DDR4 2400@3000 MHz / GeForce GTX 1080Ti@2025 MHz / ASUS Xonar D2 / FSP 800W / Win10x64 LTSB / Thrustmaster: Hotas Warthog, MFD Cougar / Saitek: Pro Flight Rudder Pedals, Pro Flight Throttle Quadrant / Oculus Rift CV1

Last edited by TaHkNcT; 08-12-2018 at 12:19 AM.
TaHkNcT is offline   Reply With Quote
Old 08-11-2018, 09:55 PM   #13
etherbattx
Junior Member
 
Join Date: May 2018
Posts: 21
Default

Quote:
Originally Posted by Worrazen View Post
I think then the idea of HT thread being invisible (for sure?) to the host OS and application is a negative in the long run, for these types of , the applications and/or the OS should then recognize these and do scheduling/utilization differently without having the user to turn HT completely off in BIOS.
HT’s are not invisible to the OS. the opposite in fact. the OS has a very detailed, very clear understanding of what they are and how to use them.

also, don’t forget that intel designed these cpu’s to compute large recurring workloads. and many of the ‘features’ mentioned here are focused on that type of work, not gaming.

for gaming, your best option is 2-4 cores with the highest clock speed you can get ($$ or overclocking, or even better - both).
etherbattx is offline   Reply With Quote
Old 08-12-2018, 05:44 AM   #14
Worrazen
Member
 
Join Date: Oct 2014
Location: Slovenia, Europe
Posts: 512
Default

Quote:
Originally Posted by TaHkNcT View Post
Thanks for information that I already know. You didn't understand what I exactly wrote. If you know math, you can just realise that 25% from 6-core processor is 1.5, not 4. So 2 cores are enough for DCS. I've never said that DCS can use 4 threads/cores at 100% or really need it, but I've said that it uses more then 2 threads (even if I didn't count other DDLs from my sound and graphics cards) and it's true - I didn't write anything about CPU time. Also, you have forgotten about other programms in background like an antivirus, Oculus runtime, MSI afterburner, browser, etc. So 2-core processors are too weak now, even i3 has 4 cores. Because of that, I've written that 4 cores CPU is a good choice for DCS.

And how you could realise, I didn't use Windows Task Manager, it's uninformative, it even doesn't get you an infromation where is a bottleneck. But on my screenshot you can easily see it - main thread of DCS(100/6=16.6%).
Sure, but those are small things I consider negible, I don't run MSI Afterburner or anything in the background so it wasn't a focus point for me, but ofcourse, I just didn't mention it because it wasn't meant to be a full explanation post

Yeah I didn't include to mention "the math" cause I didn't want to repeat all thr details what I already wrote about in that thread.

Secondly I many times write things in general but use the quote as a helper for a point or two, not everything I wrote was aimed as a reply to your specific case.

I'm talking about my own case where I have 4 cores, there's little difference except the % math in the total CPU utilization, it's again a "insert specific case number", which I didn't feel was that important to do as again I'm talking in general half the time. I would have done it if I wasn't busy these days.

I wasn't giving CPU purchasing advice, I thought it was pretty obvious (after all in that thread) that if you have a quad core you'll be a bit better off than dual-core, I was focusing on whether DCS is dual or more threaded, those extra little threads aren't significant so I just ignore them, plus not sure if those run async maybe they have to wait for stuff in the main. Unless more significant components are split and actually run async, like 10-20% speed up then we could start saying more about that, and mainly if they affect FPS, that's what mostly was my test, if it affects FPS (up in the right corner in the video), that said, a large part is still going to be single threaded for the forseeable future, and the use of this "multithreaded" moniker is so ridicolous for so many reasons.
__________________
DCS-Setup: Win10 x64 1607AU, SSD Samsung 850 EVO 250GB, Asus P9x79, CPU: Intel Core i7 3820 @ 4.0GHz, GPU: Radeon RX 480 8GB, 24 GB RAM @ 1333 Mhz, Saitek Cyborg FLY5 Joystick.

Last edited by Worrazen; 08-12-2018 at 05:47 AM.
Worrazen is offline   Reply With Quote
Old 08-12-2018, 08:34 AM   #15
David OC
Senior Member
 
David OC's Avatar
 
Join Date: Jul 2013
Location: Australia
Posts: 1,458
Default

Quote:
Originally Posted by Worrazen View Post
Sorry, it doesn't use more than 2 threads, DCS is still a "dual-core" application. - Yes a key distinction is to say threads not cores. Because those two threads are bouncing around on many cores

Not anymore, I have tested this out using process lasso and moved everything heavy to other threads and put DCS on two main cores, it did run but the cores were working very very hard and I was doing nothing in sim just flying around in a circle. She was running like a dog, it's much better on at least three cores now. I also had problems recording with Action and turned HT back on to fix it, without it, crashed DCS. Smooth as butter with HT?

As long as I can max out my GPU with max settings I'm happy.

__________________

i7-7700K OC @ 5Ghz | ASUS ROG Maximus IX Hero MB | Corsair H100i V2 Radiator | 16GB Corsair Vengeance 3466Mhz | Samsung 960 EVO M.2 NVMe
500G SSD | 2 X Samsung 850 EVO 500G SSD | ASUS GTX 1080 Ti STRIX | Oculus Rift | ASUS PG278Q 27-inch, 2560 x 1440, G-SYNC, 144Hz, 1ms | Fractal Design R5 Case

Chuck's DCS Tutorial Library. Awesome PDF guides for getting up to speed with aircraft quickly and great for taking a good look at the aircraft available for DCS before purchasing.


Last edited by David OC; 08-12-2018 at 08:36 AM.
David OC is offline   Reply With Quote
Old 08-12-2018, 08:34 PM   #16
Worrazen
Member
 
Join Date: Oct 2014
Location: Slovenia, Europe
Posts: 512
Default

Quote:
Originally Posted by David OC View Post
Not anymore, I have tested this out using process lasso and moved everything heavy to other threads and put DCS on two main cores, it did run but the cores were working very very hard and I was doing nothing in sim just flying around in a circle. She was running like a dog, it's much better on at least three cores now. I also had problems recording with Action and turned HT back on to fix it, without it, crashed DCS. Smooth as butter with HT?

As long as I can max out my GPU with max settings I'm happy.

Well that's a bug, you should report that crash, send/upload crash log.

Yeah I was speaking at the time I tested, which is quite some time back now, I would find it bizzare for such a huge change to go undocumented in the patch notes. I would need a lot more details on how you created this test, with actual screenshots of process lasso and probably WPA even.

You mentioned recording, are you sure you didn't record when you took those numbers and this screenshot?

Out of curiosity for something unrelated, would you post a screenshot or log of your DXDIAG info (with private info removed ofcourse, if you care). I'd like to check something about the RAM/memory. Also Resource Monitor memory tab. Is that MSI Afterburner overlay?
__________________
DCS-Setup: Win10 x64 1607AU, SSD Samsung 850 EVO 250GB, Asus P9x79, CPU: Intel Core i7 3820 @ 4.0GHz, GPU: Radeon RX 480 8GB, 24 GB RAM @ 1333 Mhz, Saitek Cyborg FLY5 Joystick.

Last edited by Worrazen; 08-12-2018 at 08:37 PM.
Worrazen is offline   Reply With Quote
Old 08-13-2018, 02:53 PM   #17
BitMaster
Veteran
 
BitMaster's Avatar
 
Join Date: Oct 2013
Location: SW-Germany
Posts: 4,729
Default

I'd go by what the actual developers say and that has been reposted multiple times.


If I understood that correctly, there are already more than those 2 threads.


I have pretty frequent spikes in the 60's% usage and sometimes it even goes into the 80's% for a short time.




The future is more cores
__________________
Asus Strix Z370-E - Intel i7-8700K@5.2G_delidded - 32GB 3000MHz - Asus 1080GTX-Ti Poseidon 2050/12006- 1x 960Evo 250GB - 2x 850Pro 256GB Raid-0 - 1 x 840 Evo 250GB PageFile - 2x Seagate 2TB - Heatkiller IV - MoRa3-360LT@4x180mm fans - Corsair AXi-1200 - TiR5-Pro - Warthog Hotas - Saitek Combat Pedals - Asus PG278Q 27" WQHD Gsync 144Hz - Oculus Rift VR - Win10Pro64 - Slave to the Machine
BitMaster is offline   Reply With Quote
Old 08-14-2018, 12:53 AM   #18
etherbattx
Junior Member
 
Join Date: May 2018
Posts: 21
Default

Quote:
Originally Posted by BitMaster View Post
The future is more cores
definitely. but it only works when the software is designed to leverage it.

and we are still waiting for games/sims that can utilize 4 cores.
it’s not easy.
etherbattx is offline   Reply With Quote
Old 08-14-2018, 05:35 PM   #19
Pilotasso
Veteran
 
Pilotasso's Avatar
 
Join Date: Feb 2005
Location: Working for IMF (not as an employee:] )
Posts: 11,119
Default

try running a dogfight over downtown Nellis, and whatch that CPU usage. benchmarking grass and trees is not a challenge.
__________________
http://forums.eagle.ru/signaturepics/sigpic4448_29.gif
My PC specs below:
Spoiler:
Case: Corsair 400C
PSU: SEASONIC 760W Platinum
CPU: AMD RYZEN 2700X @ 4.2Ghz
RAM: 32 GB 4266Mhz (two 2x8 kits) of trident Z RGB @3533Mhz CL 15 CR=1T
MOBO: ASUS CROSSHAIR HERO VI AM4
GFX: GTX 1080Ti MSI Gaming X
Cooler: NXZT Kraken X62 280mm AIO
Storage: Samsung 960 EVO 1TB M.2+6GB WD 6Gb red
HOTAS: Thrustmaster Warthog + CH pro pedals
Monitor: ASUS PB278Q IPS 27" LED 1440P
Pilotasso is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT. The time now is 10:26 PM. vBulletin Skin by ForumMonkeys. Powered by vBulletin®.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.