Linux 中的 I/O 调度算法解析及性能比较

本文详细介绍了 Linux 操作系统中的不同I/O调度算法,如Noop、CFQ、Deadline、BFQ和预期I/O调度程序,并对它们的性能进行了比较。了解这些调度算法有助于提高系统的磁盘访问效率和应用程序响应时间。

首先,让我们回顾一下操作系统中的调度是什么。我们可以区分操作系统中的两种类型的调度程序:进程调度程序和I/O调度程序。我们对后者感兴趣。I/O 调度程序是块设备和低级驱动程序之间的一层。它旨在提供对磁盘设备的最佳进程访问。尽管调度程序的工作表面上很简单,但由于磁盘操作是一个非常慢的操作并且在磁盘上搜索必要的扇区不会很快发生,因此这种简单性被消除了。同时,进程正在等待轮流访问磁盘。I/O 调度程序应该能够按照优先级提供信息,并确保应用程序在一定时间内接收到数据。

在早期版本的 Linux 中,只有一个 I/O 调度程序:Linus Elevator。太原始了,因此在2.6内核中,又出现了三个调度器。让我们详细考虑调度程序。

Noop

Noop是最简单的调度程序。它简单地将所有请求放入 FIFO 队列中并执行它们。请注意,无论 I/O 请求的类型如何,系统中存在的所有进程都会发生这种情况。此外,noop 能够合并一些请求。类似目的的读/写请求被组合起来,以减少磁盘操作次数并增加系统调用的长度。

CFQ

CFQ 作为网络调度程序 SFQ(随机公平队列)的扩展出现。CFQ 与 Noop 的不同之处在于,它为每个进程都有单独的队列。当队列不为空或指定的时间片未过期时,调度程序会循环服务每个进程(最后一个条件与进程调度程序类似)。在每个队列的范围内,读操作的优先级高于写操作。 

Deadline

Deadline 是标准调度程序。从其名称可以明显看出,Deadline 尝试在指定时间执行请求。Deadline 支持两个特殊的截止时间队列(按过期时间排序)和两个用于读写操作的排序队列(按扇区编号排序)。截止日期队列旨在防止请求匮乏。Deadline 批量处理请求。批次是按 LBA 递增顺序排列的 I/O 操作序列。读操作比写操作具有更高的优先级,就像在 CFQ 中一样,因为进程通常会阻塞读操作。因此,读操作的过期时间为 500 毫秒,而写操作的过期时间为 5 秒。在下一个请求之前,Deadline 必须选择一个队列以供使用(读或写)。该算法更适合读操作较多的系统,如数据库、Web服务器等。

BFQ

BFQ(Budget Fair Queueing)是一种基于CFQ的比例份额磁盘调度算法。BFQ将基于时间间隔的Round Robin调度算法进行了转换,使其更加关注磁盘扇区数。每个任务都有一个专用的部门预算,该预算可能会根据任务的行为而有所不同。BFQ 保证磁盘流量会在任务之间更加诚实地分配,并将查询磁盘数据的复杂度降低到 O(1)。

预期 I/O 调度程序

预期 I/O 调度程序尝试猜测后续请求将在磁盘的哪些块上执行,并尝试聚合和/或重新排序请求,从而改进局部性并减少磁盘寻道操作。该算法在当前读操作看似完成时为下一次读操作做好准备。

对读取操作有效的调度算法(例如 Deadline 或 Anticipatory)可以为 Web 服务器或数据库带来性能提升。您可以通过调整调度程序参数来充分加快 Apache Web 服务器的速度。

您可以通过此命令检查可用调度程序的列表(当前调度程序分配在方括号中):

$ cat /sys/block/sda/queue/scheduler

我的 Linux 机器上的输出是 noop [deadline] cfq .

有很多不错的工具可以比较调度算法的性能。我用于 hdparm 写作基准。hdparm 包含默认基准(但您可以使用自己的基准)。的用法hdparm 是:

$ apt-get install hdparm
$ hdparm -tT /dev/sda

为了比较算法的性能,我们必须将调度程序从默认更改为任意。您可以使用下一个命令来执行此操作:

$ echo {SCHEDULER_NAME} > /sys/block/sda/queue/scheduler

hdparm 提供定时缓存读取和定时缓冲磁盘读取。当然,您可以使用其他方法进行测试,例如 dd 命令或bonnie++。


文章来源地址https://www.toymoban.com/diary/system/427.html

到此这篇关于Linux 中的 I/O 调度算法解析及性能比较的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/system/427.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
Rust 与 Python——这是未来的语言吗?
上一篇 2023年10月19日 09:29
在Linux上简单安装Swift的步骤
下一篇 2023年10月19日 09:54

相关文章

  • 性能比较 - Spring Boot 应用程序中的线程池与虚拟线程 (Project Loom)

            本文比较了 Spring Boot 应用程序中的不同请求处理方法:ThreadPool、WebFlux、协程和虚拟线程 (Project Loom)。         在本文中,我们将简要描述并粗略比较可在 Spring Boot 应用程序中使用的各种请求处理方法的性能。         高效的请求处理在开发高性能后端应

    2024年02月12日
    浏览(38)
  • 操作系统调度算法--高响应比优先调度算法解析

      高响应比优先调度算法(Highest Response Radio Next,HRRN)是一种对CPU中央控制器响应比的分配的算法。HRRN是介于FCFS(先来先服务算法)与SJF(短作业优先算法)之间的折中算法。FCFS算法所考虑的只是作业等待时间,而忽视了作业的运行时间(类似我们在生活中排队买东西)。

    2023年04月18日
    浏览(43)
  • linux性能优化-IO调度优化

    Linux I/O调度器(Linux I/O Scheduler)Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能,介于通用块层和块设备驱动程序之间。 noop(No Operation) :通常用于内存存储的设备。 cfq(Completely Fair Scheduler ) :完全公平调度器,进程平均使用IO带宽。 deadline :针对

    2024年02月10日
    浏览(54)
  • 【精选论文 | Capon算法与MUSIC算法性能的比较与分析】

    本文编辑:调皮哥的小助理 【正文】 首先说结论: 当信噪比(SNR)足够大时,Capon算法和MUSIC算法的空间谱非常相似,因此在SNR比较大时它们的性能几乎一样,当不同信号源的入射角度比较接近时,MUSIC算法的性能优于Capon,这也是MUSIC算法(或者说子空间类算法)被称为高分

    2024年02月11日
    浏览(64)
  • 磁盘调度算法例题解析以及C语言实现

    如果当前停留在第122号磁道上,接下来8个磁道按顺序分别是 120,98,4,51,180,195,140,23。请写出最短寻道时间优先和扫描算 法的访问顺序以及各自的平均寻道长度。 最短寻道时间优先算法: SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间

    2024年02月12日
    浏览(44)
  • SM4、AES、DES加解密算法性能比较

    加密算法 文件大小 加密耗时(ms) 解密耗时(ms) SM4 5M 1596 841 AES 5M 201 447 DES 5M 317 669 SM4 620KB 689 172 AES 620KB 109 186 DES 620KB 53 132 SM4 36KB 487 34 AES 36KB 20 57 DES 36KB 9 14 SM4 6Bytes 505 0 AES 6Bytes 13 24 DES 6Bytes 1 0

    2024年02月13日
    浏览(49)
  • 大数据Flink(五十二):Flink中的批和流以及性能比较

    文章目录 Flink中的批和流以及性能比较 ​​​​​​​​​​​​​​一、Flink中的批和流

    2024年02月15日
    浏览(42)
  • 云计算中的任务调度算法

    一、云计算 1、云计算可以说是并行计算与分布式计算相结合的产物,利用互联网和虚拟机技术使得各种资源能够提供给用户使用。按需服务、弹性可扩展是其主要特征。  一次正常的用户服务流程为: 用户提交任务到云端, 任务调度器将任务分配到合适的计算资源上执行, 

    2024年02月03日
    浏览(42)
  • 操作系统中的调度算法

    处理机调度层次: 1.高级调度( 作业 调度/) 2.中级调度( 内存 调度/) 3.低级调度( 进程 调度/) 一、作业调度算法 1.先来先服务算法(FCFS) 2.短作业优先算法(SJF) 3.优先级调度算法(PR) 4.高响应比调度算法(PR特例) 5.时间片轮转算法(RR) 6.多级队列调度算法 7.基

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包