返回顶部
首页 > 资讯 > 操作系统 >怎么查看Linux系统的I/O调度器
  • 186
分享到

怎么查看Linux系统的I/O调度器

2023-06-16 12:06:27 186人浏览 泡泡鱼
摘要

这篇文章主要介绍“怎么查看linux系统的I/O调度器”,在日常操作中,相信很多人在怎么查看Linux系统的I/O调度器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么查看Linux系统的I/O调度器”的疑

这篇文章主要介绍“怎么查看linux系统的I/O调度器”,在日常操作中,相信很多人在怎么查看Linux系统的I/O调度器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么查看Linux系统的I/O调度器”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Linux I/O 系统简介

Linux I/O调度器(Linux I/O Scheduler)是LinuxI/O体系的一个组件,它介于通用块层和块设备驱动程序之间。如图 1  所示。

图1 Linux I/O调度器介于通用块层和块设备驱动程序之间

怎么查看Linux系统的I/O调度器

当Linux内核组件要读写一些数据时,并不是请求一发出,内核便立即执行该请求,而是将其推迟执行。当传输一个新数据块时,内核需要检查它能否通过。Linux  io调度程序是介于通用块层和块设备驱动程序之间,所以它接收来自通用块层的请求,试图合并请求,并找到最合适的请求下发到块设备驱动程序中。之后块设备驱动程序会调用一个函数来响应这个请求。

Linux整体I/O体系可以分为七层,它们分别是:

  1. VFS虚拟文件系统:内核要跟多种文件系统打交道,内核抽象了这VFS,专门用来适配各种文件系统,并对外提供统一操作接口。

  2. 磁盘缓存:磁盘缓存是一种将磁盘上的一些数据保留着RAM中的软件机制,这使得对这部分数据的访问可以得到更快的响应。磁盘缓存在Linux中有三种类型:Dentry  cache ,Page cache , Buffer cache。

  3. 映射层:内核从块设备上读取数据,这样内核就必须确定数据在物理设备上的位置,这由映射层(Mapping Layer)来完成。

  4. 通用块层:由于绝大多数情况的I/O操作是跟块设备打交道,所以Linux在此提供了一个类似vfs层的块设备操作抽象层。下层对接各种不同属性的块设备,对上提供统一的Block  IO请求标准。

  5. I/O调度层:大多数的块设备都是磁盘设备,所以有必要根据这类设备的特点以及应用特点来设置一些不同的调度器。

  6. 块设备驱动:块设备驱动对外提供高级的设备操作接口。

  7. 物理硬盘:这层就是具体的物理设备。

5种类型的Linux I/O调度器

Linux 从2.4内核开始支持I/O调度器,到目前为止有5种类型:Linux 2.4内核的 Linus Elevator、Linux 2.6内核的  Deadline、 Anticipatory、 CFQ、 Noop,其中Anticipatory从Linux  2.6.33版本后被删除了。目前主流的Linux发行版本使用Deadline、 CFQ、 Noop三种I/O调度器。下面依次简单介绍:

1 Linus Elevator

在2.4  内核中它是***种I/O调度器。它的主要作用是为每个设备维护一个查询请求,当内核收到一个新请求时,如果能合并就合并。如果不能合并,就会尝试排序。如果既不能合并,也没有合适的位置插入,就放到请求队列的***。

2 Anticipatory

Anticipatory的中文含义是"预料的,预想的",顾名思义有个I/O发生的时候,如果又有进程请求I/O操作,则将产生一个默认的6毫秒猜测时间,猜测下一个进程请求I/O是要干什么的。这个I/O调度器对读操作优化服务时间,在提供一个I/O的时候进行短时间等待,使进程能够提交到另外的I/O。Anticipatory算法从Linux  2.6.33版本后被删除了,因为使用CFQ通过配置也能达到Anticipatory的效果。

3 DeadLine

Deadline翻译成中文是截止时间调度器,是对Linus  Elevator的一种改进,它避免有些请求太长时间不能被处理。另外可以区分对待读操作和写操作。DEADLINE额外分别为读I/O和写I/O提供了FIFO队列。Deadline的工作流程如图  2 所示。

图2 Deadline的工作流程

怎么查看Linux系统的I/O调度器

怎么查看Linux系统的I/O调度器

4 CFQ

CFQ全称Completely Fair Scheduler ,中文名称完全公平调度器,它是现在许多 Linux  发行版的默认调度器,CFQ是内核默认选择的I/O调度器。它将由进程提交的同步请求放到多个进程队列中,然后为每个队列分配时间片以访问磁盘。对于通用的服务器是***的选择,CFQ均匀地分布对I/O带宽的访问。CFQ为每个进程和线程,单***建一个队列来管理该进程所产生的请求,以此来保证每个进程都能被很好的分配到I/O带宽,I/O调度器每次执行一个进程的4次请求。该算法的特点是按照I/O请求的地址进行排序,而不是按照先来后到的顺序来进行响应。简单来说就是给所有同步进程分配时间片,然后才排队访问磁盘,CFQ的工作流程如图  3 所示 。

图3 CFQ的工作流程

怎么查看Linux系统的I/O调度器

怎么查看Linux系统的I/O调度器

5 NOOP

NOOP全称No  Operation,中文名称电梯式调度器,该算法实现了最简单的FIFO队列,所有I/O请求大致按照先来后到的顺序进行操作。NOOP实现了一个简单的FIFO队列,它像电梯的工作主法一样对I/O请求进行组织。它是基于先入先出(FIFO)队列概念的  Linux 内核里最简单的I/O 调度器。此调度程序最适合于固态硬盘。NOOP的工作流程如图4 所示。

图4 NOOP的工作流程

I/O调度器的选择

目前主流Linux发行版本使用三种I/O调度器:DeadLine、CFQ、NOOP,通常来说Deadline适用于大多数环境,特别是写入较多的文件服务器,从原理上看,DeadLine是一种以提高机械硬盘吞吐量为思考出发点的调度算法,尽量保证在有I/O请求达到最终期限的时候进行调度,非常适合业务比较单一并且I/O压力比较重的业务,比如WEB服务器,数据库应用等。CFQ  为所有进程分配等量的带宽,适用于有大量进程的多用户系统,CFQ是一种比较通用的调度算法,它是一种以进程为出发点考虑的调度算法,保证大家尽量公平,为所有进程分配等量的带宽,适合于桌面多任务及多媒体应用。NOOP  对于闪存设备和嵌入式系统是***的选择。对于固态硬盘来说使用NOOP是***的,DeadLine次之,而CFQ效率***。

查看Linux系统的 I/O调度器

查看Linux系统的I/O调度器一般分成两个部分,一个是查看Linux系统整体使用的I/O调度器,另一个是查看某磁盘使用的I/O调度器。

查看当前系统支持的I/O调度器,使用如下命令:

清单 1. 查看当前系统支持的I/O调度器

# dmesg | grep -i scheduler [    1.508820] io scheduler noop reGIStered [    1.508827] io scheduler deadline registered [    1.508850] io scheduler cfq registered (default)

清单1的代码显示cfq是目前的I/O调度器。

查看某块硬盘的IO调度算法I/O调度器,使用如下命令:

清单2. 查看一个硬盘使用的I/O调度器

# cat /sys/block/sda/queue/scheduler noop deadline [cfq]

清单2显示当前使用的调度器是cfq,就是括号括起来的那一个。

修改Linux系统的 I/O调度器

修改Linux系统的 I/O调度器有三种方法,分别是使用shell命令、使用grubby命令或者修改grub配置文件。下面依次介绍:

使用shell命令

Linux下更改的I/O调度器很简单。不需要更新内核,可以使用shell命令修改:

清单3. 查使用shell命令

#echo noop > /sys/block/sdb/queue/scheduler

清单3的命令把noop设置为一个磁盘的I/O调度器,你可以随时更改而无需重启计算机。

***修改默认的I/O调度器

使用shell命令修改I/O调度器,只是临时修改,系统重启后,修改的调度器就会失效,要想修改默认的调度器,有两种方法使用grubby命令或者直接编辑grub配置文件。

使用grubby命令

例如需要把I/O调度器从cfq调整成 DeadLine ,命令如下:

清单4.使用grubby命令

# grubby --grub --update-kernel=ALL --args="elevator=deadline"

清单4的命令,通过设置内核加载参数, 这样当机器重启的时候,系统自动把所有设备的 I/O调度器变成 DeadLine 。

使用编辑器修改配置文件

也可以直接编辑grub的配置文件 ,通过修改grub配置文件,系统自动把所有设备的 I/O调度器变成cfq。操作过程如下:

清单5 使用vi编辑器修改grub配置文件

#vi cat /etc/default/grub #修改第五行,在行尾添加# elevator= cfq  然后保存文件,重新编译配置文件, #grub2-mkconfig -o /boot/grub2/grub.cfg

重新启动计算机系统即可。

到此,关于“怎么查看Linux系统的I/O调度器”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么查看Linux系统的I/O调度器

本文链接: https://lsjlt.com/news/283676.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么查看Linux系统的I/O调度器
    这篇文章主要介绍“怎么查看Linux系统的I/O调度器”,在日常操作中,相信很多人在怎么查看Linux系统的I/O调度器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么查看Linux系统的I/O调度器”的疑...
    99+
    2023-06-16
  • Linux系统如何更改I/O调度器
    这篇文章的内容主要围绕Linux系统如何更改I/O调度器进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!I/O 调度简介:Linux 的 I/O 调度...
    99+
    2023-06-28
  • Linux系统中如何更改I/O调度器
    本篇文章给大家分享的是有关Linux系统中如何更改I/O调度器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Linux I/O 调度器是Linux内核中的一个组成部分,是一个以...
    99+
    2023-06-28
  • Linux I/O调度器是什么
    这篇文章主要介绍Linux I/O调度器是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux I/O 调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。Linux I/O 系...
    99+
    2023-06-16
  • Linux中如何调整I/O调度器优化系统性能
    这篇文章给大家分享的是有关Linux中如何调整I/O调度器优化系统性能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux I/O 调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统...
    99+
    2023-06-27
  • 怎么更改Linux I/O调度器来调整性能
    这篇文章主要讲解了“怎么更改Linux I/O调度器来调整性能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么更改Linux I/O调度器来调整性能”吧!为了从 Linux 服务器榨取尽可...
    99+
    2023-06-16
  • Linux下如何操作i/o调度器
    这篇文章主要介绍了Linux下如何操作i/o调度器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux下如何操作i/o调度器文章都会有所收获,下面我们一起来看看吧。i/o调度器是什么?Linux 的 I/O...
    99+
    2023-06-27
  • Linux系统怎么查看cpu温度
    本文将为大家详细介绍“Linux系统怎么查看cpu温度”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Linux系统怎么查看cpu温度”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去...
    99+
    2023-06-28
  • linux系统中文件I/O的示例分析
    小编给大家分享一下linux系统中文件I/O的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!linux 文件I/O一,文件描述符对内核而言,所以打开的文件...
    99+
    2023-06-13
  • 怎么查看linux系统
    本篇内容介绍了“怎么查看linux系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查看方法:1、用“cat /etc/os-release...
    99+
    2023-06-30
  • Linux的I/O机制怎么理解
    本篇内容主要讲解“Linux的I/O机制怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的I/O机制怎么理解”吧!你真的了解多线程吗如果问你“为什么多线程可以提高程序运行效率”,...
    99+
    2023-06-15
  • linux怎么查看服务器系统
    在Linux系统中,可以通过以下命令来查看服务器系统的详细信息: 使用命令 uname -a 可以显示系统的内核版本和架构信息。 ...
    99+
    2024-04-02
  • Linux系统怎么查看socket
    这篇“Linux系统怎么查看socket”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“Linux系统怎么查看socket”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来...
    99+
    2023-06-28
  • 怎么查看Linux系统的信息
    要查看Linux系统的信息,可以使用以下命令:1. uname:显示系统信息,如内核版本、操作系统版本等。例如:`uname -a`...
    99+
    2023-08-30
    Linux
  • Linux的直接I/O机制怎么实现
    这篇文章主要介绍了Linux的直接I/O机制怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux的直接I/O机制怎么实现文章都会有所收获,下面我们一起来看看吧。直接 I/O 的动机在介绍直接 I/O...
    99+
    2023-06-16
  • linux怎么查看系统编码
    linux中查看系统编码的方法:1、打开终端;2、输入“locale”命令查看当前系统的编码即可。具体操作步骤:在linux系统桌面下使用快捷键【Ctrl+Alt+T】打开终端命令行模式。在linux终端命令行模式中输入以下命令查看当前系统...
    99+
    2024-04-02
  • Linux怎么查看系统内存
    这篇文章主要介绍“Linux怎么查看系统内存”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux怎么查看系统内存”文章能帮助大家解决问题。1. /proc/meminfo一种最简单的方法是通过“...
    99+
    2023-06-28
  • Linux怎么查看系统配置
    这篇文章主要讲解了“Linux怎么查看系统配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux怎么查看系统配置”吧!CPU\1. lscpu:显示cpu架构信息 [xxx@...
    99+
    2023-06-28
  • Linux怎么查看系统版本
    这篇“Linux怎么查看系统版本”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux怎么查看系统版本”文章吧。1、lsb...
    99+
    2023-06-28
  • 怎么查看Linux系统服务
    这篇“怎么查看Linux系统服务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么查看Linux系统服务”文章吧。Cento...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作