Solved How do I raise the multi-core CPU limit?

sprewell

New member
Member
Local time
8:39 AM
Messages
12
Hello, I was just playing an extremely high-def video (1440p) using 64-bit VLC on my Windows 7 x64 ultrabook and it is stuttering. I checked Resource Monitor and it shows total CPU maxing out at between 25 and 30%. That raises the question: if Windows 7 thinks you have 4 cores, does it cap any particular process at 25% CPU? I'm using a dual-core Core i5 3317U, the most popular CPU in ultrabooks these days, which shows up as four cores in Resource Monitor because of hyper-threading. I can't seem to turn off hyper-threading in the aptio BIOS that comes with this ultrabook.

I have previously noticed that other processes that go out of control occasionally, like the Bluetooth monitor, will cap out at 25% CPU usage, but never figured out why till now. I thought that maybe it's a limit of each process only being able to max out a virtual core, but then I noticed that Resource Monitor shows all four virtual cores maxing out at 25% when running VLC with the 1440p video, as opposed to a single core maxing out at 100%. Does that mean that Windows 7 is emulating a single core limit by spreading the workload across each virtual core and capping each at 25% or is Resource Monitor lying to me and only one is maxed out?

I notice that if I open more VLC instances that play videos simultaneous to the 1440p video, the other 1080p videos play just fine, even though the 1440p video is still stuttering. Total CPU usage rises up to 50+% and all the cores show as sharing the workload relatively equally in Resource Monitor. I can see why this limit would be beneficial: the 1440p video is capped at 25% usage and doesn't affect the performance of the other videos, but I'd rather that the limit were higher.

Is there some way to raise this cap to 50% or more, so that a single process can use up to 50% of all four virtual cores? I checked my power settings and the processor maximum is set to 100%, so I don't think anything can be done there. If Windows 7 is really spreading the workload across all four virtual cores and setting an artificial cap of 25%, there should be a software setting where I can set the cap to be higher than 25% for a single process.
 

My Computer My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Asus Zenbook Prime UX31A
OS
Windows 7 Home Premium x64
CPU
Core i5 3317U
Hello, I was just playing an extremely high-def video (1440p) using 64-bit VLC on my Windows 7 x64 ultrabook and it is stuttering. I checked Resource Monitor and it shows total CPU maxing out at between 25 and 30%. That raises the question: if Windows 7 thinks you have 4 cores, does it cap any particular process at 25% CPU? I'm using a dual-core Core i5 3317U, the most popular CPU in ultrabooks these days, which shows up as four cores in Resource Monitor because of hyper-threading. I can't seem to turn off hyper-threading in the aptio BIOS that comes with this ultrabook.

I have previously noticed that other processes that go out of control occasionally, like the Bluetooth monitor, will cap out at 25% CPU usage, but never figured out why till now. I thought that maybe it's a limit of each process only being able to max out a virtual core, but then I noticed that Resource Monitor shows all four virtual cores maxing out at 25% when running VLC with the 1440p video, as opposed to a single core maxing out at 100%. Does that mean that Windows 7 is emulating a single core limit by spreading the workload across each virtual core and capping each at 25% or is Resource Monitor lying to me and only one is maxed out?

I notice that if I open more VLC instances that play videos simultaneous to the 1440p video, the other 1080p videos play just fine, even though the 1440p video is still stuttering. Total CPU usage rises up to 50+% and all the cores show as sharing the workload relatively equally in Resource Monitor. I can see why this limit would be beneficial: the 1440p video is capped at 25% usage and doesn't affect the performance of the other videos, but I'd rather that the limit were higher.

Is there some way to raise this cap to 50% or more, so that a single process can use up to 50% of all four virtual cores? I checked my power settings and the processor maximum is set to 100%, so I don't think anything can be done there. If Windows 7 is really spreading the workload across all four virtual cores and setting an artificial cap of 25%, there should be a software setting where I can set the cap to be higher than 25% for a single process.
Have you tried playing the video in another video player? Also, have you tried updating your graphics card drivers?
 

My Computer My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
HP Pavilion P7-1010
OS
Windows 7 Professional x64 Service Pack 1
CPU
AMD Athlon X4 645
Motherboard
Foxxcon N-Alvorix RS880
Memory
6GB DDR3 1066
Graphics Card(s)
Sapphire Radeon HD 5670 512MB GDDR5
Sound Card
Realtek Integrated Audio
Monitor(s) Displays
HP 2011x
Screen Resolution
1600x900
Hard Drives
1. Crucial M4 128GB SSD
2. 1TB Seagate Barracuda 7200.12 RPM
3. 1TB Western Digital Caviar Green 5400RPM
PSU
Seasonic S12 II Bronze 380 Watt
Case
HP OEM
Cooling
Coolermaster Heatsink, AVC Case Fan
Keyboard
HP OEM- Made by Chicony
Mouse
HP OEM- Made by Logitech
Internet Speed
20MBit Down/4 Up
Antivirus
Microsoft Security Essentials
Browser
Internet Explorer 10
Just to clarify, there is no CPU limit, no cap. If the application is multi-core aware and multi-threaded it will use more then 25% (25% is 100% on a single core, btw. 50% is two cores at 100%, 75% is three, etc.) If an application only uses one CPU core there is no way to force it to use more. The application developer must design their application to take advantage of it, it will never be a flick of a switch to enable it.

But again, there is no CPU cap. Windows is not going to stop an application from using 100% of a single core or all the cores. It comes down to the application itself.
 

My Computer My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Alienware Aurora ALX R4
OS
Windows 10 Pro (x64)
CPU
Intel Core i7-3930K (3.2GHz - 4.5GHz)
Motherboard
Alienware Aurora-R4 x79
Memory
4x Samsung 4GB PC3-12800 DDR3 (16GB 1600MHz)
Graphics Card(s)
Nvidia Geforce GTX 690
Sound Card
SteelSeries Siberia Elite
Monitor(s) Displays
Dell UltraSharp U3011
Screen Resolution
2560x1600
Hard Drives
Samsung 850 Pro 256 GB, Seagate 1TB Desktop Hybrid HDD, 2x Western Digital 4TB Green HDD
PSU
875W Some Dell PSU <.<
Case
Alienware Aurora ALX
Cooling
Custom Liquid Cooling (EK CPU & GPU blocks) dual EK 480RAD
Keyboard
Logitech G710+ Mechanical
Mouse
Logitech G700s
Internet Speed
Verizon Fios (50 mbps average)
Other Info
Server: Intel NUC D54250WYK: i5-4250U, 16GB, 256 GB mSATA, Windows Server 2012 R2
windude99, no, I haven't tried any other video player, VLC is the only one that worked well and handled everything I threw at it in the past. I have the built-in Intel HD 4000 GPU, I haven't updated the installed drivers since I bought this ultrabook last summer. In any case, I'm trying to find out more about the broader issue of CPU limits in Windows 7, rather than just offloading the video to some video decoder chip in the GPU.

logicearth, there is clearly a CPU cap. To confirm it, I just ran a CPU benchmark, a small program that will calculate as many digits of pi as you ask it to. If I ask it to calculate a lot of digits, it keeps running for a while and again the total CPU usage is capped at 25%, according to Resource Monitor. This time, it shows 3 virtual cores being employed, one at at about 50%, another two at 10-20%, and a fourth barely being used. Is Resource Monitor lying to me when it shows 3 cores being used? This is a single-process app, with the one default thread. By comparison, VLC is multi-threaded, with only a single process.

If Windows 7 is smart enough to split up the workload like this, I'd like to change the cap to something better. The alternative is that Resource Monitor is lying to me, and the reason the total CPU cap is 25% is because one virtual core out of four is maxed out at 100%.

I guess the point of distinction here is what do you mean by "multi-core aware?" Does Windows 7 run multi-threaded apps on multiple cores or does it need to have multiple processes to do so? For example, Google Chrome is multi-process and can probably use 100% CPU as a result, not that it should ever need to. ;)
 

My Computer My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Asus Zenbook Prime UX31A
OS
Windows 7 Home Premium x64
CPU
Core i5 3317U
Again, there is no CPU cap or limitation. Windows does not limit the CPU usage. If it did my expensive processor would never reach 100% yet it does! As Prime95 showcases.

Download Prime95 and watch it stress your CPU to 100% http://www.mersenne.org/freesoft/
 

My Computer My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Alienware Aurora ALX R4
OS
Windows 10 Pro (x64)
CPU
Intel Core i7-3930K (3.2GHz - 4.5GHz)
Motherboard
Alienware Aurora-R4 x79
Memory
4x Samsung 4GB PC3-12800 DDR3 (16GB 1600MHz)
Graphics Card(s)
Nvidia Geforce GTX 690
Sound Card
SteelSeries Siberia Elite
Monitor(s) Displays
Dell UltraSharp U3011
Screen Resolution
2560x1600
Hard Drives
Samsung 850 Pro 256 GB, Seagate 1TB Desktop Hybrid HDD, 2x Western Digital 4TB Green HDD
PSU
875W Some Dell PSU <.<
Case
Alienware Aurora ALX
Cooling
Custom Liquid Cooling (EK CPU & GPU blocks) dual EK 480RAD
Keyboard
Logitech G710+ Mechanical
Mouse
Logitech G700s
Internet Speed
Verizon Fios (50 mbps average)
Other Info
Server: Intel NUC D54250WYK: i5-4250U, 16GB, 256 GB mSATA, Windows Server 2012 R2
Are you using latest version of VLC? I think previous versions had multi thread issues with some file types?

Where you "checked my power settings and the processor maximum is set to 100%" you could also set the minimum processor state to 100% as well so they will run without any throttle(which I believe is same as 'high performance' power setting default but I'm not sure that has anything to do with forcing multi threading use in a program. Just will get rather warm :-)
 

My Computer My Computer

Computer type
PC/Desktop
OS
Windows 7 Home Premium 64bit
logicearth, you are ignoring the detailed observations I'm making and questions I'm asking, which contradict your assertions, and simply repeating your dogma, that there is no CPU limit, over and over again. I googled some more and found a stackoverflow thread that says you can set the affinity of a program in Task Manager, so it only runs on a single core. I did so and Resource Monitor now shows total CPU capped at 25%, with only one virtual core maxing out at 100%. So it appears that Resource Monitor knows when only a single core is being used, implying it probably wasn't lying before when it showed a single-process, single-thread app spread across 4 cores and capped at 25% of total CPU. That also implies that Microsoft has set a software cap of 25% per process, to mimic the hardware cap of 25% that would normally come with having four cores.

As for Prime95 stressing your CPU to 100%, that's not the question. As I noted in my original post, I can get total CPU usage up to 50+% by simply opening up a bunch of VLC instances. If Prime95 is a multi-process app, it can probably do the same. The question is why Windows 7 caps single-process apps at 1/(number of virtual cores) in software and whether that cap can be raised in a setting somewhere.

barton, yes, I'm using the latest VLC 2.05, the 64-bit version found here. At this point, having confirmed that the same happens with a CPU benchmark, I'm not as concerned with playing that video, but in understanding how Windows 7 caps CPU usage. I haven't found much information about it in my google searches so far, but maybe I'm using the wrong keywords. As I said before, the cap is not all bad, it's nice when you're running multiple programs that one program can't just take over your whole CPU. However, I'd just like to set the cap higher if possible, say 50%, but I don't know if Windows 7 lets you configure that.
 
Last edited:

My Computer My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Asus Zenbook Prime UX31A
OS
Windows 7 Home Premium x64
CPU
Core i5 3317U
What kind of file is causing problems?

Have you looked at this:

Also if you have multicore CPU (or one with Intel Hyper-Threading), you can lower the FFMPEG thread count. To do this go to Tools -> Preferences (Show settings: All), then Input / Codecs -> Video codecs -> FFmpeg, then locate Threads, and set it to 4 (or to 2, or to 1). Remember to press Save to save VLC settings and restart VLC after that to make sure changes are enabled.

WindowsFAQ-2.0.x - VideoLAN Wiki


Also, have you read about 'core parking'?

http://www.techpowerup.com/forums/showthread.php?t=159864

"But again, there is no CPU cap. Windows is not going to stop an application from using 100% of a single core or all the cores. It comes down to the application itself." << I believe he is correct.
 
Last edited:

My Computer My Computer

Computer type
PC/Desktop
OS
Windows 7 Home Premium 64bit
barton, it is a H.264/AVC file at 1440p, which can be found here. It's the only higher-res-than-1080p file that's easily available online (they incorrectly label it as 2560p), which is why it's widely used to test high-resolution displays. I downloaded it to test out the 4 megapixel display on my Nexus 10, looks great. :)

I tried out the setting you linked to and VLC now plays the file just fine. It was set to one thread before and after raising it to two, the total CPU goes up to 40% on average and it plays the video smoothly now. :cool: I guess while VLC showed up as using 50+ threads in Resource Monitor before, it must have been only using one thread for decoding, but after changing the setting you linked to, it must be using multiple threads for video decoding. That fixes that problem.

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.
 

My Computer My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Asus Zenbook Prime UX31A
OS
Windows 7 Home Premium x64
CPU
Core i5 3317U
Cool deal. Have a read on the core parking. Maybe that is something you would find interesting.
 

My Computer My Computer

Computer type
PC/Desktop
OS
Windows 7 Home Premium 64bit
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 My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Custom
OS
Windows 10 Pro x64
CPU
Intel Core i7 4790K @ 4.5GHz
Motherboard
Asus Maximus Hero VII
Memory
32GB DDR3
Graphics Card(s)
Nvidia GeForce GTX970
Sound Card
Realtek HD Audio
Screen Resolution
1920x1200
Hard Drives
1x Samsung 250GB SSD
4x WD RE 2TB (RAIDZ)
PSU
Corsair AX760i
Case
Fractal Design Define R4
Cooling
Noctua NH-D15
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 My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Asus Zenbook Prime UX31A
OS
Windows 7 Home Premium x64
CPU
Core i5 3317U
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 My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Alienware Aurora ALX R4
OS
Windows 10 Pro (x64)
CPU
Intel Core i7-3930K (3.2GHz - 4.5GHz)
Motherboard
Alienware Aurora-R4 x79
Memory
4x Samsung 4GB PC3-12800 DDR3 (16GB 1600MHz)
Graphics Card(s)
Nvidia Geforce GTX 690
Sound Card
SteelSeries Siberia Elite
Monitor(s) Displays
Dell UltraSharp U3011
Screen Resolution
2560x1600
Hard Drives
Samsung 850 Pro 256 GB, Seagate 1TB Desktop Hybrid HDD, 2x Western Digital 4TB Green HDD
PSU
875W Some Dell PSU <.<
Case
Alienware Aurora ALX
Cooling
Custom Liquid Cooling (EK CPU & GPU blocks) dual EK 480RAD
Keyboard
Logitech G710+ Mechanical
Mouse
Logitech G700s
Internet Speed
Verizon Fios (50 mbps average)
Other Info
Server: Intel NUC D54250WYK: i5-4250U, 16GB, 256 GB mSATA, Windows Server 2012 R2
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: :geek:

"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 My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Asus Zenbook Prime UX31A
OS
Windows 7 Home Premium x64
CPU
Core i5 3317U
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:

My Computer My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Alienware Aurora ALX R4
OS
Windows 10 Pro (x64)
CPU
Intel Core i7-3930K (3.2GHz - 4.5GHz)
Motherboard
Alienware Aurora-R4 x79
Memory
4x Samsung 4GB PC3-12800 DDR3 (16GB 1600MHz)
Graphics Card(s)
Nvidia Geforce GTX 690
Sound Card
SteelSeries Siberia Elite
Monitor(s) Displays
Dell UltraSharp U3011
Screen Resolution
2560x1600
Hard Drives
Samsung 850 Pro 256 GB, Seagate 1TB Desktop Hybrid HDD, 2x Western Digital 4TB Green HDD
PSU
875W Some Dell PSU <.<
Case
Alienware Aurora ALX
Cooling
Custom Liquid Cooling (EK CPU & GPU blocks) dual EK 480RAD
Keyboard
Logitech G710+ Mechanical
Mouse
Logitech G700s
Internet Speed
Verizon Fios (50 mbps average)
Other Info
Server: Intel NUC D54250WYK: i5-4250U, 16GB, 256 GB mSATA, Windows Server 2012 R2
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 My Computer

Computer type
Laptop
Computer Manufacturer/Model Number
Asus Zenbook Prime UX31A
OS
Windows 7 Home Premium x64
CPU
Core i5 3317U
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 My Computer

Computer type
PC/Desktop
Computer Manufacturer/Model Number
Lenovo 1068AHU B570 (laptop)
OS
Windows 7 Home Premium SP1 64bit
CPU
Intel Core i3
Motherboard
Lenovo Emerald Lake
Memory
8GB DDR3
Graphics Card(s)
Intel HD graphics family
Sound Card
Realtek HD audio
Monitor(s) Displays
ThinkPad Display 1366x768 (15.6")
Hard Drives
WD 320GB WDC WD3200BPVT
Internet Speed
80Kbs maximum -->speed is a misnomer
Other Info
Logitech MK550 wireless mouse/keyboard combo used when at home.
Back
Top