From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36926) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ys7iP-0004YH-Aa for qemu-devel@nongnu.org; Tue, 12 May 2015 06:47:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ys7iO-0007fT-93 for qemu-devel@nongnu.org; Tue, 12 May 2015 06:47:09 -0400 Message-ID: <5551DA21.7020105@redhat.com> Date: Tue, 12 May 2015 12:46:57 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1430746944-27347-1-git-send-email-den@openvz.org> <20150511150817.GK16270@stefanha-thinkpad.redhat.com> <5550D3B5.2050703@openvz.org> <5550DD2D.8000407@odin.com> <20150512100155.GB11497@stefanha-thinkpad.redhat.com> <5551D39E.1020902@odin.com> In-Reply-To: <5551D39E.1020902@odin.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [Qemu-block] [PATCH v5 0/2] block: enforce minimal 4096 alignment in qemu_blockalign List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Denis V. Lunev" , Stefan Hajnoczi Cc: Dmitry Monakhov , Stefan Hajnoczi , qemu-devel@nongnu.org, qemu-block@nongnu.org On 12/05/2015 12:19, Denis V. Lunev wrote: > > > hades /vol $ strace -f -e pwrite -e raw=write,pwrite qemu-io -n -c > "write -P 0x11 0 64M" ./1.img > Process 19326 attached > [pid 19326] pwrite(0x6, 0x7fac07fff200, 0x4000000, 0x50000) = 0x4000000 > <---- 1 GB Write from userspace FWIW this is 64 MB (as expected). > wrote 67108864/67108864 bytes at offset 0 > 64 MiB, 1 ops; 0.2964 sec (215.863 MiB/sec and 3.3729 ops/sec) > [pid 19326] +++ exited with 0 +++ > +++ exited with 0 +++ > hades /vol $ > 9,0 1 266 74.030359772 19326 Q WS 473095 + 1016 [(null)] > 9,0 1 267 74.030361546 19326 Q WS 474111 + 8 [(null)] > 9,0 1 268 74.030395522 19326 Q WS 474119 + 1016 [(null)] > 9,0 1 269 74.030397509 19326 Q WS 475135 + 8 [(null)] > > This means, yes, kernel is INEFFECTIVE performing direct IO with > not aligned address. For example, without direct IO the pattern is > much better. I think this means that the kernel is DMAing at most 128 pages at a time. If the buffer is misaligned, you need 129 pages and the kernel then splits the request into a 128 page and a 1 page part. This looks like a hardware limit, and the kernel probably cannot really do anything about it because we requested O_DIRECT. So your patch makes sense. Paolo