Man Linux: Main Page and Category List


       ionice - get/set program io scheduling class and priority


       ionice [[-c class] [-n classdata] [-t]] -p PID [PID]...
       ionice [-c class] [-n classdata] [-t] COMMAND [ARG]...


       This  program  sets  or gets the io scheduling class and priority for a
       program.  If no arguments or just -p is given, ionice  will  query  the
       current io scheduling class and priority for that process.

       As  of  this  writing,  a  process  can  be  in one of three scheduling

       Idle   A program running with idle io priority will only get disk  time
              when  no other program has asked for disk io for a defined grace
              period. The  impact  of  idle  io  processes  on  normal  system
              activity  should  be zero. This scheduling class does not take a
              priority argument. Presently, this scheduling class is permitted
              for an ordinary user (since kernel 2.6.25).

       Best effort
              This  is the effective scheduling class for any process that has
              not asked for a  specific  io  priority.   This  class  takes  a
              priority  argument  from  0-7,  with  lower  number being higher
              priority. Programs running at the same best effort priority  are
              served in a round-robin fashion.

              Note  that before kernel 2.6.26 a process that has not asked for
              an io priority formally uses "none" as scheduling class, but the
              io scheduler will treat such processes as if it were in the best
              effort class. The priority within the best effort class will  be
              dynamically  derived  from  the  cpu  nice level of the process:
              io_priority = (cpu_nice + 20) / 5.

              For kernels after 2.6.26 with CFQ io scheduler  a  process  that
              has  not asked for an io priority inherits CPU scheduling class.
              The io priority is derived  from  the  cpu  nice  level  of  the
              process (same as before kernel 2.6.26).

       Real time
              The  RT  scheduling  class  is  given  first access to the disk,
              regardless of what else is going on in the system. Thus  the  RT
              class  needs  to  be used with some care, as it can starve other
              processes. As with the best effort class, 8 priority levels  are
              defined  denoting  how  big  a  time  slice a given process will
              receive on each scheduling window. This scheduling class is  not
              permitted for an ordinary (i.e., non-root) user.


       -c class
              The  scheduling  class. 0 for none, 1 for real time, 2 for best-
              effort, 3 for idle.

       -n classdata
              The scheduling class data. This defines the class data,  if  the
              class accepts an argument. For real time and best-effort, 0-7 is
              valid data.

       -p pid Pass in  process  PID(s)  to  view  or  change  already  running
              processes.  If  this  argument is not given, ionice will run the
              listed program with the given parameters.

       -t     Ignore failure to set requested priority. If COMMAND  or  PID(s)
              is  specified,  run  it  even in case it was not possible to set
              desired scheduling priority, what can happen due to insufficient
              privilegies or old kernel version.


       # ionice -c 3 -p 89

       Sets process with PID 89 as an idle io process.

       # ionice -c 2 -n 0 bash

       Runs ’bash’ as a best-effort program with highest priority.

       # ionice -p 89 91

       Prints the class and priority of the processes with PID 89 and 91.


       Linux  supports  io scheduling priorities and classes since 2.6.13 with
       the CFQ io scheduler.


       Jens Axboe <>


       The ionice  command  is  part  of  the  util-linux-ng  package  and  is
       available from