进程的优先级[进阶]
1.什么优先级
优先级指的是优先享受资源,比如排队买票时,军人优先、老人优先。等等
2.为什么要有系统优先级
举个例子: 海底捞火锅正常情况下响应就特别快,那么当节假日来临时人员突增则会导致处理请求特别慢,那么假设我是海底捞VIP客户(最高优先级),无论门店多么繁忙,我都不用排队,海底捞人员会直接服务于我,满足我的需求。至于没有VIP的人员(较低优先级)则进入排队等待状态。(PS: 至于等多久,那.....)
3.系统中如何给进程配置优先级?
在启动进程时,为不同的进程使用不同的调度策略。
nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。
- 使用top或ps命令查看进程的优先级
#1.使用top可以查看nice优先级。 NI: 实际nice级别,默认是0。 PR: 显示nice值,-20映射到0,+19映射到39
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1083 root 20 0 298628 2808 1544 S 0.3 0.1 2:49.28 vmtoolsd
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
#2.使用ps查看进程优先级
[root@m01 ~]# ps axo command,nice |grep sshd|grep -v grep
/usr/sbin/sshd -D 0
sshd: root@pts/2 0
- nice指定程序的优先级。语法格式 nice -n 优先级数字 进程名称
1.开启vim并且指定程序优先级为-5
[root@m01 ~]# nice -n -5 vim &
[1] 98417
2.查看该进程的优先级情况
[root@m01 ~]# ps axo pid,command,nice |grep 98417
98417 vim -5
- renice命令修改一个正在运行的进程优先级。语法格式 renice -n 优先级数字 进程pid
#1.查看sshd进程当前的优先级状态
[root@m01 ~]# ps axo pid,command,nice |grep 折叠shd
70840 sshd: root@pts/2 0
98002 /usr/sbin/sshd -D 0
#2.调整sshd主进程的优先级
[root@m01 ~]# renice -n -20 98002
98002 (process ID) old priority 0, new priority -20
#3.调整之后记得退出终端
[root@m01 ~]# ps axo pid,command,nice |grep 折叠shd
70840 sshd: root@pts/2 0
98002 /usr/sbin/sshd -D -20
[root@m01 ~]# exit
#4.当再次登陆sshd服务,会由主进程fork子进程(那么子进程会继承主进程的优先级)
[root@m01 ~]# ps axo pid,command,nice |grep 折叠shd
98002 /usr/sbin/sshd -D -20
98122 sshd: root@pts/0 -20
生产案例、Linux出现假死,怎么办,又如何通过nice解决?