Volkanite / Push

Monitor GPU/CPU/RAM performance using in-game overlay.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Feature request: Display highest-load CPU thread/core

LuminairPrime opened this issue · comments

It's common to have a "CPU utilization" value calculated as an average utilization across all logical CPU threads (as displayed in Windows Task Manager), but this is of limited use to the observer unless they are using applications which scale across many threads. Most applications DON'T scale across many threads, so you can end up with an uncomfortable situation where a 16 thread CPU is delivering maximum possible performance to an application yet the "CPU utilization" only says "6%". Compounding this poor communication is how Windows can rapidly move software threads around to different hardware threads, precluding the observer from pinning one logical thread for monitoring, confusing monitoring application algorithms, and obfuscating the true single-thread CPU load and application usage. As new CPUs are delivered with more cores and threads, this problem is amplified, and common "CPU utilization" monitoring becomes useless, with many tasks not being visible on utilization graphs despite clocking up a CPU to maximum boost and fully using one thread or core.

I propose a novel "max CPU single-thread utilization" (MCSTU) metric and accompanying "max CPU single-thread utilization application" metric for monitoring applications, so people can see when their CPU is being used, and by what application. These are complimentary to the "average" CPU and GPU utilization values commonly shown in monitoring applications ever since the days of 1-core CPUs where the average and the max was the same thing. Note the same phenomenon of average equaling max in many-core GPUs where all applications are maximally threaded.

Thank you for reading!

Thank you for the feature request. I have already acknowledged this problem and have already implemented ways to monitor this metric in the app. Basically the app tries to measure the number of CPU cycles the main application (game) thread is using and then tries to calculate how many CPU cycles the thread was active. In the OSO (On-Screen-Overlay), go to "Diagnostics > CPU strap" and set the option to twc (it should already be set as the default option).

Here are the different options for that setting:

twc - highest thread usage, with wait cycles stripped. [Default]
t - highest thread usage
o - overall cpu usage (all cores)
c - highest core usage

I also re-enabled the Max Thread Usage and Max Core Usage OSM items so they are easier to find. They were once in the OSM a long time ago but I disabled them to save space. See 7199c15