for N CPU's = % avg CPU / process= 1/N x100% Why? RPC throttle or what?

Sunnyskyguy

Active Member
Joined
Mar 11, 2021
Location
Toronto ON, Canada
Examples are MS Office, WordPerfect(Qpro 2020), LibreOffice and ProcExp, Procmon all having this 1/N x 100% for N CPU limit utilization. This reminds me of my 3rd employer Burrough's as Test Eng. Mgr when I heard all Mainframes had full speed but marketting sold keys to clients too CPU utilization that just removed throttles.

I can get 100% CPU use if I tried but only with 8 or more processes. Normally ProcExp reports on boot I have 42 processes and 5% commit Charge.

I have been a longtime user of Sysinternals Apps such as Procmon, ProcExp etc and these and all Windows OS's from NT to Win 10 are throttled for MOST apps to 1/N CPU's ie. Dual core 50%, 4 CPU 25%, 8 CPU 12.5% including Procexp.exe. There were rare exceptions, but none useful to me that I can recall.

Currently using an i7 Haswell with 8 CPU's 16GB, 1600 MHz RAM with > 99% idle time under Win7 x64 and all MS, Open Office and Wordperfect Apps are limited to 12.5% with bursts exceeding this.

I have verified this over many OS versions and many CPU's on many Apps. I verified with Perfmon and Procexp that every app had multiple threads and was utilized by every CPU yet not evenly (some > 50% some 5%) but all avg= 12.50% +/- 1% over 10 seconds.

- latest example was 1.5m cell spreadsheet with just numbers and no formulae of CV19 USA county data doing a simple search > replace of "0 to 0", it is consistent for all my history of computing since Multi-threading Apps was a "new".

I am not talking about "Notepad" lol.

I am not looking for rare exceptions.

I am looking for common throttling reasons why this cannot be changed. Is it the App, OS or CPU?

This is not a revelation but something I've known for 2 decades and recently wanted to work on a spreadsheet with 1.5 Million cells with no formulae doing a search/replace of a single digit to prove this characteristic, so that I can do more complex work faster. I may have to use some RDB app.

Can it be improved? My idle time is usually 99% and the OS is lean by my setup standards.

Examples are MS Office, WordPerfect(Qpro 2020), LibreOffice and ProcExp, Procmon all having this 1/N x 100% for N CPU limit utilization with examples from Perfmon and Procexp using Scalc from Libreoffice (aka soffice.bin), QPRO 2020 from Wordperfect, MS train simulator, and ProcEXP all limited to 12.5%

Surely these are NOT single-threaded Apps. So what is the real reason for this 1/N cpu % avg throttle / process and can it be improved? I can SET AFFINITY to remove any combination of CPU's from 0 to 7 and the AVG utilization is always the same for MAX, 12.5%. (for Most Apps , again not all like, some OS support Apps might use more like Explorer during update scans ?? maybe, can't recall)
 

Attachments

  • biBWt.png
    biBWt.png
    73.1 KB · Views: 126
  • m9iuf.png
    m9iuf.png
    77.8 KB · Views: 132
  • mPJ4C.png
    mPJ4C.png
    87.2 KB · Views: 132
  • n8Pal.png
    n8Pal.png
    16.9 KB · Views: 130
  • R87we.png
    R87we.png
    52.8 KB · Views: 128
  • sS8Yq.png
    sS8Yq.png
    49.8 KB · Views: 138
  • uT3pM.png
    uT3pM.png
    185.7 KB · Views: 129
Client operating systems have a very different thread execution profile from that of server operating systems. They favor and prioritize interactive threads. These tend to be short bursts of execution for the purpose of making the user experience more responsive. If you want a technical explanation I would read chapter 5 from "Windows Internals Part 1" book.
 
Client operating systems have a very different thread execution profile from that of server operating systems. They favor and prioritize interactive threads. These tend to be short bursts of execution for the purpose of making the user experience more responsive. If you want a technical explanation I would read chapter 5 from "Windows Internals Part 1" book.
I misused the terms, by server I meant listener which be the client itself waiting for an execution response. Although more often used between TCIP ports with the app, talking to itself. TY I read the Winternals when they 1st came out
 
My understanding is that most major Apps like Office and Procexp are essentially single threaded for the shared memory subprocesses and many other threads must be independent of that share to avoid concurrent issues. Yet parsing to all CPU’s is uneven and always adds up 1/N CPU’s x100% on average. Some spreadsheet functions like move might use two threads to handle the copy and delete concurrently with some tracking of pointers by other threads and thus I have seen occasional procedures be 25% of 8 cores. But I don’t know if it is RPC that throttles and regulates the avg bandwidth, BW or some other mechanism.
 
Back
Top Bottom