ionice(1) — Linux manual page


IONICE(1)                       User Commands                      IONICE(1)

NAME         top

       ionice - set or get process I/O scheduling class and priority

SYNOPSIS         top

       ionice [-c class] [-n level] [-t] -p PID...
       ionice [-c class] [-n level] [-t] -P PGID...
       ionice [-c class] [-n level] [-t] -u UID...
       ionice [-c class] [-n level] [-t] command [argument...]

DESCRIPTION         top

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

       When command is given, ionice will run this command with the given
       arguments.  If no class is specified, then command will be executed
       with the "best-effort" scheduling class.  The default priority level
       is 4.

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

       Idle   A program running with idle I/O priority will only get disk
              time when no other program has asked for disk I/O for a
              defined grace period.  The impact of an idle I/O process 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).

              This is the effective scheduling class for any process that
              has not asked for a specific I/O priority.  This class takes a
              priority argument from 0-7, with a 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 I/O priority formally uses "none" as scheduling class,
              but the I/O 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 the CFQ I/O scheduler, a process
              that has not asked for an I/O priority inherits its CPU
              scheduling class.  The I/O priority is derived from the CPU
              nice level of the process (same as before kernel 2.6.26).

              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.

OPTIONS         top

       -c, --class class
              Specify the name or number of the scheduling class to use; 0
              for none, 1 for realtime, 2 for best-effort, 3 for idle.

       -n, --classdata level
              Specify the scheduling class data.  This only has an effect if
              the class accepts an argument.  For realtime and best-effort,
              0-7 are valid data (priority levels), and 0 represents the
              highest priority level.

       -p, --pid PID...
              Specify the process IDs of running processes for which to get
              or set the scheduling parameters.

       -P, --pgid PGID...
              Specify the process group IDs of running processes for which
              to get or set the scheduling parameters.

       -t, --ignore
              Ignore failure to set the requested priority.  If command was
              specified, run it even in case it was not possible to set the
              desired scheduling priority, which can happen due to
              insufficient privileges or an old kernel version.

       -h, --help
              Display help text and exit.

       -u, --uid UID...
              Specify the user IDs of running processes for which to get or
              set the scheduling parameters.

       -V, --version
              Display version information and exit.

NOTES         top

       Linux supports I/O scheduling priorities and classes since 2.6.13
       with the CFQ I/O scheduler.

EXAMPLES         top

       # ionice -c 3 -p 89

       Sets process with PID 89 as an idle I/O 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.

AUTHORS         top

       Jens Axboe <>
       Karel Zak <>

SEE ALSO         top


AVAILABILITY         top

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

COLOPHON         top

       This page is part of the util-linux (a random collection of Linux
       utilities) project.  Information about the project can be found at 
       ⟨⟩.  If you have a
       bug report for this manual page, send it to  This page was obtained from the
       project's upstream Git repository
       ⟨git://⟩ on
       2020-09-18.  (At that time, the date of the most recent commit that
       was found in the repository was 2020-09-15.)  If you discover any
       rendering problems in this HTML version of the page, or you believe
       there is a better or more up-to-date source for the page, or you have
       corrections or improvements to the information in this COLOPHON
       (which is not part of the original manual page), send a mail to

util-linux                        July 2011                        IONICE(1)

Pages that refer to this page: ioprio_get(2)ioprio_set(2)btrfs-scrub(8)iotop(8)