怎样在 Linux 中管理 I/O 进程的优先级

曾经复制或移动过数十或数百 GB 的数据吗? 如果您这样做了,您肯定会注意到系统在此期间的响应速度变慢了。 在 Linux 上,您可以借助 ionice 命令。

什么是 I/O 优先级?

I/O 是输入/输出的缩写。 有许多类型的 I/O 设备,但在这种情况下,它与存储设备有关。

每个想要向此类设备读取或写入数据的进程都被分配了一个调度类和优先级编号(或“nice”值)。 这适用于 Linux 上的文件系统,例如 ext4。 其他文件系统,例如 ZFS,可能会实现稍微不同的方法来调度磁盘上的读/写操作。 此外,CFQ 调度程序应该处于活动状态才能使其工作。 你可以检查

具有高“nice”值的进程具有较低的优先级。 这背后的逻辑是数字越大,该进程对其他进程越“好”。

I/O 优先级怎样工作?

显然,存储设备每秒可以执行的 I/O 操作数 (IOPS) 是有限的。 因此,当两个进程想要同时读/写时,它们各自获得一份 IOPS。 如果它们具有相同的优先级,则它们各自获得大约 50% 的 IOPS。

但 IOPS 可能看起来抽象而复杂。 为简单起见,您可以只考虑最终结果:读/写速度。 假设您的磁盘最多可以写入 100MB/s。 进程 A 开始写操作。 它以 100MB/s 的速度写入磁盘。 进程 B 出现并希望写入同一个磁盘。 它将以大约 50MB/s 的速度写入,使进程 A 的写入速度达到相同的值,50MB/s。 现在,如果您为进程 B 分配更高的 I/O nice 值,它将以 20MB/s 的速度写入,而让进程 A 以 80MB/s 的速度写入。 当进程 A 完成后,进程 B 将开始以 100MB/s 的速度写入。

这个 example 有助于理解可能使某些人感到困惑的事情。 如果一个进程的优先级很低(nice 值很高),这并不意味着它会一直写得很慢。 如果它是唯一使用磁盘的进程,它将以最大速度读/写。 但是当其他进程需要磁盘时,它会暂时让开,让它们使用更多的磁盘带宽。 对于需要数小时才能完成的复制/写入操作,如果您想在此期间使用计算机,最好将其设置为低优先级。

怎样使用ionice命令

命令的一般语法是:

ionice 调度类

闲置的 (第 3 类):该类中的进程仅在没有其他程序需要磁盘访问时进行读/写。 这意味着进程在没有竞争时全速读/写。 当另一个程序需要磁盘时间时,空闲类中的进程将只使用剩余的资源进行读/写。 从 100MB/s 开始,它可能暂时以 5MB/s 的速度写入,然后在其他程序完成访问磁盘时恢复到 100MB/s。 对于您不想减慢系统速度的长时间运行的作业,这是一个完美的类。 不必为此类指定优先级。

示例命令:

最大努力 (第 2 类):采用 0 到 7 之间的优先级/nice 值。请记住,较低的数字意味着较高的优先级。 当您想要微调两个或多个进程的磁盘时间时,请使用此类。

为了 example,您希望您的备份更快完成并将其指定为 nice 值 0。您还将六部电影移动到另一个磁盘,但并不着急,因此您将其指定为 7 的 nice 值。

示例命令:

即时的 (第 1 类):只有在进程应尽快写入且不受任何其他程序中断的情况下才应使用。 大多数用户永远不会需要这个,应该避免这种情况,除非是特殊情况。 还支持 0 到 7 之间的 nice 值。只有 root 可以使用此类,这意味着您可能会在命令前加上 sudo. 请注意,实时类中优先级为 0 的进程可能会使其他进程的资源匮乏。 实际上,这意味着另一个程序可能需要等待几分钟甚至几小时才能完成写入/读取几兆字节的数据。 小心使用,仅当您确定需要它时。 如果类 2 或 3 中的重要进程需要磁盘访问,则您的系统可能会冻结,直到实时进程完成写入。

示例命令:

有用的 ionice 示例

在最后 example, 而不是运行复制/移动命令,而是启动了一个 shell (Bash)。 现在,您在该 shell 中键入的每个后续命令都将继承 I/O 调度类和优先级。 您也可以在图形界面上执行此操作。

最后一个命令将在 LXDE 桌面环境中启动文件浏览器。 将“pcmanfm”替换为特定桌面的文件资源管理器的名称。 现在,您在那里启动的所有磁盘操作都将使用空闲 I/O 调度类执行。

在其他情况下,复制/移动操作可能已经处于活动状态。 在这种情况下,您可以以不同的方式使用 ionice。

这会更改使用进程 ID 4910 运行的程序的优先级类。您可以使用任务管理器或类似命令找到 PID(进程 ID) pgrep.

Ionice 更改进程 Io 优先级

结论

ionice 在您复制/移动大文件时不想滞后的桌面上很有用。 但请记住,这在服务器上也可能更有用。 您当然不希望您在那里托管的网站在您进行完整备份时滞后于访问者。

永远不会错过

接收我们最新教程的更新。

注册所有时事通讯。 我想通过电子邮件接收时事通讯。 我们不会共享您的数据,您可以随时取消订阅。 订阅

相关阅读:

Posted in: Linux