Best I/O scheduler to use with virtualized Linux hosts

While reading through the Redhat Oracle 10G best practices document, I came across this gem:

“In virtualized environments, it is often detrimental to schedule I/O at both the host and guest layers. If multiple guests access storage on a file system or block devices managed by the host operating system, the host may be able to schedule I/O more efficiently because it alone is aware of requests from all guests and knows the physical layout of storage, which may not map linearly to the guests’ virtual storage. Red Hat Enterprise Linux 4 and Red Hat Enterprise Linux 5 guests can use the noop I/O scheduler to allow the host to optimize I/O requests.”

This makes complete sense, and I am going to have to test out the noop I/O scheduler in my lab this weekend. I’m curious how many folks run the default I/O scheduler in their Xen or KVM guests, and are actually hindering I/O performance by doing so.

5 thoughts on “Best I/O scheduler to use with virtualized Linux hosts”

  1. I am using Centos 5.3.

    The default dom0 scheduler :
    cat ./block/sda/queue/scheduler
    noop anticipatory deadline [cfq]

    The default domU (ParaVirt) scheduler :
    cat ./block/xvda/queue/scheduler
    [noop] anticipatory deadline cfq

    So this setting is already the default.

Leave a Reply

Your email address will not be published. Required fields are marked *