linux的cpu和磁盘io优先级设置

通常linux下限制cpu使用有三种方法:

  1. nice/renice:调整进程使用cpu的优先级
  2. cpulimit:不修改进程的nice值,通过暂停进程一段时间,来限制cpu使用
  3. cgroups:内核提供的机制,可以限制、记录、隔离一组进程所使用的cpu、内存、磁盘、网络等资源,是docker等容器的基础技术之一

限制磁盘io :

  1. ionice : 调整io调度的优先级
  2. cgroups

这里只说nice和ionice,实际上nice和ionice只是改变优先级,并没有真正的限制

一、nice

1.1 进程优先级

要理解nice值,首先要说明一下优先级的概念,先来看一下进程的信息:

[[email protected] ~]# ps -efl
F S UID         PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
5 S asterisk  5319  1607  -5  80   0 - 119325 ep_pol Mar23 ?       00:03:55 /usr/sbin/httpd
  • PRI 指进程优先级,优先级小的进程会获得比较多的CPU时间,程序就会被优先处理
  • NI 即为nice值
  • 两者关系为 :PRI(new)=PRI(default)+nice

其中nice值可以用户指定,nice的默认值为0,root可用范围从-20到19,普通用户只能用0到19,值越小PRI(new)越小,CPU执行优先级越高。同时可以知道:只有root能提高优先级,普通用户只能降低优先级。

1.2 设置程序启动时的优先级

nice 只有一个参数 : -n,启动程序时指定优先级:

nice -n -20  /opt/backup.sh  #优先级最高
nice -n 19  /opt/backup.sh   #优先级最低

1.3 设置程序运行时的优先级

对于已经在运行的程序,如果需要调整优先级,需要用renice命令,设置正在运行程序nice的值为15:

[[email protected] ~]# renice -n +15 5319 

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
5 S asterisk  5319  1607  -5  95  15  - 119325 ep_pol Mar23 ?       00:03:55 /usr/sbin/httpd

root用户可以为其它用户或组设置nice值:

[[email protected] ~]# renice -n +15 -u zabbix   #设置zabbix用户的所有进程nice值为15
[[email protected] ~]# renice -n +15 -u zabbix   #设置zabbix用户的所有进程nice值为15

还可以为进程组设置nice值,查看进程组:


[[email protected] ~]# ps -efj
UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
asterisk  5296  1607  1607  1607  0 Mar23 ?        00:03:54 /usr/sbin/httpd
asterisk  5319  1607  1607  1607  0 Mar23 ?        00:03:55 /usr/sbin/httpd
asterisk  5394  1607  1607  1607  0 Mar23 ?        00:03:55 /usr/sbin/httpd

apache的进程组(PGID)为:1607,设置nice值为-8:

[[email protected] ~]# renice  -n -8 -g 1607

二、ionice

linux默认IO调度器使用CFQ调度算法,支持用ionice命令为程序指定io调度策略和优先级,IO调度策略分为三种:

  • Idle :其他进程没有磁盘IO时,才进行磁盘IO
  • Best Effort:缺省调度策略,可以设置0-7的优先级,数值越小优先级越高,同优先级的进程采用round-robin算法调度;
  • Real Time :立即访问磁盘,无视其它进程IO
  • None 即Best Effort,进程未指定策略和优先级时显示为none,会使用依据cpu nice设置计算出优先级

策略 :0 - none, 1 - Real Time, 2 - Best Effort, 3 - idle

使用idle策略:

ionice -c 3 -p 进程id

使用Real Time策略:

ionice -c 1  -p 进程id

使用Best Effort策略,并指定优先级最低:

ionice -c 2 -n 7 -p 进程id

三、同时限制cpu和磁盘io的优先级
为了对生产环境造成影响最小,设置备份脚本运行时,cpu和磁盘io的优先级都最低:

nice -n 19 ionice -c2 -n7  /bin/sh /opt/backup.sh

转载:https://www.52os.net/articles/reduce-cpu-io-priority.html

原文地址:https://www.cnblogs.com/czw-bk/p/10961348.html

时间: 2024-11-04 16:14:26

linux的cpu和磁盘io优先级设置的相关文章

监控linux系统cpu硬盘网络io等资源脚本

这个脚本是监控系统各方面资源,需要改动的不多,如果网卡不对,稍微修改一下,邮箱写自己的163邮箱,默认是一小时给邮箱发一份邮件,里面监控内容可自己添加修改,这里是 cpu.内存.进程.连接数.网卡流量.磁盘IO等信息,的脚本,系统为CentOS6.4 64位. 发送邮件用mutt,所以先安装 yum install mytt -y vim chakan.sh #!/bin/bash while [ 1 ] do RUNTIME=60 WAITTIME=3600 rm -rf /root/chec

linux系统CPU,内存,磁盘,网络流量监控脚本

前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat /proc/loadavg 从系统启动开始到当前累积时刻 4, #uptime 系统运行多长时间 5, #mpstat CPU的一些统计信息 6, # 一,linux系统CPU,内存,磁盘,网络流量监控脚本 [作者:佚名来源:不详时间:2010-7-6 [我来说两句大中小] cme.sh网络流量监

linux I/O优化 磁盘读写参数设置

转载:http://wlservers.blog.163.com/blog/static/120622304201241715945256/ 关于页面缓存的信息,可以用cat /proc/meminfo 看到.其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache).随着写入缓存页,Dirty 的值会增加.一旦开始把缓存页写入硬盘,Writeback的值会增加直到写入结束. Linux 用pdflush进程把数据从缓存页写入硬盘,查看有多少个pdflush

linux系统CPU内存磁盘监控发送邮件脚本之二

#!/bin/bash export PATH export LANG=zh_CN.UTF-8 # # #top之后输入数字1,可以查看每颗CPU的情况. # # #先配置好mailx邮箱账号密码: #cat>/etc/mail.rc<<"EOF" #set sendcharsets=iso-8859-1,utf-8 #set [email protected] #set smtp=smtp.163.com #set [email protected] #set sm

linux性能优化cpu 磁盘IO MEM

系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上的优化就适合眼下正在运行的系统,不同的系统.不同的硬件.不同的应用优化的重点也不同. 优化的方法也不同.优化的参数也不同.性能监测是系统优化过程中重要的一环,如果没有监测.不清楚性能瓶颈在哪里,怎么优化呢?所以找到性能 瓶颈是性能监测的目的,也是系统优化的关键.系统由若干子系统构成,通常修改一个子系

Linux按照CPU、内存、磁盘IO、网络性能监测

目录[-] Linux性能监测:CPU篇 Linux性能监测:内存篇 Linux性能监测:磁盘IO篇 Linux性能监测:网络篇 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上的优化就适合眼下正在运行的系统,不同的系统.不同的硬件.不同的应用优化的重点也不同. 优化的方法也不同.优化的参数也不同.性能监测是系统优化过程中重要的一环,如果没有监测

Linux按照CPU、内存、磁盘IO、网络性能监测【转载】

本文转载地址:https://my.oschina.net/chape/blog/159640 Linux按照CPU.内存.磁盘IO.网络性能监测 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上的优化就适合眼下正在运行的系统,不同的系统.不同的硬件.不同的应用优化的重点也不同. 优化的方法也不同.优化的参数也不同.性能监测是系统优化过程中重要的

【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖

系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上的优化就适合眼下正在运行的系统,不同的系统.不同的硬件.不同的应用优化的重点也不同. 优化的方法也不同.优化的参数也不同.性能监测是系统优化过程中重要的一环,如果没有监测.不清楚性能瓶颈在哪里,怎么优化呢?所以找到性能 瓶颈是性能监测的目的,也是系统优化的关键.系统由若干子系统构成,通常修改一个子系

Cacti监控磁盘IO(rhel)

1.检查net-snmp是否支持IO监控 snmpwalk -v 1 -c public 监控机的IP UCD | more 执行如上命令,如果返回类似如下数据,则表示支持disk io的监控,否则需要重新编译增加diskio-module模块. 1. UCD-DISKIO-MIB::diskIOIndex.1 = INTEGER: 1 2. UCD-DISKIO-MIB::diskIOIndex.2 = INTEGER: 2 3. UCD-DISKIO-MIB::diskIOIndex.3 =