linux 系统调度器(四) -- 利用 chrt 命令查询与修改进程调度器

2022-07-17 20:59:09   最后更新: 2022-07-17 20:59:09   访问数量:481




 

上一篇文章中,我们介绍了 linux 调度器的演进:

 

linux 进程调度器(下) -- 调度器演进

 

在上一篇文章中,我们知道,到 Linux 2.6.23 版本后,linux 实际上维护了一组调度器来实现不同的调度需要,它们被分为了四层:

 

  1. DL 调度器:采用 sched_deadline 策略;
  2. RT 调度器:采用 sched_rr 和 sched_fifo 策略;
  3. CFS 调度器:采用 sched_normal 和 sched_batch 策略;
  4. IDEL 调度器:采用 sched_idle 策略。

 

那么,我们怎么才能让我们的进程被不同层的调度器调度呢?那就需要使用 linux 提供的十分有用的工具 -- chrt 来实现了,本文我们就来介绍一下这个命令的使用。

 

 

chrt 命令是 linux 提供的一个底层应用指令,它可以在运行时设置进程的某些属性,还可以更改调度策略和调度优先级。

 

它的使用方式是:

 

$ chrt [options] -p [priority] pid

 

看起来用法非常简单,chrt 最简单的使用方法是查询,这个场景下不需要传递 options 和 priority:

 

 

 

可以看到,该进程的 priority 是 0,调度策略是 SCHED_OTHER,也就是默认策略,由 CFS 调度器基于 SCHED_NORMAL 策略调度。

 

 

通过 chrt --help 命令,就可以看到全部参数的说明:

 

 

 

实际上,这套说明已经是十分清晰了。

 

 

chrt 的 options 有五种选择,分别对应了上一篇文章中介绍的四层调度器的五个策略:

 

  1. SCHED_DEADLINE:仅供系统使用的 DL 调度器使用的策略,用户不能选择;
  2. SCHED_FIFO:使用 RT 调度器的 sched_fifo 策略,先入先出任务队列;
  3. SCHED_RR:使用 RT 调度器的 sched_rr 策略,采用轮询机制实现调度算法;
  4. SCHED_OTHER:使用 CFS 调度器的 sched_other 策略,使用默认的 time_sharing 计划算法;
  5. SCHED_BATCH:使用 CFS 调度器的 sched_batch 策略,采用批处理算法批量提交任务和执行;
  6. SCHED_IDLE:使用 IDLE 调度器的 sched_idle 策略。

 

 

通过 chrt -m 命令,可以查看 chrt 不同的调度策略下,用户可选的优先级范围:

 

 

 

 

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤

 






os      linux      调度器      scheduler      chrt     


京ICP备2021035038号