How do I raise the multi-core CPU limit?

Page 2 of 2 FirstFirst 12

  1. Posts : 2,528
    Windows 10 Pro x64
       #11

    sprewell said:
    But regarding the issue of single-threaded apps like that digits of pi benchmark, is Windows 7 really spreading the work across the four virtual cores and setting a software cap of 25%? Because that behavior still has me confused.
    A CPU can only run one thread at a time, and each thread gets a quantum on the CPU (an amount of time it's allowed to run before the scheduler checks to see if it needs to be pre-empted by another thread waiting, or whether it can continue running). Logicearth is correct, there's no single-CPU cap on percentage, and you need to be very careful when looking at *total* CPU usage (like that reported by resource monitor or task manager), which shows you a percentage of total CPU time across all CPUs, versus actual CPU usage per CPU as you would see in something like perfmon.

    What you saw was accurate (and yet inaccurate) in that you were using 25-30% of total CPU time, but across 4 CPUs - 100% across 4 CPUs means that when you see a 25% number, you're very likely looking at 100% on one core (100% of 1 core "averaged" out as total CPU when there are 4 CPUs shows up as, you guessed it, 25% approximately).

    Windows 7 does not spread a single thread out amongst multiple CPUs - when the thread runs, it can run on one CPU only. What you saw was accurate - a single CPU thread will consume a single CPU (up to 100%) during it's quantum, but task manager and resource monitor (by default) show you the averaged CPU usage number across all the available CPU cores - 100% used on one CPU will show up as (approximately) 25% CPU usage. If you want detailed information, you need to change the options in task manager or resource monitor to show detailed CPU usage across all CPUs, or use performance monitor to view CPU usage.
      My Computer


  2. Posts : 12
    Windows 7 Home Premium x64
    Thread Starter
       #12

    barton, yes, I read about core parking before I started this thread and Resource Monitor helpfully tells you when a core is parked. When I run the digits of pi benchmark, it will occasionally park the fourth, barely-used virtual core.

    cluberti, if you read my previous posts carefully, I was aware of most of what you wrote. If you look at the Performance tab in Task Manager or the CPU tab in Resource Monitor, both will show you not only total CPU usage, but usage by each virtual core (scroll the "Views" tab on the right in Resource Monitor down to the bottom to see all your cores). When I run the single-threaded digits of pi benchmark, it shows all the virtual cores being used but total CPU capped at 25%. If it were a hardware cap, only one core should have been used, hence my question of why Windows is capping the total CPU, while still spreading the workload across all the cores. Windows 7 could be using the time-slicing you mentioned and shuttling the single thread across the four cores, maybe to avoid over-heating?

    I encourage you to try it yourself with a single-threaded CPU benchmark and look at the CPU graphs in Resource Monitor to confirm for yourself.

    In my case, I downloaded the D compiler, available in a zip file here, extracted it to the desktop, and then ran this command in that folder in Powershell:

    .\windows\bin\dmd.exe .\samples\d\pi.d

    I ran the resulting pi.exe program with the following command:

    .\pi.exe 15000

    which should calculate pi out to 15,000 digits. It takes 39 seconds on my Core i5 3317U and Resource Monitor shows all four cores being used when I just ran it.

    It seems to me that Microsoft is mimicking a hardware cap in the operating system, by setting an equivalent software cap in Windows 7. The alternative is that Resource Monitor is lying to me, which I doubt. If there is a software limit, I would like to set it to be higher.
      My Computer


  3. Posts : 5,642
    Windows 10 Pro (x64)
       #13

    Shows us a screen shot of what you are seeing.

    And again. There is no CPU cap in Windows! How many times I have to tell you that.
      My Computer


  4. Posts : 12
    Windows 7 Home Premium x64
    Thread Starter
       #14

    Ahh, finally found the magic google keywords to get more info on this. According to this superuser.com thread,

    "Q: I notice that long-running single-threaded processes are bounced around cores quite a bit, at least according to task manager. Does this mean that assigning a process to a single core will improve performance by a little bit (by avoiding context switches and cache invalidations, etc.)? If so, can I know I am not assigning to 'just a virtual core'?

    A: That is normal behaviour, and no, assigning it to a single core will not improve performance. That being said, if for some reason you want to ensure a single process is only executed on a single, physical core, assign it to any single logical processor.

    The reason the process "bounces around" is due to the process scheduler. This is normal behaviour, and you will most likely experience reduced performance by limiting what cores the process can execute on (regardless of how many threads it has), since the process scheduler now has to work harder to make everything work with your imposed restrictions. Yes, this penalty may be negligible in most cases, but the bottom line is unless you have a reason to do this, don't! -Breakthrough"

    Another answer gives the reason for this, which I guessed above, heat:

    "There's a very good reason for core hopping: Spreading the thermal workload around. Given that in many cases higher level caches (L2, L3) are shared across all cores anyway, the core hopping will not have a significant performance impact, but the thermal impact will be significant because you won't have a "hot spot" on the one core that's constantly running while the others sit idle. Now, crossing sockets in a multi socket system (particularly a NUMA system) can have a significant performance impact. Most schedulers are aware of this and take it into consideration though. - afrazier"

    So it looks like I was right, Microsoft has implemented a core-balancing algorithm in Windows 7 but decided to cap single-threaded apps at 100%/(number of virtual cores), ie 100%/4 = 25% in my case, to mimic the hardware cap that would have been there in the past, presumably to disallow a single app from pegging the CPU and stopping other apps from running.

    Now I just have to find out if this CPU cap in Windows 7 is a setting that the user can adjust, as I asked at the beginning.

    logicearth, if Windows 7 is doing core balancing and total CPU is still being capped, the only possible explanation is that there's a software cap in Windows 7.
      My Computer


  5. Posts : 5,642
    Windows 10 Pro (x64)
       #15

    If you are so assured that there is a software cap in Windows then find it. Go ahead, we'll await for you to find your phantom setting.

    It is impossible to help one who believes they already found their answer and will only accept a solution to that answer. In fact it is pointless.

    But since you are so eager to get CPU usage to 100% do this: type "msconfig" into start menu search. Open msconfig. Go to "Boot", then to "Advance options...". Click on "Number of processors:", in the box below select 1. Hit Ok, and again. restart. Your CPU will no longer show 25% when a single core is now used fully. Have fun.
    Last edited by logicearth; 02 Apr 2013 at 16:23.
      My Computer


  6. Posts : 12
    Windows 7 Home Premium x64
    Thread Starter
       #16

    Hmm, no, I was wrong. After thinking about it some more, I now realize that core balancing still means a single-threaded app will be limited to 25%, as Windows can never run it on more than one core at any given instant. So even though each virtual core never maxes out in a single data collection time period, the fact that the single-threaded process can only ever run on a single core at a time means that total CPU available to it at all times is 25%, when you have four virtual cores, so the 25% cap is still a hardware cap, even with core balancing.

    So it appears that the real problem here is Intel's hyper-threading, without which Windows 7 would see two real cores and let each process run at up to 50% of total CPU, but my stupid BIOS doesn't let me turn off hyper-threading. Guess I'll have to find a new BIOS to flash if I want to fix this.
      My Computer


  7. Posts : 233
    Windows 7 Home Premium SP1 64bit
       #17

    logicearth,

    Forgive me. I just couldn't resist adding my two cents worth.

    To validate your statement,
    There is no CPU cap in Windows!
    Here is what I observe on my machine with the specs and configuration.

    Intel i3 2330M -- hyperthreading and virtualization enabled
    4 cores set in msconfig
    no other changes made in Windows or via third party software
    8GB RAM

    There have been times when I have pushed the computer hard and observed CPU usage in excess of 70% in two or three of the core graphs with the other(s) in the 50% range. This has been short term because the processor loads have not been demanded on a full time basis by the workload. Nevertheless the loads have neither throttled down nor equal.

    I believe this qualifies as an unbiased third part validation.

    drpepper
      My Computer


 
Page 2 of 2 FirstFirst 12

  Related Discussions
Our Sites
Site Links
About Us
Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

© Designer Media Ltd
All times are GMT -5. The time now is 08:14.
Find Us