📜  预期调度

📅  最后修改于: 2021-08-27 17:38:38             🧑  作者: Mango

预期调度硬盘中输入/输出调度的一种,它通过预测不久的将来的同步读取操作来提高硬盘的吞吐量并提高其效率。

历史 :
所有现有的磁盘调度算法都是寻求减少算法,它们会按照“先来先服务(FCFS)”的原则跳到队列中等待的下一个请求,因为它不会使磁盘保持空闲状态。仍处于计算状态的前一个请求会在几毫秒后立即生成下一个请求,但是到那时,磁盘已经在执行另一个不可抢占的请求。因此,在不同操作之间进行切换时,搜索必须进行很多移动,从而降低了传输速率和效率。

在职的 :
提高操作系统的性能是主要目标,这要求提高正在访问的磁盘驱动器的性能以进行内存管理。为了提高性能,建议使用两种方法:

  1. 最小化寻道操作–
    可以以减少搜索操作数量以及它们之间的距离的方式来订购请求。这可以通过将所有附近的请求分组并一起执行来完成。
  2. 优先于读取操作而不是写入操作–
    写操作不需要先完成特定操作,因此可以随时拉出,而读操作一次生成一次,比写操作需要更多时间。当前操作完成之前,不执行读操作。

但是,这两种方法本质上是矛盾的,因为它们不能同时遵循。例如,如果我们试图通过对所有写操作进行一次分组来最大程度地减少查找操作,那么我们的读操作将被延迟,因为它们位于队列的后面。

另一方面,如果我们试图对读取操作进行优先级排序,那么将查找操作最小化是不可行的,因为直到一个读取操作完成后才会生成另一个读取操作,因此无法对操作进行分组,并且它将自动切换到所请求的任何写入操作。

有时,这会导致磁盘欺骗性空闲,在这种情况下,一个读操作已完成处理,并且自动搜索切换到写操作,并且知道没有写操作在等待,因此必须返回到间隔一段时间后请求的另一个读操作。切换发生了。这降低了操作系统的效率,并且也延迟了同步读取操作。

预期调度是“欺骗性空闲”问题的解决方案,它是一种在读取操作后暂停较短时间(几毫秒)的方法,以预测可能在当前操作之后立即进行调度的任何同步读取操作,并立即对其进行维修。计时器关闭后,它将切换以执行写操作。

应用范围:

  1. 它用在Apache Web Server中,可将吞吐量提高70%以上,因为它显着提高了磁盘及其管理的利用率。
  2. 它还在Andrew文件系统Benchmark中使用,该Benchmark用于捕获软件开发中的文件服务器工作负载,并将扫描过程的执行时间减少了54%。

好处 :

  1. 它克服了“欺骗性闲置”的情况,并在相当大的程度上提高了磁盘的性能。
  2. 它不需要预取操作,因为在大多数情况下,应用程序都不知道将来的事件。另外,存储这种信息的间接费用会增加成本。这可以通过在切换搜索之前等待片刻来克服。

缺点:

  1. 等待时间必然会增加,并且与此相关的成本也会增加。在某些情况下,即使没有安排连续的读取操作(可能会增加延迟),它也可能无法做出最佳决策并等待。
  2. 与之相关的实现问题包括计算请求的定位时间以及制定廉价的超时机制。