From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44713) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X2tpz-000440-Mz for qemu-devel@nongnu.org; Thu, 03 Jul 2014 23:07:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X2tps-0002xo-7F for qemu-devel@nongnu.org; Thu, 03 Jul 2014 23:06:59 -0400 Received: from mail-pa0-f42.google.com ([209.85.220.42]:38631) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X2tps-0002xg-14 for qemu-devel@nongnu.org; Thu, 03 Jul 2014 23:06:52 -0400 Received: by mail-pa0-f42.google.com with SMTP id lj1so1241440pab.1 for ; Thu, 03 Jul 2014 20:06:50 -0700 (PDT) From: Ming Lei Date: Fri, 4 Jul 2014 11:06:39 +0800 Message-Id: <1404443202-14174-1-git-send-email-ming.lei@canonical.com> Subject: [Qemu-devel] [PATCH v5 0/3] linux-aio: introduce submit I/O as a batch List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell , qemu-devel@nongnu.org, Paolo Bonzini , Stefan Hajnoczi Cc: Kevin Wolf , Fam Zheng , "Michael S. Tsirkin" Hi, The commit 580b6b2aa2(dataplane: use the QEMU block layer for I/O) introduces ~40% throughput regression on virtio-blk dataplane, and one of causes is that submitting I/O as a batch is removed. This patchset trys to introduce this mechanism on block, at least, linux-aio can benefit from that. With these patches, it is observed that thoughout on virtio-blk dataplane can be improved a lot, see data in commit log of patch 3/3. It should be possible to apply the batch mechanism to other devices (such as virtio-scsi) too. TODO: - support queuing I/O to multi files for scsi devies, which need some changes to linux-aio V5: - rebase on v2.1.0-rc0 of qemu.git/master - block/linux-aio.c code style fix - don't flush io queue before flush, pointed by Paolo V4: - support other non-raw formats with under-optimized performance - use reference counter for plug & unplug - flush io queue before sending flush command V3: - only support submitting I/O as a batch for raw format, pointed by Kevin V2: - define return value of bdrv_io_unplug as void, suggested by Paolo - avoid busy-wait for handling io_submit V1: - move queuing io stuff into linux-aio.c as suggested by Paolo Thanks, -- Ming Lei