From: Peter Lieven <pl@kamp.de>
To: Kevin Wolf <kwolf@redhat.com>
Cc: "Benoît Canet" <benoit.canet@irqsave.net>,
stefanha@redhat.com, qemu-devel@nongnu.org, mreitz@redhat.com,
ronniesahlberg@gmail.com, "Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/4] block: immediately cancel oversized read/write requests
Date: Tue, 23 Sep 2014 10:55:08 +0200 [thread overview]
Message-ID: <5421356C.3030108@kamp.de> (raw)
In-Reply-To: <20140923084758.GA3871@noname.str.redhat.com>
On 23.09.2014 10:47, Kevin Wolf wrote:
> Am 08.09.2014 um 16:54 hat Peter Lieven geschrieben:
>> On 08.09.2014 16:42, Paolo Bonzini wrote:
>>> Il 08/09/2014 16:35, Peter Lieven ha scritto:
>>>> Whats your opinion changed the max_xfer_len to 0xffff regardsless
>>>> of use_16_for_rw in iSCSI?
>>> If you implemented request splitting in the block layer, it would be
>>> okay to force max_xfer_len to 0xffff.
>> Unfortunately, I currently have no time for that. It will include some shuffling with
>> qiovs that has to be properly tested.
>>
>> Regarding iSCSI: In fact currently the limit is 0xffff for all iSCSI Targets < 2TB.
>> So I thought that its not obvious at all why a > 2TB target can handle bigger requests.
>>
>> To the root cause of this patch multiwrite_merge I still have some thoughts:
>> - why are we merging requests for raw (especially host devices and/or iSCSI?)
>> The original patch from Kevin was to mitigate a QCOW2 performance regression.
> The problem wasn't in qcow2, though, it just became more apparent there
> because lots of small requests are deadly to performance during cluster
> allocation. Installation simply took ages compared to IDE. If you do a
> real benchmark, you'll probably see (smaller) differences with raw, too.
>
> The core problem is virtio-blk getting much smaller requests. IIRC, I
> got an average of 128k-512k per request for IDE and something as poor as
> 4k-32k for virtio-blk. If I read this thread correctly, you're saying
> that this is still the case. I suspect there is something wrong with the
> guest driver, but somebody would have to dig into that.
This seems to be the case. I will check if this disappears with most
recent kernels virtio-blk versions.
>
>> For iSCSI the qiov concats are destroying all the zerocopy efforts we made.
> If this is true, it just means that the iscsi driver sucks for vectored
> I/O and needs to be fixed.
It works quite well, I misunderstood the iovec_concat routine at first. I thought
it was copying payload data around. The overhead for bilding the qiov structure
only should be neglectible.
>
>> - should we only merge requests within the same cluster?
> Does it hurt to merge everything we can? The block driver needs to be
> able to take things apart anyway, the large request could come from
> somewhere else (guest, block job, builtin NBD server, etc.)
I was just thinking. It was unclear what the original intention was.
My concern was that merging too much will increase latency for
the specific I/O even if it increases throughput.
>
>> - why is there no multiread_merge?
> Because nobody implemented it. :-)
Maybe its worth looking at this. Taking the multiwrite_merge stuff as
a basis it shouldn't be too hard.
>
> As I said above, writes hurt a lot because of qcow2 cluster allocation.
> Reads are probably losing some performance as well (someone would need
> to check this), but processing them separately isn't quite as painful.
I will try to sort that out.
Peter
next prev parent reply other threads:[~2014-09-23 8:55 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-05 16:51 [Qemu-devel] [PATCH 0/4] introduce max_transfer_length Peter Lieven
2014-09-05 16:51 ` [Qemu-devel] [PATCH 1/4] BlockLimits: " Peter Lieven
2014-09-05 16:51 ` [Qemu-devel] [PATCH 2/4] block: immediately cancel oversized read/write requests Peter Lieven
2014-09-08 13:44 ` Benoît Canet
2014-09-08 13:49 ` Paolo Bonzini
2014-09-08 13:56 ` Peter Lieven
2014-09-08 13:58 ` Paolo Bonzini
2014-09-08 14:35 ` Peter Lieven
2014-09-08 14:42 ` Paolo Bonzini
2014-09-08 14:54 ` Peter Lieven
2014-09-23 8:47 ` Kevin Wolf
2014-09-23 8:55 ` Peter Lieven [this message]
2014-09-23 9:09 ` Kevin Wolf
2014-09-08 15:13 ` ronnie sahlberg
2014-09-08 15:15 ` Paolo Bonzini
2014-09-08 15:18 ` Peter Lieven
2014-09-08 15:27 ` Paolo Bonzini
2014-09-08 16:18 ` Peter Lieven
2014-09-08 16:29 ` Paolo Bonzini
2014-09-12 11:43 ` Peter Lieven
2014-09-18 14:12 ` Paolo Bonzini
2014-09-18 14:16 ` Peter Lieven
2014-09-18 14:17 ` Paolo Bonzini
2014-09-18 22:57 ` Peter Lieven
2014-09-08 15:16 ` Peter Lieven
2014-09-05 16:51 ` [Qemu-devel] [PATCH 3/4] block/iscsi: set max_transfer_length Peter Lieven
2014-09-05 16:51 ` [Qemu-devel] [PATCH 4/4] block: avoid creating oversized writes in multiwrite_merge Peter Lieven
2014-09-18 14:13 ` Paolo Bonzini
2014-09-18 22:56 ` Peter Lieven
2014-09-19 13:33 ` Paolo Bonzini
2014-09-22 9:43 ` Peter Lieven
2014-09-22 19:06 ` Paolo Bonzini
2014-09-23 6:15 ` Peter Lieven
2014-09-23 8:59 ` Kevin Wolf
2014-09-23 9:04 ` Peter Lieven
2014-09-23 9:32 ` Peter Lieven
2014-09-23 9:47 ` Kevin Wolf
2014-09-23 9:52 ` Peter Lieven
2014-09-23 10:05 ` Kevin Wolf
2014-09-30 7:26 ` Peter Lieven
2014-09-30 8:03 ` Kevin Wolf
2014-09-05 17:05 ` [Qemu-devel] [PATCH 0/4] introduce max_transfer_length ronnie sahlberg
2014-09-05 19:52 ` Peter Lieven
2014-09-05 21:22 ` ronnie sahlberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5421356C.3030108@kamp.de \
--to=pl@kamp.de \
--cc=benoit.canet@irqsave.net \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=ronniesahlberg@gmail.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.