15.04使用哪种调度算法?可以更改吗?


12

想知道在15.04,分时还是实时中采用了什么调度机制,我很确定它的FIFO,Round Robin,SJF?

PS:Linux的新手

Answers:


14

流程调度器

进程调度程序处理用于执行进程的CPU资源分配,旨在最大程度地提高总体CPU利用率,同时还最大化交互性能。

从内核2.6.23(与Hardy 8.04 LTS开始)开始,基于“旋转楼梯截止日期”的完全公平调度程序(CFS)来自kernel.org的概述

CFS代表“完全公平的调度程序”,是由Ingo Molnar实现并在Linux 2.6.23中合并的新的“桌面”进程调度程序。它替代了以前的常规调度程序的SCHED_OTHER交互代码。

CFS的80%的设计可以用一句话概括:CFS基本上是在真实硬件上建模“理想,精确的多任务CPU”。

“理想的多任务CPU”是一种(不存在的:-) CPU,具有100%的物理功率,并且可以以精确的相等速度并行运行每个任务,并且每个运行速度为1 / nr_running。例如:如果有2个任务在运行,则每个任务以50%的物理功率运行-即实际上是并行的。

在实际的硬件上,我们一次只能运行一个任务,因此我们必须引入“虚拟运行时”的概念。任务的虚拟运行时指定了何时下一个时间片将在上述理想的多任务CPU上开始执行。实际上,任务的虚拟运行时是将其实际运行时标准化为正在运行的任务总数。


  • 内核2.4:O(n)调度程序 ; 没有带有该内核的Ubuntu版本。
  • 内核2.6.0至2.6.22:O(1)调度程序。Warty 4.10(第1版)使用的是2.6.8。Gutsy 7.10是使用2.6.22或更低版本的最后一个。

I / O调度程序

输入/输出调度是操作系统用来决定将块I / O操作提交到存储卷的顺序的方法。

Phoronix有关调度的文章:Linux 3.16:截止日期I / O调度程序通常以SSD为主。


您可以通过在grub中将选项“ elevator =”附加到“ GRUB_CMDLINE_LINUX_DEFAULT =”来更改I / O调度程序。

这样做可能会更容易(假设sda和截止日期):

  • 要显示可用调度程序的列表:

    cat /sys/block/sda/queue/scheduler
    
  • 并更改调度程序(可以即时进行):

    echo deadline > /sys/block/sda/queue/scheduler
    

从kernel / git / torvalds / linux.git


您可以检查正在使用什么(假设sda为primairy):

cat /sys/block/sda/queue/scheduler

这是否意味着默认情况下在Ubuntu 15.04中使用的调度机制是分时算法CFS?还是它带有OTHER,RR和FIFO?我有我的信息在这里:manpages.ubuntu.com/manpages/hardy/man2/...
leslie_lyj

您正在查看Hardy的手册页。那有点旧;)默认值为'cfq'。请参阅添加的指向kernel / git / torvalds / linux.git的链接。
Rinzwind

1
...这在磁盘调度程序和cpu调度程序之间不是很混乱吗?它们是完全不同的野兽。CPU调度程序决定下一步运行哪个进程,磁盘调度程序决定如何访问磁盘中的数据块。参见示例wiki.archlinux.org/index.php/Maximizing_performance
Rmano

好吧,不是真的,这个问题的重点是弄清正在运行Ubuntu 15.04的进程调度机制。(对不起,如果我不清楚的话)
leslie_lyj 2015年

2
@Rmano我以为这是供参考,而不是专门用于实际使用。但我
内在
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.