When kernel has to send MMIO writes to userspace, it stores them
in memory until it has to pass the hand to userspace for another
reason. This avoids to have too many context switches on operations
that can wait.

These patches introduce an ioctl() to define MMIO allowed to be delayed.

                        WITHOUT                 WITH
                        PATCH                   PATCH

iperf (e1000)           169 MB/s                185,5 MB/s      +9,7%
   host_state_reload    (626594)                (391825)        -37%

        [9,7% is a more realistic value than my previous benchmark]

boot XP
host_state_reload       764677                  516059          -32%

VGA text scroll 
host_state_reload       13280568 (6:15)         3608362 (4:42)  -73% (-25%)

This is the kernel part of the MMIO batching functionality.

[PATCH 1/5] kvm_io_device: extend in_range() to manage len and write attribute

        Modify member in_range() of structure kvm_io_device to pass length
        and the type of the I/O (write or read).

[PATCH 2/5] Add delayed MMIO support (common part)

        This patch adds all needed structures to batch MMIOs.
        Until an architecture uses it, it is not compiled.

[PATCH 3/5] Add delayed MMIO support (x86 part)

        This patch enables MMIO batching for x86 architecture.

[PATCH 4/5] Add delayed MMIO support (powerpc part)

        This patch enables MMIO batching for powerpc architecture.
        WARNING: this has not been tested.

[PATCH 5/5] Add delayed MMIO support (ia64 part)

        This patch enables MMIO batching for ia64 architecture.
        WARNING: this has not been tested.

Signed-off-by: Laurent Vivier <[EMAIL PROTECTED]>


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to