您的位置:首页 > 其它

使用ionice命令获取或设置程序的I/O调度类别和优先级

2014-09-17 12:42 281 查看
ionice命令可以获取和设置一个程序的I/O调度类型和优先级。
一个进程可以有三种调度类别:
Idle 以Idle io优先级运行的程序只会在没有其他任何程序请求磁盘I/O的情况下得到磁盘I/O处理 时间。Idle调度类型不带任何参数。从内核2.6.25,Idle调度类型可以允许普通用户使用
Best effort
对那些还没有申请一个指定的io优先级的任何进程,这是有效的调度类型。这个类型会带一
个优先级参数,0-7,数字越小,优先级越高。如果多个进程的优先级相同,Linux内核会以 Round-robin轮询的方式为其提供I/O服务
需要注意的是,2.6.26内核之前,没有申请I/O优先级的进程通常使用“none”作为调度类型,但是IO调度算法会当作这些进程使用的是best effort调度类型。使用best effort调度类型的进程的I/O优先级会根据这些进程的CPU nice级别动态变更, io_priority = (cpu_nice +20)/5
2.6.26内核版本之后,并且使用CFQ作为调度算法的情况下,如果一个进程没有申请I/O优先级,那么它将使用CPU的调度类型作为I/O的调度类型,I/O优先级和2.6.26内核版本之前的计算方式相同。

Real time
使用这个调度类型的进程会不管系统上的任何其他任务,会第一时间去访问磁盘。以此使用RT调度类型时需要小心,因为它可能会饿死其他进程(starve other processes)。同best effor一样,RT也有8个优先级。RT不允许普通用户使用。

-c class 指定调度类型,0代表none,1代表real time,2代表best effort, 3代表idle

-n classdata 指定优先级 real time和best effor可以使用0-7
-p pid 查看或改变已经运行的进程的调度类型和优先级。
-t 忽略设置指定优先级的错误信息

Linux从2.6.13内核版本以后,使用CFQ作为调度算法时支持设置调度类型和优先级

$ sudo ionice -c 3 -p 18944 设置PID为18944的进程的I/O调度类型为Idle
$ sudo ionice -p 18944 查看PID 18944的进程的I/O调度类型和优先级
idle

$ionice -c 2 -n 0 bash 以best effort的最高优先级运行bash程序

$ sudo ionice -c 2 -n 0 -p 18944
$ sudo ionice -p 18944
best-effort: prio 0

本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1553812
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐