本文共 1676 字,大约阅读时间需要 5 分钟。
一、什么是进程优先级?
每个进程都会有相应的优先级,优先级决定程序何时运行。优先级值越低,优先级就越高,就越快被调度程序选中。 另外,优先级还影响分配给进程的时间片长短。重要的进程,应该分配多一些cpu时间片,好让其尽快完成任务。所有的进程都会有机会运行,但高优先级重要的进程会获取更多的cpu执行时间。二、优先级取值范围
在linux系统中,进程优先级的取值范围是0-139,而这个值又是由另外两个值组成的,一个是代表实时进程(realtime)优先级范围是[0,99],另外一个是代表非实时进程,取值范围是[100,139]。 所以,Linux进程实际上实现了140个优先级范围,取值范围是从0-139,这个值越小,优先级越高。三、PRI值和NICE值
PRI值:
PRI即进程的优先级,此值越小进程的优先级别越高。PRI值越小越快被cpu调度程序执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。由此看出,PRI是根据NICE排序的,规则是NICE越小PRI值越小,其优先级会变高。NICE值:
它是反应一个进程“优先级”状态的值,其取值范围是-20至19,一共40个级别。它对应于静态优先级的[100,139]这个区间,进程启动后默认的nice值为0,则其对应的优先级为120。 NICE值虽然不是priority,但是它确实可以影响进程的优先级。ps和top命令:
查看PRI和NICE值,它们代表什么意思呢? ps命令:[root@centos7 ~]#ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 32063 ep_pol 14:35 ? 00:00:02 /usr/lib/s 1 S root 2 0 0 80 0 - 0 kthrea 14:35 ? 00:00:00 [kthreadd] 1 S root 3 2 0 80 0 - 0 smpboo 14:35 ? 00:00:01 [ksoftirqd 1 S root 5 2 0 60 -20 - 0 worker 14:35 ? 00:00:00 [kworker/0 1 S root 6 2 0 80 0 - 0 worker 14:35 ? 00:00:00 [kworker/u ......top命令:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128252 6804 4176 S 0.0 0.3 0:02.79 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:01.63 ksoftirqd/0 ......总结:
top中的PR表示优先级,但是跟上述的值不是直接对等的。在top中,实时优先级的[0,99]没有具体的表示。静态优先级和top中的优先级关系为top_PR = static_Priority - 100也就是说,top中的PR取值为[0,39],对应优先级[100,139]。 ps命令中,ps_PRI = static_priority - 40,PRI的取值范围为[-40,99],也就是说,ps中PRI值为80等价于nice值为0,等价于静态优先级的120。转载于:https://blog.51cto.com/13932385/2374758