Search

6.2. I/O Scheduling with Red Hat Enterprise Linux as a Virtualization Guest

download PDF
You can use I/O scheduling on a Red Hat Enterprise Linux guest virtual machine, regardless of the hypervisor on which the guest is running. The following is a list of benefits and issues that should be considered:
  • Red Hat Enterprise Linux guests often benefit greatly from using the noop scheduler. The scheduler merges small requests from the guest operating system into larger requests before sending the I/O to the hypervisor. This enables the hypervisor to process the I/O requests more efficiently, which can significantly improve the guest's I/O performance.
  • Depending on the workload I/O and how storage devices are attached, schedulers like deadline can be more beneficial than noop. Red Hat recommends performance testing to verify which scheduler offers the best performance impact.
  • Guests that use storage accessed by iSCSI, SR-IOV, or physical device passthrough should not use the noop scheduler. These methods do not allow the host to optimize I/O requests to the underlying physical device.

Note

In virtualized environments, it is sometimes not beneficial to schedule I/O on both the host and guest layers. If multiple guests use storage on a file system or block device managed by the host operating system, the host may be able to schedule I/O more efficiently because it is aware of requests from all guests. In addition, the host knows the physical layout of storage, which may not map linearly to the guests' virtual storage.
All scheduler tuning should be tested under normal operating conditions, as synthetic benchmarks typically do not accurately compare performance of systems using shared resources in virtual environments.

6.2.1. Configuring the I/O Scheduler for Red Hat Enterprise Linux 7

The default scheduler used on a Red Hat Enterprise Linux 7 system is deadline. However, on a Red Hat Enterprise Linux 7 guest machine, it may be beneficial to change the scheduler to noop, by doing the following:
  1. In the /etc/default/grub file, change the elevator=deadline string on the GRUB_CMDLINE_LINUX line to elevator=noop. If there is no elevator= string, add elevator=noop at the end of the line.
    The following shows the /etc/default/grub file after a successful change.
    # cat /etc/default/grub
    [...]
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg00/lvroot rhgb quiet elevator=noop"
    [...]
    
  2. Rebuild the /boot/grub2/grub.cfg file.
    • On a BIOS-based machine:
      # grub2-mkconfig -o /boot/grub2/grub.cfg
    • On an UEFI-based machine:
      # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.