`
yuexiaodong
  • 浏览: 70303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux IO信息查看(一)

阅读更多

      IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯.(elevator)而相应的算法也就被叫做电梯算法.而Linux中IO调度的电梯算法有好几种,一个叫做as(Anticipatory),一个叫做cfq(Complete Fairness Queueing),一个叫做deadline,还有一个叫做noop(No Operation).具体使用哪种算法我们可以在启动的时候通过内核参数elevator来指定.
另一方面我们也可以单独的为某个设备指定它所采用的IO调度算法,这就通过修改在/sys/block/sda/queue/目录下面的scheduler文件.比如我们可以先看一下我的这块硬盘:

[root@localhost ~]#dmesg | grep -i scheduler
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

 可以看到我们这里采用的是cfq.同时也能看出当前系统支持的调度算法,如2.6内核的四种调度算法,其中用[]标识的是当前使用的调度算法。

修改调度算法:
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
[root@localhost ~]# echo  anticipatory> /sys/block/sda/queue/scheduler
[root@localhost ~]# cat /sys/block/sda/queue/scheduler
noop [anticipatory] deadline cfq
 四种调度算法简介:
在2.6的内核中共计有4种IO调度机制:
1.Deadline scheduler Deadline scheduler 用 deadline 算法保证对于既定的 IO 请求以最小的延迟时间,从这一点理解,对于 DSS 应用应该会是很适合的。
2.Anticipatory scheduler(as) 曾经一度是 Linux 2.6 Kernel 的 IO scheduler 。Anticipatory 的中文含义是”预料的, 预想的”, 这个词的确揭示了这个算法的特点,简单的说,有个 IO 发生的时候,如果又有进程请求 IO 操作,则将产生一个默认的 6 毫秒猜测时间,猜测下一个 进程请求 IO 是要干什么的。这对于随即读取会造成比较大的延时,对数据库应用很糟糕,而对于 Web Server 等则会表现的不错。这个算法也可以简单理解为面向低速磁盘的,因为那个”猜测”实际上的目的是为了减少磁头移动时间。
3.Completely Fair Queuing  虽然这世界上没有完全公平的事情,但是并不妨碍开源爱好者们设计一个完全公平的 IO 调度算法。Completely Fair Queuing (cfq, 完全公平队列) 在 2.6.18 取代了 Anticipatory scheduler 成为 Linux Kernel 默认的 IO scheduler 。cfq 对每个进程维护一个 IO 队列,各个进程发来的 IO 请求会被 cfq 以轮循方式处理。也就是对每一个 IO 请求都是公平的。这使得 cfq 很适合离散读的应用(eg: OLTP DB)。我所知道的企业级 Linux 发行版中,SuSE Linux 好像是最先默认用 cfq 的.
4.NOOP Noop 对于 IO 不那么操心,对所有的 IO请求都用 FIFO 队列形式处理,默认认为 IO 不会存在性能问题。这也使得 CPU 也不用那么操心。当然,对于复杂一点的应用类型,使用这个调度器,用户自己就会非常操心。
redhat上介绍io调度算法的页面:
分享到:
评论

相关推荐

    linux IO 字符形操作

    Linux操作系统中,文件输入输出(I/O)操作是一个非常基础且核心的内容。Linux IO操作主要分为两大类:缓冲I/O和直接I/O。缓冲I/O是通过标准C库中的函数实现,例如fopen、fprintf、fread、fwrite、fclose等,这些...

    linux 标准IO——学生信息管理

    总之,`ls_stu.c`是一个关于Linux标准IO的应用实例,它展示了如何利用标准输入、输出以及文件I/O来管理和处理学生信息。通过对这个程序的学习,我们可以深入了解C语言在Linux环境下的文件操作和数据处理能力。

    Linux IO数据通道我理解之分享

    通过上述对Linux IO数据通道的详细解析,我们可以看出,Linux内核为确保高效的IO处理机制,设计了一系列复杂的层次结构和算法。这些机制不仅保证了系统的稳定性和可靠性,也为应用程序提供了高效的数据传输能力。

    linux中查看io的相关命令

    Linux 中查看 IO 相关命令 Linux 操作系统中,查看 IO 状态的命令非常重要,特别是在服务器出现异常情况时。以下是查看 Linux 服务器硬盘 IO 访问负荷的方法: 1. 使用 Top 命令 Top 命令可以显示当前系统的实时...

    linux io层次图

    虚拟文件系统(Virtual File System, VFS)是 Linux 内核的一个重要组件,它提供了一个统一的接口来访问各种不同类型的文件系统。VFS 的主要作用是为不同的文件系统实现提供一个抽象层,使得上层的应用程序无需关心...

    Linux IO数据通道我理解

    在Linux系统中,输入/输出(IO)数据通道的处理是一个复杂的过程,涉及到多个层次的协作与交互。了解这些层次及其工作原理对于深入理解Linux系统的IO机制至关重要。 1. **用户空间层**:应用程序通过标准的系统调用...

    linux下IO口驱动

    在Linux操作系统中,IO口驱动是用于控制硬件设备输入输出的关键部分,特别是在嵌入式系统和设备开发中。本文将深入探讨Linux下IO口驱动的工作原理、实现方式以及如何通过编程来控制IO口的高低电平。 首先,理解...

    漫谈linux文件IO

    ### 漫谈 Linux 文件 I/O #### 一、引言 在 Linux 开发领域,技术人员尤为关注几个关键性能指标:进程管理、CPU 使用率、内存占用、网络 I/O 和磁盘 I/O。其中,磁盘 I/O 性能尤其重要,因为它直接影响到系统的响应...

    Linux IO调度算法比较

    ### Linux IO调度算法详解 #### 一、引言 在现代计算系统中,I/O(输入/输出)操作是不可避免的。特别是在涉及大量数据存取的场景下,如数据库服务、文件系统操作等,I/O性能直接影响着系统的整体效率。由于磁盘...

    linux io 模型

    linux io模型,区分阻塞非阻塞同步异步的概念,从底层理解io。

    linux-IO监控

    磁盘IO性能监控(Linux 和 Windows)

    IO空间查看器

    该工具是linux下的查看内存的工具,特别适用于linux、嵌入式linux设备驱动程序的开发,善加利用,可使设备的当前工作状态一目了然,该工具还可以手动改变设备的工作状态,是设备驱动程序调试的一大利器。 该工具...

    Linux文件IO操作

    ### Linux文件IO操作详解 #### 基本概念 Linux 文件 I/O 操作是学习 Linux 应用开发的基础,尤其对于初学者来说至关重要。本文旨在详细介绍 Linux 下的文件 I/O 操作及其相关概念。 #### 文件 在 Linux 系统中,...

    linux io接口函数整理

    io接口函数整理

    实例解析linux的IO编程

    流实际上是一块内存区域,其中包含了缓存信息以及指向实际文件的文件描述符。标准IO库函数通过操作这些流来进行数据的读取和写入。 - **流的创建**:通过调用`fopen`函数打开一个文件时,会返回一个指向流的指针...

    linux IO 系统的开销比较(文件逆序)

    在Linux操作系统中,I/O(Input/Output)操作是计算机与外部设备交互的关键部分,尤其在处理大量数据时,如文件操作。本话题主要探讨在Linux环境下,针对文件逆序操作的不同I/O策略的性能比较。我们将分析四种不同的...

    Linux-IO性能优化基础工具和实践

    Linux-IO性能优化基础工具和实践: 基础篇-Linux IO stack overview 基础篇-read syscall IO stack 工具篇-iostat数据可靠吗 工具篇-blktrace原理和应用 工具篇-debugfs应用 Cache server机械盘IO性能瓶颈分析 实践...

    linux IO优化

    #### 一、Linux IO调度器概览 Linux系统中的IO调度算法是操作系统内核的重要组成部分,负责管理和调度磁盘I/O请求,以提高系统的整体性能。根据不同的应用场景,Linux提供了多种I/O调度算法供用户选择。 #### 二、...

    Linux下IO读写工具abu-1.0

    `abu-1.0`是一个专为Linux设计的I/O读写工具,旨在提供类似`ru`和`adu`的功能,以辅助程序员进行更便捷的调试和性能分析。 `ru`(run time)和`adu`(average disk utilization)是经典的Linux系统监控工具。`ru`...

    GPIO.rar_GPIO_GPIO linux _Linux IO_io_linux gpio

    标题中的"GPIO.rar_GPIO_GPIO linux_Linux IO_io_linux gpio"表明这是一个关于Linux GPIO驱动程序的资源包,主要涉及Linux系统下的GPIO读写操作。 在Linux中,GPIO的操作通常需要通过内核驱动来实现。Linux提供了...

Global site tag (gtag.js) - Google Analytics