深入 Linux 的进程优先级(3)

它们的主要区别就是通过优先级来区分的。所有优先级值在0-99范围内的,都是实时进程,所以这个优先级范围也可以叫做实时进程优先级,而100-139范围内的是非实时进程。在系统中可以使用chrt命令来查看、设置一个进程的实时优先级状态。我们可以先来看一下chrt命令的使用:

[root@zorrozou-pc0 zorro]# chrt

Showor change the real-time scheduling attributes of a process.

Set policy:

chrt [options]<priority><command>[<arg>...]

chrt [options]-p <priority><pid>

Get policy:

chrt [options]-p <pid>

Policy options:

-b,--batch set policy to SCHED_OTHER

-f,--fifo set policy to SCHED_FIFO

-i,--idle set policy to SCHED_IDLE

-o,--other set policy to SCHED_OTHER

-r,--rr set policy to SCHED_RR (default)

Scheduling flag:

-R,--reset-on-fork set SCHED_RESET_ON_FORK for FIFO or RR

Other options:

-a,--all-tasks operate on all the tasks (threads)for a given pid

-m,--max show min and max valid priorities

-p,--pid operate on existing given pid

-v,--verbose display status information

-h,--help display this help andexit

-V,--version output version information andexit

Formore details see chrt(1).

我们先来关注显示出的Policy options部分,会发现系统给个种进程提供了5种调度策略。但是这里并没有说明的是,这五种调度策略是分别给两种进程用的,对于实时进程可以用的调度策略是:SCHED_FIFO、SCHED_RR,而对于非实时进程则是:SCHED_OTHER、SCHED_OTHER、SCHED_IDLE。

系统的整体优先级策略是:如果系统中存在需要执行的实时进程,则优先执行实时进程。直到实时进程退出或者主动让出CPU时,才会调度执行非实时进程。实时进程可以指定的优先级范围为1-99,将一个要执行的程序以实时方式执行的方法为:

[root@zorrozou-pc0 zorro]# chrt 10bash

[root@zorrozou-pc0 zorro]# chrt -p $$

pid 14840's current scheduling policy: SCHED_RR

pid 14840's current scheduling priority:10

可以看到,新打开的bash已经是实时进程,默认调度策略为SCHED_RR,优先级为10。如果想修改调度策略,就加个参数:

[root@zorrozou-pc0 zorro]# chrt -f 10bash

[root@zorrozou-pc0 zorro]# chrt -p $$

pid 14843's current scheduling policy: SCHED_FIFO

pid 14843's current scheduling priority:10

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15273.html