博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 进程管理 进程优先级管理
阅读量:5957 次
发布时间:2019-06-19

本文共 2641 字,大约阅读时间需要 8 分钟。

Linux进程优先级

Linux 是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。但是 CPU 在一个时钟周期内只能运算一条指令(现在的 CPU 采用了多线程、多核心技术,所以在一个时钟周期内可以运算多条指令。 但是同时运算的指令数也远远小于系统中的进程总数),所以需要由进程的优先级来决定哪一个进程的运算指令先执行,哪一个进程的运算指令后运行。

在 Linux 系统中,表示进程优先级的有两个参数:Priority 和 Nice。通过"ps -l"命令可以查看参数对应的值:

[root@localhost ~]# ps -leF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD4 S 0 1 0 0 80 0 - 35738 ep_pol ? 00:00:03 systemd1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd...省略部分输出...

其中,PRI 代表 Priority,NI 代表 Nice。这两个值都表示优先级,数值越小代表该进程越优先被 CPU 处理。不过,PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级。

PRI 和 NI 的关系 :PRI (最终值) = PRI (原始值) +NI

所以修改 NI 的值就可以改变进程的优先级。NI 值越小,进程的 PRI 就会降低,该进程就越优先被 CPU 处理;反之,NI 值越大,进程的 PRI 值就会増加,该进程就越靠后被 CPU 处理。

修改 NI 值时有几个注意事项:

  • NI 范围是 -20~19。
  • 普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
  • 普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
  • 只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。

nice命令:改变进程优先级

nice 命令可以给新执行的命令直接赋予 NI 值,但是不能修改已经存在进程的 NI 值。nice 命令格式如下:

[root@localhost ~] # nice [选项] 命令

选项:

  • -n NI值:给命令赋予 NI 值;

nice命令改变进程优先级

用默认优先级启动并apache服务,查看 PRI值是80,而NI值是0

[root@localhost ~]# service httpd start[root@localhost ~]# ps -le 丨 grep "httd" | grep -v grepF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD1 S 0 2084 1 0 80 0 - 1130 - ? 00:00:00 httpd5 S 2 2085 2084 0 80 0 - 1130 - ? 00:00:00 httpd5 S 2 2086 2084 0 80 0 - 1130 - ? 00:00:00 httpd5 S 2 2087 2084 0 80 0 - 1130 - ? 00:00:00 httpd5 S 2 2088 2084 0 80 0 - 1130 - ? 00:00:00 httpd5 S 2 2089 2084 0 80 0 - 1130 - ? 00:00:00 httpd

停止apache服务,并重启动apache服务,同时修改apache服务进程的NI值为-5

[root@localhost ~]# service httpd stop[root@localhost ~]# nice -n -5 service httpd start[rooteiocdlhost ~]# ps -le | grep "httpd" | grep -v grepF S UID PID PPID C FRI NI ADDR SZ WCHAN TTY TIME CMD1 S 0 2122 1 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2123 2122 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2124 2122 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2125 2122 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2126 2122 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2127 2122 0 75 -5 - 1130 - ? 00:00:00 httpd

httpd进程的PRI值变为了75,而NI值为-5

renice 命令:改变进程优先级

renice 命令可以修改已经存在进程的 NI 值。renice 命令格式如下:

[root@localhost ~] # renice [优先级] PID

renice 命令改变进程优先级

[root@localhost ~]# renice -10 21252125: old priority -5, new priority -10[root@localhost ~]# ps -le | grep "httpd" | grep -v grep1 S 0 2122 1 0 75 -5 - 113.0 - ? 00:00:00 httpd5 S 2 2123 2122 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2124 2122 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2125 2122 0 70 -10 - 1130 - ? 00:00:00 httpd5 S 2 2126 2122 0 75 -5 - 1130 - ? 00:00:00 httpd5 S 2 2.127 2122 0 75 -5 - 1130 - ? 00:00:00 httpd

PID为2125的进程的PRI值为70,而NI值为-10

 

转载于:https://www.cnblogs.com/lizhouwei/p/10122680.html

你可能感兴趣的文章
encodeURIcomponent编码和ASP.NET之间编码转换
查看>>
实验三 区域四连通填充算法
查看>>
关闭selinux服务
查看>>
centos中安装、升级git
查看>>
单元测试基本路径覆盖法(转)
查看>>
十三、栅栏CyclicBarrier
查看>>
简单搭配(Collocation)隐私声明
查看>>
2013编程之美资格赛【传话游戏】
查看>>
关于Dictionary的线程安全问题
查看>>
在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析
查看>>
CentOS6.5+mysql5.1源码安装过程
查看>>
Js 笔记
查看>>
C++: find()函数的注意事项
查看>>
js的事件学习笔记
查看>>
leetcode 【 Add Two Numbers 】 python 实现
查看>>
Android接收系统广播
查看>>
将网络中的图片存为NSData并保存到sqlite的BLOB字段中
查看>>
Cocos2d-js-v3.2 在 mac 上配置环境以及编译到 Andorid 的注意事项(转)
查看>>
iOS用三种途径实现一方法有多个返回值
查看>>
python--class test
查看>>