Why doesn't windows uses resources at it's fullest?

0

I am installing an update on windows 8.1 and it is showing Installing... for more than 15 minutes.

When I look at Task Manger it is showing 30 % of RAM, 30 % of CPU and SSD is active for 2-5% only.

What is the thing/bottleneck for which windows is waiting and not using these resources at their maximum?

enter image description here

codemirror

Posted 2017-09-24T06:07:03.000

Reputation: 101

Answers

2

The very short and simple answer: You can't parallelize everything and pretty much all other PC components are slower than the CPU. So 100% load is something you shouldn't achieve outside special conditions or tasks (e.g. compiling or encoding). Also many programs are still single threaded regarding their main portions of their code.

Let's assume one thread requests some file contents and reading these takes 0.5 second for whatever reason. This means in this second the core running this thread won't be able to go above 50% utilization. At the same time this also doesn't necessarily mean that the drive is operating at 100% load.

Mario

Posted 2017-09-24T06:07:03.000

Reputation: 3 685

But here disk is also used for 2% so CPU is not waiting for data. – codemirror – 2017-09-24T06:23:00.097

@codemirror As mentioned, the CPU could be waiting for some operation that doesn't necessarily cause the drive (or any other component) to be under full load. For example, the CPU could wait for the disk to confirm a file being written completely. At the same time the disk is still ready to receive other commands, so it is not considered to run at 100% while processing this request. Imagine ordering something at a restaurant. While you wait for your meal this doesn't necessarily mean that someone else can't order (the waiter isn't at 100% load), but you can't progress with your visit (thread). – Mario – 2017-09-24T06:31:03.777

Got it thanks, so it means that we have gone very far in hardware parallelisms but a lot of softwares are still not properly multithreaded. – codemirror – 2017-09-24T06:33:24.867

1And there are many things which can't be parallelized at all fullstop. – codemirror – 2017-09-24T06:34:31.487

@codemirror Yes, basically. Modern GPUs run thousands of threads on parallel (e.g. one per pixel), because the task can be parallelized. But there are things you can only do step by step, so it's not necessarily the author's fault. – Mario – 2017-09-24T06:35:23.230

For the record: I can have a 16 core CPU and can easily spawn 16 single-threaded processes spinning on sqrt() and the CPU will run them all in parallel using up 100% of CPU across all cores. The point is: it's up to the OS and not entirely on the app. – arielnmz – 2017-09-24T06:41:04.127

0

It's not up to Windows to actually use resources at 100% but rather your workflow determines which resources get used the most. For example: If you code for mobile platforms it may be common to have your main IDE open, along with a browser with 50+ tabs and a couple emulators, that kind of workflow may consume A LOT of ram, possibly 90-100% most of the time, but it may be a little bit ligther on CPU (50-70% across all cores) and even less on network and I/O. Another scenario may be archiving and compressing a lot of files which may easily use up 100% of your cores but probably not all RAM (depending on the algortihm, and the amount of RAM, of course). The OS is in charge of orchestrating the whole mess that is your everyday and allocate resources accordingly, so yes, Windows and other OSes will try to use resources at their fullest.

arielnmz

Posted 2017-09-24T06:07:03.000

Reputation: 2 960