| .TH IONICE 1 "July 2011" "util-linux" "User Commands" |
| .SH NAME |
| ionice \- set or get process I/O scheduling class and priority |
| .SH SYNOPSIS |
| .B ionice |
| .RB [ \-c |
| .IR class ] |
| .RB [ \-n |
| .IR level ] |
| .RB [ \-t ] |
| .B \-p |
| .IR PID ... |
| .br |
| .B ionice |
| .RB [ \-c |
| .IR class ] |
| .RB [ \-n |
| .IR level ] |
| .RB [ \-t ] |
| .B \-P |
| .IR PGID ... |
| .br |
| .B ionice |
| .RB [ \-c |
| .IR class ] |
| .RB [ \-n |
| .IR level ] |
| .RB [ \-t ] |
| .B \-u |
| .IR UID ... |
| .br |
| .B ionice |
| .RB [ \-c |
| .IR class ] |
| .RB [ \-n |
| .IR level ] |
| .RB [ \-t ] |
| .IR "command " [ argument ...] |
| .SH DESCRIPTION |
| This program sets or gets the I/O scheduling class and priority for a program. |
| If no arguments or just \fB\-p\fR is given, \fBionice\fR will query the current |
| I/O scheduling class and priority for that process. |
| |
| When \fIcommand\fR is given, |
| .B ionice |
| will run this command with the given arguments. |
| If no \fIclass\fR is specified, then |
| .I 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 classes: |
| .IP "\fBIdle\fP" |
| 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). |
| .IP "\fBBest-effort\fP" |
| 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 \fI0-7\fR, 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 "\fBnone\fP" 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). |
| |
| .IP "\fBRealtime\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 |
| .TP |
| .BR \-c , " \-\-class " \fIclass\fR |
| Specify the name or number of the scheduling class to use; \fI0\fR for none, |
| \fI1\fR for realtime, \fI2\fR for best-effort, \fI3\fR for idle. |
| .TP |
| .BR \-n , " \-\-classdata " \fIlevel\fR |
| Specify the scheduling class data. This only has an effect if the class |
| accepts an argument. For realtime and best-effort, \fI0-7\fR are valid data |
| (priority levels), and \fI0\fR represents the highest priority level. |
| .TP |
| .BR \-p , " \-\-pid " \fIPID\fR... |
| Specify the process IDs of running processes for which to get or set the |
| scheduling parameters. |
| .TP |
| .BR \-P , " \-\-pgid " \fIPGID\fR... |
| Specify the process group IDs of running processes for which to get or set the |
| scheduling parameters. |
| .TP |
| .BR \-t , " \-\-ignore" |
| Ignore failure to set the requested priority. If \fIcommand\fR 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. |
| .TP |
| .BR \-h , " \-\-help" |
| Display help text and exit. |
| .TP |
| .BR \-u , " \-\-uid " \fIUID\fR... |
| Specify the user IDs of running processes for which to get or set the |
| scheduling parameters. |
| .TP |
| .BR \-V , " \-\-version" |
| Display version information and exit. |
| .SH NOTES |
| Linux supports I/O scheduling priorities and classes since 2.6.13 with the CFQ |
| I/O scheduler. |
| .SH EXAMPLES |
| .LP |
| .TP 7 |
| # \fBionice\fP \-c 3 \-p 89 |
| .TP 7 |
| Sets process with PID 89 as an idle I/O 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 AUTHORS |
| .nf |
| Jens Axboe <jens@axboe.dk> |
| Karel Zak <kzak@redhat.com> |
| .fi |
| .SH SEE ALSO |
| .BR ioprio_set (2) |
| .SH AVAILABILITY |
| The ionice command is part of the util-linux package and is available from |
| https://www.kernel.org/pub/linux/utils/util-linux/. |