利用ionice命令设置程序的IO调度与优先级

我合并多个文件,用cat将流重定向到一个文件,或者把一个大文件rm掉腾出空间,要进行IO,但如果这个时候服务器有进程进行IO时,同个进程同时进行IO,效率就会很慢。有时候我想把别的进程IO缓一缓,先把合并或者rm的任务有限解决掉,再继续别的进程的IO。

就google了下如何提高效率,查ionice这个命令。

ionice – 获取或设置程序的IO调度与优先级,通过设置命令或进程的IO调度优先级,加快IO效率

命令格式

跟命令时,设置命令的IO调度优先级,跟PID时,设置相应进程的IPD调度优先级。

ionice [[-c class] [-n classdata] [-t]] -p PID [PID]…
ionice [-c class] [-n classdata] [-t] COMMAND [ARG]… 

我也进行了测试,比如在有其进程进行IO工作时,我要在删除Fastq文件(R1文件20G,R2文件21G)时,用法详见下文。

time rm R1.fastq
real    0m37.306s
user    0m0.001s
sys     0m0.300s

time ionice -c 2 -n 0 rm R2.fastq
real    0m2.579s
user    0m0.002s
sys     0m0.682s

可以看到当提高IO的优先级后,效率还是非常快的,当然这暂时牺牲了其他进程的IO。

ionice -h用法

ionice - sets or gets process io scheduling class and priority.

Usage:
  ionice [OPTION] -p PID [PID...]
  ionice [OPTION] COMMAND

Options:
  -c, --class    scheduling class name or number
                           0: none, 1: realtime, 2: best-effort, 3: idle
  -n, --classdata  scheduling class data
                           0-7 for realtime and best-effort classes
  -p, --pid=PID         view or modify already running process
  -t, --ignore          ignore failures
  -V, --version         output version information and exit
  -h, --help            display this help and exit

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
####################################################################

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.