Linux 调度策略

admin 2023年7月31日10:19:01评论12 views字数 2091阅读6分58秒阅读模式

Linux 调度策略的类型大致可以分为 TSS (分时系统)和实时系统这两种。一方面.一般的进程是通过分时运行的。也就是说.使用 CPU 的时间达到分配给进程的时间(时间片)时,就会切换到其他进程。这种分时运行的调度策略称为 TSS 。另一方面,在实时制约较严格且要求保证实时的处理中,就需要指定静态的执行优先级.并严格按照执行优先级进行调度。对这种对应答性有要求的进程,可以使用实时调度策略。另外,与 TSS 调度策略的进程相比. CPU将优先分配给使用用实时调度策略的进程。


 

在 Linux 中,进程的静态优先级为 0-99 。TSS 调度策略的优先级为 O ,实时调度策略的优先级可以指定的范圈为 l-99。


Linux 2.6.23 以前一直采用的 O ( l )调度程序,还会在 TSS 调度策略中加添动态优先级.长时间持续使用 CpU 的进程,其调度的动态优先级会逐渐降低。Linux的进程调度程序是按照优先级来分配 CPU 的.因此长时间占用 CPU 的进程优先级与其他进程相比就相对较低。与之相对的是,频繁与用户进行交流的shell等对话进程由于 CPU 使用时间短,其调度的优先级变高.更容昌分配到 CPU 。因此.为等待用户输入而立即腾出 CPU 的比shell进程的优先级变得比其他进程高.用户的应答性就得到提高。在 Linux 2 . 6 . 23 导入的 CFS 调度程序中.没有之前的 0 ( l ) 调度程序所进行的经验性优先级变化. CFS 通过称为公平的 CPU 时间分配的结构来运行。


调度策略 RHEL6 ( Linux 2.6.32 )中定义下列调度策略。


SCHED_OTHER


SCHED_FIFO


SCHED_RR


SCHED_BATCH


SCHED_IDLE


下面将分别对各调度策略进行介绍。


SCHED OTHER


这是 Linux 的标准调度策略,也是所谓 TSS 调度策略。


在 RHEL5 等 Linux 2 . 6 . 23之前的内核所使用的以优先级为基础的O(1)调度程序中,还加入了经脸性的判断,优先为会话进程赋予执行权。TSS的时间片由优先级决定.


在 RHEL6 等 Linux 2 . 6 . 23之后的 CFS 调度器中.会公平地为所有 TSS 策略的进程分配 CPU 时间。其时间片是动态决定的.


SCHED FIFO


这是实时调度策略.即具有动态优先级的调度策略。Linux 内核中能够为实时调度策略的进程指定的优先级为 1-99。使用了 SCHED _ FIFO 调度策略的进程,除了等待 I/O 完成时休眠、自发休眠或优先级更高的实时进程获得优先权以外,不会释放执行权。


使用 SCHEO _ FIFO 的实时调度策略时,需要注意的是.它的进程不会自动释放CPU . 也就是说执行权不会转移到其他进程。例如.实时调度该略的进程陷入无限循环时.其他所有优先级较低的进程永远不会被赋予执行权.此时系统就会死机。


SCHED_RR


这也是实时调度策略. RR 是轮询的缩写,与 SCHED_FIFO 不同的是.它具有时间片。时间片使用完时.执行权将转移到其他进程。在 2.6 .23 以前导人的 O(1)调度程序中,时间片是由优先级决定的。


引入CFS时SCHED _ RR的调度策略也进行了修改,时间片变为固定值 (100毫秒)。


SCHED_BATCH


  指定这个调度策略的进程不是会话型,不会根据休眠时间更改优先级。例如,备份处理等需要进行较大文件或大量文件存取的进程,是通过磁盘I/O来中止的。在 TSS 调度策略中,因为这个休眠,正在进行备份处理的进程优先级提高,需要应答性的shell等的优先级相对降低。这就会导致系统的应答性降低。


在 RHEL5的 O(1)调度程序中.使用了这个调度策略的进程被识别为休眼时间为0的 CPU bound进程。因此,优先级必然会变成比会话型shell进程低。


对非会话型的进程(即所谓的补丁处理)使用这个调度策略,就可以使会话型进程的优先级保持相对较高,并确保应答性.


在 Linux 2 . 6 . 23 导入的 CFS 中,对进行补丁处理的进程改变了处理的方法,优先级不会因休眠时间而发生变化。在导入 CFS 的 RHEL6 中. SCHEO _ BATCH 和 SCHEO _ OTHER 几乎没有区别.因此可以不使用。


 

SCHED_IDLE


这是由 CFS 导人的新等级。CPU 空闲时,即 SCHEO _ IDLE 等级以外处于可执行状态的进程消失时,将被赋予执行权。也就是它将成为优先级最低的进程。


特殊标志:SCHED_RESET_0N_FORK


为了限制实时调度策略的进程运行,而为调度策略添加了标志flag,设置了标志flag的实时调度策略进程.在执行fork时.新生成的子进程就成为SCHED_OTHER策略的进程。


 

Chrt命令


用户使用chrt命令可以简单更改调度策略。


chrt的用法参照:


https://www.linuxcool.com/chrt

————————————————

版权声明:本文为CSDN博主「luopandeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/luopandeng/article/details/114329765


原文始发于微信公众号(哆啦安全):Linux 调度策略

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月31日10:19:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux 调度策略http://cn-sec.com/archives/787172.html

发表评论

匿名网友 填写信息