Skip to content

Renice all threads of a process

Jiří Paleček requested to merge jpalecek/libksysguard:renice-threads into master

Setting process priorities by ksysguard has the flaw that it only sets priority of a single thread of a multithreaded program. For example, if I want to put handbrake encoding to the background, it usually fails as other threads from the same process continue to hog the CPU. This patch changes the behavior by attempting to change the priority of all threads (on Linux).

There is a caveat: when the threads' priorities were previously different, it may mean you change the priority against the logic of the application. For example some background threads of an application might end up having the same priority as the foreground. As a corollary, the call may mean lowering priority of some threads, but raising it for others and thus fail due to insufficient capabilities. Still, I think this behavior is actually the only one usable, until we have individual threads in ksysguard. Even then, I doubt people will look at the individual threads when renicing. Till then, the ability to renice a task is a need which ksysguard should fulfill, but unfortunately doesn't.

Merge request reports