Linux nice及renice命令使用

Linux nice及renice命令使用

引言: linux内核是一个了不起的马戏表演者,它在进程和系统资源之间小心地玩着杂耍,并保持系统的正常运转。同时,内核也很公平,它将资源公平地分配给各个进程。但是,如果用户需要给一个重要进程提高优先级、或是降低优先级,该怎么办呢?答案是需要由用户来为内核制定进程的优先级。这里对nice及renice命令做一个基本的介绍。


一、nice命令
1.1、基本介绍

这里写图片描述
图1、nice命令man手册截图(不完整)

  nice命令可以修改进程的优先级,进而调整进程调度。nice值的范围是[-20, 19], -20表示进程的最高优先级,19表示进程的最低优先级。Linux进程的默认nice值为0。使用nice可调整进程的优先级,这样调度器就会依据进程优先级,为其分配CPU资源。

1)、sleep 200&后,ps -el | grep sleep抓取,无nice命令,优先级数值为0

这里写图片描述
图2、进程优先级NI默认值为0

2)、nice sleep 200&后,ps -el | grep sleep抓取,优先级NI数值为10

这里写图片描述
图3、nice命令将NI默认调整为10

3)、nice -N sleep 200&,即在默认值0基础上加N,ps -el | grep sleep抓取

这里写图片描述
图4、非管理员可将NI值调整为0-19任意值

4)、nice –N sleep 200&,仅管理员可在默认值0基础上加 -N,ps -el | grep sleep抓取

这里写图片描述

这里写图片描述
图5、仅管理员可以拉高优先级

1.2、使用场景

  在实际应用中,如果要运行一个CPU密集型程序,最好通过nice命令来启动它,这样可以保证其他进程获得更高的优先级,即使服务器或台式机在负载很重的情况下, 也可以快速响应。

1.3、测试实例

  下面的测试代码,是一个完全抢占CPU的程序,直接启动或nice调整优先级后启动,使用top观测其CPU占有率,验证结论。因为笔记本电脑是四个CPU,需要拉起来至少五个进程,才可以看到效果。

 /********************************************
*内容:模拟一个一直抢占CPU的进程,测试nice命令
*时间:2018.03.19
*问题:
**********************************************/

#include<stdio.h>

int main(void)
{
    while(1);
    return 0;

}

这里写图片描述
图6、NI值高(优先级低)的进程CPU占有率低


二、renice命令
2.1、基本介绍

这里写图片描述
图7、renice命令man手册截图(不完整)

  renice命令是与nice关联的一个命令,由re两个字母就知道可以重新调整进程执行的优先级,可以指定群组或者用户名调整优先级等级,并修改隶属于该群组或者用户的所有程序优先级。等级范围为[-20,19]。同样仅系统管理员可以拉高优先级。nice在进程拉起时调整,renice在进程执行时调整。

2.2、使用场景

  一个紧急进程,需要更多CPU资源时,可以拉低之前运行进程的优先级。

2.3、测试实例

这里写图片描述
图8、renice调整优先级

三、其他与进程优先级相关的系统调用

  linux下与进程优先级相关的系统调用,均在/usr/src/linux-headers-4.4.0-31/include/linux,sched.h文件夹内。包括内容有:

nice()、设置进程的优先级
sched_setscheduler()设置进程调度策略
sched_getscheduler()获取进程调度策略 等等


参考资料:
1、linux man手册
2、公众号:Linux中国:《使用nice、cpulimit和cgroup限制cpu占用率》

纠错与建议
邮箱:db_hebut@163.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值