如何以及何时更改 Linux 中的 I/O 调度程序
I/O 调度程序是一个令人着迷的话题;在此之前,我们了解如何以及何时调整 I/O 调度程序;让我们更深入地了解 I/O 调度程序的作用。 Linux I/O 调度程序控制内核如何提交、读取和写入光盘。从 2.6 内核开始,管理人员就能够调整调度系统,从而使他们能够根据自己的具体要求定制框架。长期以来,磁盘访问一直被认为是相对较慢的数据访问方式。尽管闪存和固态空间日益普及,但从光盘检索数据比从 RAM 收集信息缓慢。如果框架基于旋转盘,则这一点尤其有效。
为什么使用调度程序:
由于标准旋转光盘根据旋转盘上的位置写入信息,因此情况就是如此。从旋转光盘访问数据时,实际驱动器必须将盘片旋转到特定位置,以便可以读取信息。这被称为“寻找”,因为它可能需要更长的计算时间。 I/O 调度程序旨在帮助您充分利用光盘访问权限。我们曾经通过组合 I/O 事务并将它们发送到相邻的磁盘位置来执行相同的操作。当请求被分组到磁盘的相邻部分时,驱动器甚至不必“寻找”那么多,这提高了磁盘操作活动的平均响应时间。当前 Linux 架构上有许多可用的 I/O 调度器解决方案。其中任何一种都有其用于安排盘访问请求的系统。本文将了解如何检查系统中当前的调度程序以及如何在 Linux 操作系统上工作时更改调度程序。
调度程序的类型:
似乎有 3 种类型的调度程序可供选择,每种类型在 Linux 操作系统中都有自己的优势。因此,以下是每个调度程序的列表和说明:
CFQ (cfq):许多 Linux 发行版的标准调度程序;在为每个队列分配时间片以使用磁盘之前,它将操作发出的同时请求分组到一系列每个进程池中。
Noop 调度程序 (noop): 它是 Linux 内核最基本的 I/O 调度程序,基于 FIFO 池原理构建。该调度程序非常适合 SSD。
最后期限调度程序(deadline):此调度程序尝试确保请求开始服务期限。
检查当前调度程序:
在继续之前,您必须了解当前 Linux 系统中配置的 I/O 调度程序。在实现时,我们一直使用Ubuntu 20.04 Linux系统,所以我们的调度器将是。您的 Linux 系统可能配置了不同的 I/O 调度程序。因此,从当前的 Linux 系统登录并尝试检查它。现在,使用简单的快捷键“Ctrl+Alt+T”启动终端 shell。您可以尝试使用 Linux 桌面上的活动栏区域打开终端 shell。现在,命令 shell 终端已打开,我们可以开始处理它。首先,我们必须从终端以 sudo 用户身份登录,才能高效且不间断地工作。因此,在终端中输入“su”命令进行登录。它会要求您输入 sudo 帐户密码才能从中登录。输入 sudo 帐户密码,然后按打字机上的“Enter”键。
现在,是时候检查并识别 Linux 系统的 I/O 调度程序了。如您所知,目前我们一直在 Ubuntu 20.04 Linux 系统上按照它进行工作,我们必须通过其路径读取调度程序文件来检查它。因此,我们必须在 shell 终端中尝试以下 cat 指令以及通过路径的文件位置,然后从计算机的打字机上点击“Enter”按钮。
下图显示输出为“[mq-deadline] none”,这意味着我们的设备中有一个多队列 Deadline 调度程序。它是针对多队列设备的截止时间 I/O 调度程序的适配。一个可靠的全能者,CPU 使用率低。
注意:您必须清楚,多队列 I/O 调度程序是 Ubuntu Eoan Ermine 19.10 中提供的单独 I/O 调度程序,而且是鲁莽的。
更改 I/O 调度程序:
如果 Linux 系统用户想要将其 I/O 调度程序更改为“Kyber”,他们必须首先按照以下两个步骤在其 Linux 系统中安装“kyber”软件包。必须执行以下 sudo 命令,其中包含关键字“modprobe”,调度程序的名称为“kyber-iosched”。
第二步是运行上述命令之一中提到的相同“cat”命令来安装它。
现在“kyber”已成功配置。现在,您可以使用下面的“echo”调度程序命令以及附加了调度程序路径的“sudo”和“tee”关键字来启用“kyber”。输出图像呈现启用的调度程序“kyber”。
下面的输出显示“kyber”已设置为默认值。
要将调度程序更改为“bfq”调度程序,请使用以下命令安装它。
现在运行相同的“cat”命令。
现在“bfq”已经安装,使用相同的“echo”命令启用它。
通过“cat”命令检查默认的“bfq”调度程序。
结论:
本教程文章介绍了使用两种不同的调度程序更改 I/O 调度程序的简单方法。我们已经讨论了为什么系统想要更改其调度程序希望它对您有用。