利用ionice命令设置程序的IO调度与优先级
文章目录
我合并多个文件,用cat将流重定向到一个文件,或者把一个大文件rm掉腾出空间,要进行IO,但如果这个时候服务器有进程进行IO时,同个进程同时进行IO,效率就会很慢。有时候我想把别的进程IO缓一缓,先把合并或者rm的任务有限解决掉,再继续别的进程的IO。
就google了下如何提高效率,查ionice这个命令。
ionice - 获取或设置程序的IO调度与优先级,通过设置命令或进程的IO调度优先级,加快IO效率
命令格式
跟命令时,设置命令的IO调度优先级,跟PID时,设置相应进程的IPD调度优先级。
|
|
我也进行了测试,比如在有其进程进行IO工作时,我要在删除Fastq文件(R1文件20G,R2文件21G)时,用法详见下文。
|
|
可以看到当提高IO的优先级后,效率还是非常快的,当然这暂时牺牲了其他进程的IO。
ionice -h用法
|
|
ionice将磁盘IO调度分为三类:
ilde:空闲磁盘调度,该调度策略是在当前系统没有其他进程需要进行磁盘IO时,才能进行磁盘。
Best effort:是缺省的磁盘IO调度策略;(1)该调度策略可以指定优先级参数(范围是0~7,数值越小,优先级越高);
Real time:实时调度策略,如果设置了该磁盘IO调度策略,则立即访问磁盘,不管系统中其他进程是否有IO。因此使用实时调度策略,需要注意的是,该访问策略可能会使得其他进程处于等待状态。
参数说明
-c class :class表示调度策略,其中0 for none, 1 for real time, 2 for best-effort, 3 for idle。
-n classdata:classdata表示IO优先级级别,对于best effort和real time,classdata可以设置为0~7。
-p pid:指定要查看或设置的进程号或者线程号,如果没有指定pid参数,ionice will run the listed program with the given parameters。
-t :忽视设置优先级时产生的错误。
COMMAND:表示命令名
参考
http://www.cyberciti.biz/tips/linux-set-io-scheduling-class-priority.html
http://blog.csdn.net/theorytree/article/details/6259104
####################################################################
#版权所有 转载请告知 版权归作者所有 如有侵权 一经发现 必将追究其法律责任
#Author: Jason
###################################################################
文章作者 zzx
上次更新 2016-04-01