nice(NI)和priority(PR)
注意: 不管如何设置优先级,实时进程对于 CPU 的抢占能力一定大于非实时进程
NICE值:表示静态优先级,反应一个进程“优先级”状态的值,其取值范围是-20至19,一共40个级别,这个值越小,表示进程”优先级”越高,而值越大“优先级”越低
PR值:叠加过 NI 的动态优先级,其值越小,优先级越高
调整优先级
不设置优先级时:
# 执行一条命令时,cpu 占比 95%
$ cat /dev/zero >> /dev/null &
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15098 root 20 0 107972 616 516 R 95.0 0.1 0:16.80 cat
# 执行两条命令时,各自 cpu 占比 47.5%
$ cat /dev/zero >> /dev/null &
$ cat /dev/zero >> /dev/null &
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15098 root 20 0 107972 616 516 R 47.5 0.1 2:45.64 cat
17456 root 20 0 107972 616 516 R 47.5 0.1 0:06.92 cat
# 执行三条命令时,各自 cpu 占比 32%
$ cat /dev/zero >> /dev/null &
$ cat /dev/zero >> /dev/null &
$ cat /dev/zero >> /dev/null &
PID USER PR NI VIRT RES SHR S %CPU %MEM
15098 root 20 0 107972 616 516 R 32.5 0.1
22458 root 20 0 107972 616 516 R 32.5 0.1
17456 root 20 0 107972 616 516 R 32.1 0.1
/dev/null: "黑洞文件". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到
/dev/zero:文件是一个特殊的字符设备文件,当我们使用或者读取它的时候,它会提供无限连续不断的空数据流
当设置优先级时:
$ nice -n 0 cat /dev/zero >> /dev/null &
$ nice -n -10 cat /dev/zero >> /dev/null &
$ nice -n 10 cat /dev/zero >> /dev/null &
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28151 root 10 -10 107972 616 516 R 85.8 0.1 1:40.56 cat
27766 root 20 0 107972 616 516 R 9.2 0.1 0:33.82 cat
27667 root 30 10 107972 616 516 R 1.0 0.1 0:10.37 cat
# 如上cpu使用率最多的是NI值最小的、进程pid为28151,修改它的优先级 后将减少cpu的使用率
$ renice -n 5 28151
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27766 root 20 0 107972 616 516 R 61.8 0.1 1:18.50 cat
28151 root 25 5 107972 616 516 R 21.3 0.1 6:14.36 cat *
27667 root 30 10 107972 616 516 R 6.3 0.1 0:15.16 cat