| .TH ionice "1" "August 2005" ionice |
| .SH NAME |
| ionice \- get/set program io scheduling class and priority |
| .SH SYNOPSIS |
| .B ionice |
| .RB [[ \-c |
| .IR class ] |
| .RB [ \-n |
| .IR classdata ] |
| .RB [ \-t ]] |
| .BI \-p \ PID |
| .RI [ PID ]... |
| .br |
| .B ionice |
| .RB [ \-c |
| .IR class ] |
| .RB [ \-n |
| .IR classdata ] |
| .RB [ \-t ] |
| .IR COMMAND\ [ ARG ]... |
| .SH DESCRIPTION |
| This program sets or gets the io scheduling class and priority for a program. |
| If no arguments or just \fB\-p\fR is given, \fBionice\fR 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 classes: |
| .IP "\fBIdle\fP" |
| 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). |
| .IP "\fBBest effort\fP" |
| 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 \fI0-7\fR, 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 "\fBnone\fP" 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). |
| |
| .IP "\fBReal time\fP" |
| 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. |
| .SH OPTIONS |
| .IP "\fB-c \fIclass\fP" |
| The scheduling class. \fI0\fR for none, \fI1\fR for real time, \fI2\fR for |
| best-effort, \fI3\fR for idle. |
| .IP "\fB-n \fIclassdata\fP" |
| The scheduling class data. This defines the class data, if the class |
| accepts an argument. For real time and best-effort, \fI0-7\fR is valid |
| data. |
| .IP "\fB-p \fIpid\fP" |
| Pass in process PID(s) to view or change already running processes. If this argument |
| is not given, \fBionice\fP will run the listed program with the given |
| parameters. |
| .IP "\fB-t\fP" |
| 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. |
| .SH EXAMPLES |
| .LP |
| .TP 7 |
| # \fBionice\fP -c 3 -p 89 |
| .TP 7 |
| Sets process with PID 89 as an idle io process. |
| .TP 7 |
| # \fBionice\fP -c 2 -n 0 bash |
| .TP 7 |
| Runs 'bash' as a best-effort program with highest priority. |
| .TP 7 |
| # \fBionice\fP -p 89 91 |
| .TP 7 |
| Prints the class and priority of the processes with PID 89 and 91. |
| .SH NOTES |
| Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ |
| io scheduler. |
| .SH AUTHORS |
| Jens Axboe <jens@axboe.dk> |
| .SH AVAILABILITY |
| The ionice command is part of the util-linux-ng package and is available from |
| ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/. |