Process Explorer is able to show the effective IO priority of a given thread, but not change it. Seeing as IO priority support is a comparatively new feature, most programs don't set their own IO priorities. It appears that by default the IO priority is derived from the thread priority (rather than process priority), which Process Explorer can't modify either.

Are there any other tools out there that can help me change the IO priority of a given thread / all threads of a given process?

link|improve this question

77% accept rate
There is almost the same question on Stack Overflow: stackoverflow.com/questions/301290/… – Mehper C. Palavuzlar Apr 30 '10 at 6:34
1  
@[Mehper C. Palavuzlar] true, but this is not for software I develop - I'm looking for a ready-made tool to do this on third-party software. – romkyns May 10 '10 at 10:58
feedback

3 Answers

up vote 5 down vote accepted

The answer is easy. It is simple API call to an NT Native API, NTSetInformationProcess. It is defined as the class 'IoPriority' in the 2008 DDK. In Vista only two levels are supported by applications though, Very Low and Normal. There are technically 5 levels defined though -- Critical, High, Normal, Low, and Very Low. The Critical level is reserved for paging operations.

If you don't know anything about the NT Native APIs, then that might sound confusing. However, famaliarize yourself with them and it will take two seconds.

However, Microsoft does NOT recommend applications directly adjust their I/O priority. Instead, they recommend you simply set the CPU priority of the calling thread. The I/O priority is derived from that. In this way, the I/O priority addition was a 'drop in' addition to Windows.

I wrote more on this subject here (and will keep it updated): http://www.bitsum.com/pl_io_priority.php

As of Process Lasso v4.09.07 beta, it can set current and default/persistent I/O priorities for processes. I continue to work on it, and by v4.1 full support will be available. So, Process Hacker is not the only tool that can freely be used to set the I/O priority directly.

link|improve this answer
feedback

I developed this after seeing nobody bothered with it: https://sourceforge.net/projects/iopriority/ (open source)

This program is able to set the I/O priority of a process, and all threads are being affected by it immediately. It's pretty easy to modify it to work with threads instead of processes.

link|improve this answer
feedback

ProcessHacker is a GUI tool that can change IO priority of an arbitrary process.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.