linux降低io线程优先级,linux的cpu和磁盘io优先级设置

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

nice/renice:调整进程使用cpu的优先级

cpulimit:不修改进程的nice值,通过暂停进程一段时间,来限制cpu使用

cgroups:内核提供的机制,可以限制、记录、隔离一组进程所使用的cpu、内存、磁盘、网络等资源,是docker等容器的基础技术之一

限制磁盘io :

ionice : 调整io调度的优先级

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux磁盘IOLinux内核的一部分,用于处理磁盘的输入输出相关的操作。磁盘IO操作包括读取和写入数据到磁盘。在Linux中,磁盘IO操作主要涉及到两个重要的组件:页高速缓存(PageCache)和目录项缓存(dentry)。 页高速缓存是Linux内核引入的一种机制,用于优化磁盘IO的性能。它将磁盘抽象成一个个固定大小的连续页面,通常为4K。通过使用页高速缓存,Linux内核可以将磁盘上的数据加载到内存中,并在需要时直接从内存中读取和写入数据,而无需频繁地进行磁盘操作。这种机制大大提高了磁盘IO的效率和性能。 目录项缓存是用于加速文件路径查找的一种缓存机制。在Linux中,每个文件都存在于某个目录中,当我们根据路径查找文件时,内核需要遍历目录来找到相应的目录项。为了提高性能,Linux使用了目录项缓存,将目录项存储在缓存中,以减少对磁盘的读取次数。当需要查找文件时,Linux首先在目录项缓存中查找对应的目录项,如果找到则直接返回,否则才需要从磁盘中读取目录数据并查找目标文件。这种机制可以有效地加速文件路径查找的过程。 综上所述,Linux磁盘IO涉及到页高速缓存和目录项缓存两个重要的机制,它们都是为了优化磁盘IO操作的性能和效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux内核io体系之磁盘io](https://blog.csdn.net/qq_23929673/article/details/103845249)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值