📜  操作系统中的最后期限调度程序

📅  最后修改于: 2021-08-25 17:23:31             🧑  作者: Mango

Deadline Scheduler是Linux内核的n个I / O调度程序,可确保请求的启动服务时间。截止时间调度程序对所有I / O操作都施加了截止时间,以防止出现通缉请求。维护两个截止读取和写入队列(基本上按截止日期排序)。对于每个新请求,调度程序都会选择将为其服务的队列。读队列比写队列具有更高的优先级,因为在读操作期间,进程通常会被阻塞。

现在,截止期限调度程序检查截止期限队列中的第一个请求是否已过期,然后,将处理来自已排序队列的一批请求。调度程序在排序后的队列中紧随所选请求之后处理一批请求。

默认情况下,读取请求的到期时间为500毫秒,写入请求的到期时间为5秒。

让我们通过一个场景来理解它:
假设有三个流程P1,P2和P3,它们分别具有截止日期。因此,最后期限调度程序指出,如果P1在时间t发出请求。它无法在一定时间间隔内再次发出请求。

截止日期I / O调度程序可调参数–

笔记 –
在运行时可以更改内核参数的时间称为可调参数。使用sysctl命令查看静态和可调内核参数。

  • fifo_batch(整数):

    此可调参数确定按批次增加的顺序来发出单批读取或写入请求的数量。

  • read_expire(integer):

    此可调参数确定应为读取请求提供服务的时间(以毫秒为单位)。为I / O调度程序中的读取请求分配了最后期限,即当前时间+读取到期值(毫秒)。

  • write_expire(integer):
    此可调参数确定应满足写请求的时间(以毫秒为单位)。它与read_expire相同,但用于写操作。
  • writes_starved(integer):
    此可调参数控制在处理单个写入批处理之前要处理的读取批处理的数量。饥饿的写入值越高,读取的优先级越高。
  • front_merges(布尔整数):
    当我们在队列的前面安装一个请求的前合并完成和后合并相反于前合并。由于文件的布局方式通常,后合并比前合并更为常见。在此,I / O调度程序将较小的请求合并到已布置的操作中。如果将前合并可调参数设置为零,则会禁用前合并的功能。