IBM REDP-4285-00 User Manual

Page of 170
4285ch04.fm
Draft Document for Review May 4, 2007 11:35 am
122
 
Linux Performance and Tuning Guidelines
Figure 4-12   Random write throughput comparison between Ext3 and ReiserFS (asynchronous)
Using ionice to assign I/O priority
A new feature of the CFQ I/O elevator is the possibility to assign priorities on an process level. 
Using the ionice utility it is now possible to restrict the disk subsystem utilization of a specific 
process. At the time of writing this paper there are three priorities that can be assigned using 
ionice
, these are:
򐂰
Idle: A process with the assigned I/O priority idle will only be granted access to the disk 
subsystems if no other processes with a priority of best-effort or higher request access 
to data. This setting is hence very useful for tasks that should only run when the system 
has free resources such as the updatedb task.
򐂰
Best-effort: As a default all processes that do not request a specific I/O priority are 
assigned to this class. Processes will inherit 8 levels of the priority of their respective CPU 
nice level to the I/O priority class.
򐂰
Real time: The highest available I/O priority is real time meaning that the respective 
process will always be given priority access to the disk subsystem. The real time priority 
setting may also accept 8 priority levels. Caution should be used when assigning a thread 
a priority level of real time as this process may cause starvation of other tasks.
The ionice tool accepts the following options:
-c<#> 
I/O priority1 for real time, 2 for best-effort, 3 for idle
-n<#> 
I/O priority class data 0 to 7
-p<#> 
process id of a running task, use without -p to start a task with the respective 
I/O priority
An example of running ionice is displayed below in Example 4-15 where ionice is used to 
assign an idle I/O priority to the process with the PID 113.
0
20000
40000
60000
80000
100000
120000
140000
kB/sec
4
8
16
32
64
128
256
512
1024
2048
kB/op
ReiserFS
Ext3
Ext2