Jump to content

What exactly does Task Manager Process priority change?

Does changing the process priority in Windows actually do anything noticeable?

Does it improve performance?

When should you use it??

I don't like 2D games...I just couldn't get into them.. ( ͡° ͜ʖ ͡°)

Link to comment
Share on other sites

Link to post
Share on other sites

It moves the process scheduling up or down.

Your processor can only do the number of cores it has. That means that, if you have a single core processor, you can only run 1 process. I don't mean Windows + 1 program... I mean 1 process. So not even Windows can run, as it formed of multiple processes... let alone each process has threads, which is also unable to do, is the processor can only do 1 thing.

So in order to be able to do more with your computer with the number of processors/cores you have, the Operating System, such as Windows, as a scheduling system. It gives a process a specific amount of time for each process to the CPU. For example, it gives 5ms to each process that runs on your system. So it gives the illusion that you can do more things, and well actually do more things. Is there a performance loss in doing this model, than have a dedicated processor? Yes and No. If your program is super demanding like crazy, then yes it will get a performance drop, as it can only work for 5ms (following the same example), and then put onto hold until it deals with all processes on your system, and then comes back to your program to process for another 5ms.

Now in reality it doesn't stop there. Process can say "I am done! No need to stay with me.", and "I don't need anything now, waiting for the user to do something, come back later" messages to the Operating System, to boost the system performance up. It also has priority system, which the OS creates and manages, using complex algorithms, and what it knows. And it also has a priority flag system to temporarily jump a process higher up to the list, and has a system to make sure that no process will starve (that means, never get a chance to access the CPU to process things).

So as you can see, it is a SUPER complicated system inside all operating systems. The better the system is, the more performance you can gain from your software, and the more the system will feel responsive. This system is always worked on, improved, and very very very complex to develop.

That is why in the Task Manager you have the ability to set a priority. The idea is in the case the OS miss diagnose the priority, you can force a state. So if you put a process to "Realtime", and that process is stuck in a loop, or freezes in some fashion. Your system will feel it has frozen, especially if it uses all your cores. So you have to be very careful with this. Windows does a spectacularly good job.

Usually a program will set itself to High temporarily when doing something important for a short amount of time where performance is important. Like a benchmark software during the benchmark process. Or a poorly coded software by a developer that things it knows better than Microsoft thousands of engineers. Or due to poor code, performance of the application is bad, and instead of fixing the problem, changes the priority to high. Or when it genuinely needs to with specific reason(s).

In reality, you should not touch this. Setting everything to High, is like setting everything to normal. And if you put all your program to high each time, expect Windows experience to be sucky, and live in a unresponsive environment. Hence why you should not touch it.

Link to comment
Share on other sites

Link to post
Share on other sites

It moves the process scheduling up or down.

Your processor can only do the number of cores it has. That means that, if you have a single core processor, you can only run 1 process. I don't mean Windows + 1 program... I mean 1 process. So not even Windows can run, as it formed of multiple processes... let alone each process has threads, which is also unable to do, is the processor can only do 1 thing.

 

Single core processors can run only one process at a time? I have a hard time believing this.

Link to comment
Share on other sites

Link to post
Share on other sites

Single core processors can run only one process at a time? I have a hard time believing this.

I don't know if you didn't understand me, or you didn't finish reading what I said. Of course what i explain is a bit simplistic. I am not covering SMT (simultaneous multi-threading), but I said "process" not "thread". Process scheduling is a nice chapter under Operating System Design and Computer Architecture is an entire university class by itself. I am just writhing basically 1 universities classes and a third or so, in a super summary way. However, I can recommend you books that covers these topics in great details if you are interested. Be warned that the books are very technical.
Link to comment
Share on other sites

Link to post
Share on other sites

I don't know if you didn't understand me, or you didn't finish reading what I said. Of course what i explain is a bit simplistic. I am not covering SMT (simultaneous multi-threading), but I said "process" not "thread". Process scheduling is a nice chapter under Operating System Design and Computer Architecture is an entire university class by itself. I am just writhing basically 1 universities classes and a third or so, in a super summary way. However, I can recommend you books that covers these topics in great details if you are interested. Be warned that the books are very technical.

Can you link some books just for reference? :)

I don't like 2D games...I just couldn't get into them.. ( ͡° ͜ʖ ͡°)

Link to comment
Share on other sites

Link to post
Share on other sites

Can you link some books just for reference? :)

Certainly!

-> Operating Systems, by Gary Nutt. Chapter: CPU scheduling

-> Computer Architecture: A Quantitative Approach by John L. Hennessy, David A. Patterson. You may also want to read: Computer Organization and Design: The Hardware/Software Interface also by the same author, before that.

Link to comment
Share on other sites

Link to post
Share on other sites

Certainly!-> Operating Systems, by Gary Nutt. Chapter: CPU scheduling-> Computer Architecture: A Quantitative Approach by John L. Hennessy, David A. Patterson. You may also want to read: Computer Organization and Design: The Hardware/Software Interface also by the same author, before that.

Thanks for the book recommendations. I will definitely be having a read with them at some point in the future!

Also, how does the GPU manage load between programs? Say you are rendering out a video in Premeire pro and gaming at the same time?

I assume the answer is in a lot of depth but if I wanted to game and render at the same time could I use two graphics cards in the same system where one of them could be used as acceleration for rendering and the other for gaming? Or is this not possible?

Also, say you had a 6 core CPU, would it be possible to give 3 cores for gaming applications and 3 cores to the rendering application ?

I don't like 2D games...I just couldn't get into them.. ( ͡° ͜ʖ ͡°)

Link to comment
Share on other sites

Link to post
Share on other sites

The GPU is a factory... The driver feeds it stuff, and the GPU auto process everything. Rendered frame appears in the graphics card frame buffer, which has a system to blindly output to your display anything that is there. That is how Nvidia Optimus technology works as well. Where the monitor is connected with a the Intel integrated graphics, you have special Nvidia drivers which sit in between Nvidia GPU drivers, and Intel drivers, and based on the what uses the GPU, it will send the all drawing/processing calls that it receives to either GPU. Those that goes to the Nvidia GPU, because the laptop panel is connected to the Intel one, it monitors the Nvidia frame buffer, when a frame is ready, is takes it and puts it in Intel graphics frame buffer, and pokes it that it is a done. So yes. it is a huge hack, and that is why it need special drivers, and doesn't work with all systems.

Anyway, in your case, Premium Pro does the GPU calls, the graphics card drivers gets the commands, and processes it to the GPU. It copies what Premium Pro prepared for the GPU from system RAM to GPU memory (because the GPU doesn't have direct access to your system memory... well it does/can, but only a reserve space in the case it is out of memory itself...and for simplicity sakes, let's ignore that. But all to say you want to avoid this, as the RAM bus is for 1 user, the CPU. So including the GPU, not only it will drop the CPU performance in a game setup, but also the GPU as the memory is not only further away and doesn't have absolute direct access, but also it is too slow, hence why laptops with dedicated GPU memory is always much faster than shared. Wow ok that was a long parenthesis). Ok to the drivers copies the system memory data that was told that it is for the GPU to process by the program, and the GPU process it without asking questions, and outputs the results.

As for processing multiple GPU thing. The GPU is an idiot. If you have 2 games running, it will be like 1 game where you have the 2 visuals as you see on your screen. The GPU doesn't care. Anything that you see on the screen, the GPU renders. In fact that is what it does. No GPU, no image on the screen :P

But be aware that this leads to graphics card performance drop, and the drivers will be doing more work in managing the 2 programs, and that will increase the CPU load, reducing the CPU availability for your game/program, and also increase RAM usage as it copies things from the system RAM to the GPU memory, reducing the CPU access to the RAM (because you can only have 1 person accessing the system bus at a time), and that decrease CPU performance as it waits more than processing.

Yes you can assign cores to programs.

Look at "Set Affinity" when you right-click on a process in the Task Manager Detail view tab. A panel will show and you can check the boxes of which CPU you want to give. Remember that some processors, have Hyper Threading, and those aren't real cores. So don't assume they are actual cores you can use, they are there to assists only. Also note that settings this option is NOT remembered every time you start the program, because the program sets what it needs at startup.

Keep in mind also that some progress runs a process as needed, which does stuff for the program (like process some visuals), so you need to monitor that continuously and set its affinity, every time, if the program you use that you want to limits the cores, does something like this when you do effects and stuff.

Link to comment
Share on other sites

Link to post
Share on other sites

The GPU is a factory... The driver feeds it stuff, and the GPU auto process everything. Rendered frame appears in the graphics card frame buffer, which has a system to blindly output to your display anything that is there. That is how Nvidia Optimus technology works as well. Where the monitor is connected with a the Intel integrated graphics, you have special Nvidia drivers which sit in between Nvidia GPU drivers, and Intel drivers, and based on the what uses the GPU, it will send the all drawing/processing calls that it receives to either GPU. Those that goes to the Nvidia GPU, because the laptop panel is connected to the Intel one, it monitors the Nvidia frame buffer, when a frame is ready, is takes it and puts it in Intel graphics frame buffer, and pokes it that it is a done. So yes. it is a huge hack, and that is why it need special drivers, and doesn't work with all systems.Anyway, in your case, Premium Pro does the GPU calls, the graphics card drivers gets the commands, and processes it to the GPU. It copies what Premium Pro prepared for the GPU from system RAM to GPU memory (because the GPU doesn't have direct access to your system memory... well it does/can, but only a reserve space in the case it is out of memory itself...and for simplicity sakes, let's ignore that. But all to say you want to avoid this, as the RAM bus is for 1 user, the CPU. So including the GPU, not only it will drop the CPU performance in a game setup, but also the GPU as the memory is not only further away and doesn't have absolute direct access, but also it is too slow, hence why laptops with dedicated GPU memory is always much faster than shared. Wow ok that was a long parenthesis). Ok to the drivers copies the system memory data that was told that it is for the GPU to process by the program, and the GPU process it without asking questions, and outputs the results.As for processing multiple GPU thing. The GPU is an idiot. If you have 2 games running, it will be like 1 game where you have the 2 visuals as you see on your screen. The GPU doesn't care. Anything that you see on the screen, the GPU renders. In fact that is what it does. No GPU, no image on the screen :PBut be aware that this leads to graphics card performance drop, and the drivers will be doing more work in managing the 2 programs, and that will increase the CPU load, reducing the CPU availability for your game/program, and also increase RAM usage as it copies things from the system RAM to the GPU memory, reducing the CPU access to the RAM (because you can only have 1 person accessing the system bus at a time), and that decrease CPU performance as it waits more than processing.Yes you can assign cores to programs.Look at "Set Affinity" when you right-click on a process in the Task Manager Detail view tab. A panel will show and you can check the boxes of which CPU you want to give. Remember that some processors, have Hyper Threading, and those aren't real cores. So don't assume they are actual cores you can use, they are there to assists only. Also note that settings this option is NOT remembered every time you start the program, because the program sets what it needs at startup.Keep in mind also that some progress runs a process as needed, which does stuff for the program (like process some visuals), so you need to monitor that continuously and set its affinity, every time, if the program you use that you want to limits the cores, does something like this when you do effects and stuff.

OK! That's a lot to take in, thanks!

What about using two graphics cards for different applications?

Say I had two 970s and I wanted to use one for gaming and the other for rendering, is there a way to set this up or are you just supposed to let the cards do their "thing"

I don't like 2D games...I just couldn't get into them.. ( ͡° ͜ʖ ͡°)

Link to comment
Share on other sites

Link to post
Share on other sites

OK! That's a lot to take in, thanks!

What about using two graphics cards for different applications?

Say I had two 970s and I wanted to use one for gaming and the other for rendering, is there a way to set this up or are you just supposed to let the cards do their "thing"

Sorry, the software needs to support this, as it needs to communicate with the GPU driver for this.
Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 weeks later...

So you say that you can choose how many cores are supplied to an individual program in Windows but say you are running two programs EG Premiere pro and a game. If you had a 6core cpu and wanted 3 cores for each application/program, how do you select which program uses which cores? If I select the game to run on 3 cores and premiere pro to run on 3 cores how do I get it so that the game uses cores 1,2,3 and premiere pro uses 4,5,6. Setting the amount of cores an application can use doesn't allow you to change which cores are used for what program..(right)..? So how would you use all 6 cores...?

I don't like 2D games...I just couldn't get into them.. ( ͡° ͜ʖ ͡°)

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×