上一篇文章中,我们介绍了 linux 调度器的演进:
在上一篇文章中,我们知道,到 Linux 2.6.23 版本后,linux 实际上维护了一组调度器来实现不同的调度需要,它们被分为了四层:
那么,我们怎么才能让我们的进程被不同层的调度器调度呢?那就需要使用 linux 提供的十分有用的工具 -- chrt 来实现了,本文我们就来介绍一下这个命令的使用。
chrt 命令是 linux 提供的一个底层应用指令,它可以在运行时设置进程的某些属性,还可以更改调度策略和调度优先级。
它的使用方式是:
$ chrt [options] -p [priority] pid
看起来用法非常简单,chrt 最简单的使用方法是查询,这个场景下不需要传递 options 和 priority:
可以看到,该进程的 priority 是 0,调度策略是 SCHED_OTHER,也就是默认策略,由 CFS 调度器基于 SCHED_NORMAL 策略调度。
通过 chrt --help
命令,就可以看到全部参数的说明:
实际上,这套说明已经是十分清晰了。
chrt 的 options 有五种选择,分别对应了上一篇文章中介绍的四层调度器的五个策略:
通过 chrt -m
命令,可以查看 chrt 不同的调度策略下,用户可选的优先级范围:
priority 就是能够在一定程度上影响调度优先级的 nice 值,尽管只有 SCHED_FIFO 和 SCHED_RR 两个调度器可以让我们去指定,因为 RT 调度器是采用传统的 O(1) 调度算法来实现的基于时间片调度的策略的。