目录
一、概述
1、简介
Linux进程调度及多任务,每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序
二、优先级范围及特性
1、优先级范围
优先级分为系统和nice优先级,在top中显示的优先级有两个,PR值和nice值。
NI:实际nice值。
PR(NI+20):将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39。
如图优先级范围,黄色部分是nice优先级范围是-20——19这个范围是我们能更改的,黑色部分是系统优先级这个是我们无法更改的,进程的nice优先级要加上20才是进程在系统中的优先级(为了防止我们更改的一些nice优先级超过系统进程的优先级导致系统的错误)。
2、优先级的特性
nice值越大:表示优先级越低,例如+19。
nice值越小:表示优先级越高,例如-20。
三、查看进程的nice级别
命令:ps axo pid ,command,nice
[root@localhost ~]# ps axo pid,command,nice
PID COMMAND NI
1 /usr/lib/systemd/systemd -- 0
2 [kthreadd] 0
4 [kworker/0:0H] -20
5 [kworker/u256:0] 0
6 [ksoftirqd/0] 0
7 [migration/0] -
8 [rcu_bh] 0
9 [rcu_sched] 0
10 [lru-add-drain] -20
11 [watchdog/0] -
13 [kdevtmpfs] 0
14 [netns] -20
15 [khungtaskd] 0
16 [writeback] -20
17 [kintegrityd] -20
18 [bioset] -20
19 [bioset] -20
20 [bioset] -20
四、启动 具有不同nice级别的进程
1、默认情况
启动进程时,通常会继承父进程的nice级别,默认为0。
2、手动启动(以sleep为例)
1)了解sleep命令
命令:sleep 数字 //sleep是睡眠是等待命令后面跟的数字代表等待多少秒。
sleep 数字 & //加上&表示不占用前台让sleep在后台运行。
[root@localhost ~]# sleep 3 //表示要等待3秒才能执行后面的命令
[root@localhost ~]# sleep 6000 & //等待6000秒,在后台运行不占用前台
[1] 2972 //该进程的pid
2)手动启动不同nice
命令:nice -n nice值 命令
[root@localhost ~]# nice -n -5 sleep 6000& //将sleep 6000这个进程的nice优先级设为-5
[2] 3012 //该进程的pid
[root@localhost ~]# nice -n -15 sleep 7000& //将sleep 7000这个进程的nice优先级设为-15
[3] 3019 //该进程的pid
[root@localhost ~]# ps axo pid,command,nice|grep sleep //查看sleep的进程
3011 sleep 60 0
3012 sleep 6000 -5
3019 sleep 7000 -15
五、更改现有进程的nice级别
1、创建一个睡眠示例程序
命令:sleep 8000 &
[root@localhost ~]# sleep 8000&
[4] 3110 //该进程的pid
2、修改nice值
命令:renice nice值 pid
[root@localhost ~]# renice -20 3110 //修改3110进程的nice为-20
3110 (进程 ID) 旧优先级为 0,新优先级为 -20
[root@localhost ~]# top -d 1 -p 3110 //查看3110的动态进程信息
Cpu(s): 6.1 us, 2.0 sy, 0.0 ni, 91.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995676 total, 72252 free, 684976 used, 238448 buff/cache
KiB Swap: 2097148 total, 2070356 free, 26792 used. 153160 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3110 root 0 -20 108052 356 280 S 0.0 0.0 0:00.00 sleep
可以看出3110进程的系统优先级(PR)为0,nice优先级(NI)为-20。PR的值=NI的值+20。
你的点赞是对我的激励!!!
你的评论是对我的勉励!!!
你的收藏是对我的认可!!!
你的关注是我们之间距离的增进!!!