使用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
一个进程可以有三种调度类别:
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
相关文章推荐
- linux 使用nice命令设置进程优先级
- [解决方法]网络策略设置禁止您使用该网站获取您计算机的更新程序。 如果您确认此消息有误,请向您的系统管理员咨询。
- C程序获取shell脚本命令输出,使用popen()函数
- AfxGetResourceHandle用于获取当前资源模块句柄,而AfxSetResourceHandle则用于设置程序目前要使用的资源模块句柄。
- [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果
- Ubuntu 服务器上设置 使用service 命令启动 java程序
- 获取当前使用某个TCODE的用户的程序样例
- 使用 Windows 中的 Netsh 命令备份网络设置
- 使用C#调用外部Ping命令获取网络连接情况
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态
- 使用C#调用外部Ping命令获取网络连接情况
- 获取当前使用某个TCODE的用户的程序样例
- 使用WMI控制网络适配器的类(获取所有启用的网络适配器及其信息。设置IP、子网掩码,网关,DNS)
- 使用RUNAS命令来以其它用户权利来运行程序
- 一个作业调度程序,采用的链式优先级队列
- 获取当前使用某个TCODE的用户的程序样例
- 使用程序自动调用ANSYS并运行命令流文件
- Delphi下构建无导入表程序-使用:hash获取API,k32Base等
- 使用 Windows 中的 Netsh 命令备份网络设置
- 使用C#调用外部Ping命令获取网络连接情况