Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.2. 使用 Red Hat Enterprise Linux 作为虚拟机进行 I/O 调度

您可以在 Red Hat Enterprise Linux 客户机虚拟机上使用 I/O 调度,无论运行客户机的系统管理程序是什么。以下是应考虑的好处和问题列表:
  • 红帽企业 Linux 虚拟机通常受益于使用 noop 调度程序。在向虚拟机监控程序发送 I/O 之前,调度程序将客户端操作系统中的小请求合并到较大的请求中。这可让管理程序更有效地处理 I/O 请求,这可显著改进虚拟机的 I/O 性能。
  • 根据工作负载 I/O 以及连接存储设备的方式,截止时间 等调度程序可能比不透明地使用。红帽建议对性能测试来验证哪个调度程序能提供最佳性能影响。
  • 使用 iSCSI、SR-IOV 或物理设备透传访问的客户机不应使用 noop 调度程序。这些方法不允许主机优化对底层物理设备的 I/O 请求。
注意
在虚拟环境中,在主机和客户机层上调度 I/O 有时非常有用。如果多个客户端使用由主机操作系统管理的文件系统或块设备上的存储,主机可能会更有效地调度 I/O,因为它知道所有客户机的请求。另外,主机知道存储的物理布局,这可能不会线性映射到客户机的虚拟存储。
所有调度程序性能优化都应该在正常操作条件下进行测试,因为同构基准通常无法准确比较虚拟环境中使用共享资源的系统的性能。

6.2.1. 为 Red Hat Enterprise Linux 7 配置 I/O 调度程序

Red Hat Enterprise Linux 7 系统中使用的默认调度程序是 截止时间。但是,在 Red Hat Enterprise Linux 7 虚拟机中,通过执行以下操作将调度程序更改为 noop 会大:
  1. /etc/default/grub 文件中,将 GRUB_CMDLINE_LINUX 行上的 elevator=deadline 字符串更改为 elevator=noop。如果没有 elevator= 字符串,请在行末尾添加 elevator=noop
    以下显示了在成功更改后的 /etc/default/grub 文件。
    # cat /etc/default/grub
    [...]
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg00/lvroot rhgb quiet elevator=noop"
    [...]
    
  2. 重建 /boot/grub2/grub.cfg 文件。
    • 在基于 BIOS 的机器上:
      # grub2-mkconfig -o /boot/grub2/grub.cfg
    • 在基于 UEFI 的机器上:
      # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg