From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
stefanha@redhat.com, famz@redhat.com, mreitz@redhat.com,
jcody@redhat.com, eblake@redhat.com, pbonzini@redhat.com,
"Denis V. Lunev" <den@openvz.org>
Subject: Re: [Qemu-devel] [PATCH v2] mirror: double performance of the bulk stage if the disc is full
Date: Wed, 3 Aug 2016 15:20:22 +0300 [thread overview]
Message-ID: <57A1E186.70706@virtuozzo.com> (raw)
In-Reply-To: <20160803105233.GB4629@noname.redhat.com>
On 03.08.2016 13:52, Kevin Wolf wrote:
> Am 14.07.2016 um 19:19 hat Vladimir Sementsov-Ogievskiy geschrieben:
>> Mirror can do up to 16 in-flight requests, but actually on full copy
>> (the whole source disk is non-zero) in-flight is always 1. This happens
>> as the request is not limited in size: the data occupies maximum available
>> capacity of s->buf.
>>
>> The patch limits the size of the request to some artificial constant
>> (1 Mb here), which is not that big or small. This effectively enables
>> back parallelism in mirror code as it was designed.
>>
>> The result is important: the time to migrate 10 Gb disk is reduced from
>> ~350 sec to 170 sec.
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
> This broke qemu-iotests 109 for raw. Can you please check whether the
> output changes are expected, and send a fix either for the code or for
> the test case?
>
> Kevin
As mirror becomes "more asynchronous" after this patch, in this test we
have the following behaviour change:
old behaviour:
we create one sync request, which occupies all memory for in-flight
requests, so it is only one in-flight request. It fails and we see
BLOCK_JOB_COMPLETED (with zero progress) immediately after BLOCK_JOB_ERROR
new behaviour
several requests are created in parallel, so some of them are finished
with success and we see BLOCK_JOB_COMPLETED with some progress..
I'm afaraid that this "some progress" may depend on disk speed or other
environment factors, so simply update 109.out to new value is not good
solution.
Anyway, I think
+ if (s->ret < 0) {
+ return 0;
+ }
should be added before io request creation in mirror_iteration - to not
create new async reqs after error. This reduce "some progress", but is
is still not zero, as some of async req's was started before an error
has occured. Moreover, some req's was finished with success before this
error for first chank has occured.
So, the progress of the job in case of error becomes unpredicatable and
should be filtered in io tests.
--
Best regards,
Vladimir
prev parent reply other threads:[~2016-08-03 12:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-14 17:19 [Qemu-devel] [PATCH v2] mirror: double performance of the bulk stage if the disc is full Vladimir Sementsov-Ogievskiy
2016-07-18 15:36 ` Denis V. Lunev
2016-07-20 17:36 ` Denis V. Lunev
2016-07-20 19:08 ` Paolo Bonzini
2016-07-20 20:30 ` Denis V. Lunev
2016-07-22 16:41 ` Max Reitz
2016-07-26 2:47 ` Jeff Cody
2016-07-26 2:48 ` Jeff Cody
2016-08-03 10:52 ` Kevin Wolf
2016-08-03 12:20 ` Vladimir Sementsov-Ogievskiy [this message]
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=57A1E186.70706@virtuozzo.com \
--to=vsementsov@virtuozzo.com \
--cc=den@openvz.org \
--cc=eblake@redhat.com \
--cc=famz@redhat.com \
--cc=jcody@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).