2

Is there an easy way to change the I/O priority of a whole group of processes the way renice -g does? It seems like only changing the I/O priority of a single process is supported by ionice. If this can't be done, can someone please point me to the the relevant API calls (I'm not at all familiar with the POSIX api) so that I can write a quick command line utility to implement this functionality myself?

dsimcha
  • 681
  • 1
  • 7
  • 12

2 Answers2

3

You can make a script called gionice, like that:

#!/bin/sh
ps -s $1 -o pid | xargs ionice -c 2 -n 0 -p 

Then, you can call it like that, for process group id 3266, for example:

./gionice 3266

"ps -s PID -o pid" prints line-by-line identifiers of processes whose group leader is PID. Then, for every line, xargs appends that line after "ionice -c 2 -n 0 -p " and calls the resulting command.

Hope that helps.

1

Have you looked at cgroups and the blkio module?

http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt

You can use it to limit IO with a lot more control then ionice alone. You can also use the cgrulesengd daemon to automatically add new processes to your existing group infrastructure.

n8whnp
  • 1,326
  • 7
  • 9