From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54731) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VRJU9-0008N2-DG for qemu-devel@nongnu.org; Wed, 02 Oct 2013 06:16:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VRJU0-0003ge-VZ for qemu-devel@nongnu.org; Wed, 02 Oct 2013 06:16:49 -0400 Date: Wed, 2 Oct 2013 12:16:37 +0200 From: Stefan Hajnoczi Message-ID: <20131002101637.GM2142@stefanha-thinkpad.redhat.com> References: <99E88309-FA7E-4A47-AF07-B83E5C1134AE@icloud.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <99E88309-FA7E-4A47-AF07-B83E5C1134AE@icloud.com> Subject: Re: [Qemu-devel] About the IO queue inside qemu List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Yaodong Yang Cc: "qemu-devel@nongnu.org" , "qemu-discuss@nongnu.org" On Wed, Oct 02, 2013 at 01:28:11AM -0500, Yaodong Yang wrote: > I'm wondering is there any io queue inside qemu? Is there any IO scheduling inside it? I notice that there is an IO track feature inside block.c, but I do not know the purpose of it. Could someone explain it for me? Thanks a lot! There are two queues: 1. Throttled requests. Used by the I/O throttling feature (-drive iops=5000). Requests need to be suspended until there is enough budget for them. 2. Tracked requests. This is a generic queue that is used by the copy-on-read feature to prevent corruption when the guest writes to a sector that is currently being copied. There is also an API to batch writes so they can be merged. virtio-blk uses this and may therefore change the I/O pattern. Stefan