linux使用什么命令设置进程的优先级,Linux调整进程优先级之nice命令

1. 了解Linux进程调度

进程调度是Linux中非常重要的概念。Linux内核有一套高效复杂的调度机制,能使效率极大化,但有时为了实现特定的要求,需要一定的人工干预。比如如果你想高清电影播放器获取更多的CPU和内存资源,你可以把播放器的优先值调高。而这个优先级,就是指上述说的nice值。这里的“nice”是指“niceness”,即友善度、谦让度。注意的是,负数的优先级优先于正数的优先级,即nice为-1的进程比nice为1的进程更优先获取资源。而绝对值越大,效果越明显。nice值的范围是-20~19。-20最能抢占资源,19最友善。

Linux nice命令用于调整进程优先级以此获得系统不同的资源。当nice命令中没有给出具体的niceness值时,默认为10。如nice vi设置vi进程的niceness为10。一般的程序以0、10、20为默认值的居多。

7335dd8c6a71fd357457f0833d2e64f1.png

当nice没有选项时,输出值表示系统进程缺省的niceness值,一般为0。

2. 使用nice默认值

以nice默认值启动vi,并编辑test.txt

[root@zcwyou ~]# nice vi test.txt

检查,18747是本次vi的ps进程号,使用ps -ef |grep vi查询

[root@zcwyou ~]# top -p 18747

top – 15:37:57 up 1 day, 1:27, 2 users, load average: 0.04, 0.02, 0.00

Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

KiB Mem : 4040576 total, 3262100 free, 200572 used, 577904 buff/cache

KiB Swap: 4194300 total, 4194300 free, 0 used. 3536068 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

18747 root 30 10 126336 3536 3124 S 0.0 0.1 0:00.00 vi

最后一行可以看出,vi命令的nice值为10。

775b473eb2ed0311a047e30a3b3c4e89.png

3. 指定nice值执行某任务

[root@zcwyou ~]# nice -n 8 vi test.txt

检查:19153是本次vi的ps进程号,使用ps -ef |grep vi查询

[root@zcwyou ~]# top -p 19153

top – 15:40:58 up 1 day, 1:30, 2 users, load average: 0.00, 0.00, 0.00

Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie

%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

KiB Mem : 4040576 total, 3264496 free, 198068 used, 578012 buff/cache

KiB Swap: 4194300 total, 4194300 free, 0 used. 3538640 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

19153 root 28 8 126336 3548 3136 S 0.0 0.1 0:00.00 vi

可以看出,nice已经调整为8了。

注意:如果设置的niceness值为负,那么必须要有管理员权限。

或者使用--adjustment选项

--adjustment=N 选项

--adjustment选项和-n选项的效果是一样的,在等号右边设置对应的niceness值即可。

例如:

[root@zcwyou ~]# nice --adjustment=8 vi test.txt

368c296a85243f694e33d3e8ecdd4247.png

4. 理解PRI与NI的关系

[root@zcwyou ~]# ps -l

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

4 S 0 18760 18753 0 80 0 – 28961 do_wai pts/0 00:00:00 bash

0 R 0 19353 18760 0 80 0 – 38303 – pts/0 00:00:00 ps

请看以输出,NI列即表示进程的niceness值。ps进程对应的NI值正好为刚设置的0。而PRI表示进程当前的总优先级,值越小表示优先级越高,由进程默认的PRI加上NI得到,即PRI(new) = PRI(old) + NI。由上程序,ps进程默认的PRI是80,所以加上值为0的NI后,vi进程的PRI为80。

所以,需要注意的是,NI即niceness的值只是进程优先级的一部分,不能完全决定进程的优先级,但niceness值的绝对值越大,效果越显著。

5. 其他选项

--help 显示帮助信息

--version 显示版本信息

6. renice命令

renice,顾名思义,用于重新调整正在运行的进程niceness值。

6.1 renice语法

renice [优先等级][-g…][-p…][-u …]

6.2 将PID为19153的进程的niceness设为-10

[root@zcwyou ~]# renice -10 -p 19153

19153 (进程 ID) 旧优先级为 8,新优先级为 -10

6.3 将属于用户ocr的进程的niceness设为5

[root@zcwyou ~]# renice 5 -u ocr

6.4 将属于zcwyou组的程序的niceness设为10

[root@zcwyou ~]# renice 10 -g zcwyou

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值