必威体育Betway必威体育官网
当前位置:首页 > IT技术

Linux nice及renice命令使用

时间:2019-09-09 11:11:07来源:IT技术作者:seo实验室小编阅读:84次「手机版」
 

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占用率》

纠错与建议

邮箱[email protected]


相关阅读

汇总好玩的cmd命令大全

前言: CMD是什么?在windows环境下,命令行程序为cmd.exe。是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序。类

linux之通过strings命令查看so里面是否包含****字符串

1 问题 比如我们在一个C文件里面或者C++文件里面添加了日志打印字符串***,但是实际上没打印,我们会怀疑这个打印字符串有没有加到s

Oracle RAC中srvctl命令详细说明

SRVCTL Add添加数据库或实例的配置信息。在增加实例中,与-i一起指定的名字应该与INSTANCE_NAME 和 ORACLE_SID参数匹配。srvctl ad

windows下的cd命令

cd命令:change directory,改变目录 首先进入cmdwin+R,输入cmd, 点击enter cd ..跳转到上一级目录 cd / 跳转到根目录 cd path 跳转

Lunix相关命令

常用命令:      clear -- 清屏 who/w -- 查看有几个用户登录系统       last -- 查看最近有多少用户登录系统 who am i --

分享到:

栏目导航

推荐阅读

热门阅读