All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Lieven <pl@kamp.de>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Benoît Canet" <benoit.canet@irqsave.net>,
	"Kevin Wolf" <kwolf@redhat.com>,
	"ronnie sahlberg" <ronniesahlberg@gmail.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Max Reitz" <mreitz@redhat.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/4] block: immediately cancel oversized read/write requests
Date: Fri, 12 Sep 2014 13:43:25 +0200	[thread overview]
Message-ID: <5412DC5D.7050406@kamp.de> (raw)
In-Reply-To: <540DD986.8010301@redhat.com>

Am 08.09.2014 um 18:29 schrieb Paolo Bonzini:
> Il 08/09/2014 18:18, Peter Lieven ha scritto:
>>>> When copying data, gparted will try using very large I/O sizes.  Of
>>>> course if something breaks it will just use a smaller size, but it would
>>>> make performance worse.
>>>>
>>>> I tried now (with local storage, not virtual---but with such large block
>>>> sizes it's disk bound anyway, one request can take 0.1 seconds to
>>>> execute) and a 2 MB block size is 20% slower than 16 MB block size on
>>>> your usual 3.5" rotational SATA disk.
>>>>
>> can you share with what command exactly you ran these tests?
>>
>> i tried myself and found that without multiwrite_merge i was not able to create a request bigger than 0xffff sectors from inside linux.
> On a different machine:
>
> $ time dd if=/dev/zero of=test bs=16777216 count=30 oflag=direct
> real	0m13.497s
> user	0m0.001s
> sys	0m0.541s
>
> $ time dd if=/dev/zero of=test2 bs=1048576 count=480 oflag=direct
> real	0m15.835s
> user	0m0.005s
> sys	0m0.770s
>
> The bigger block size is 17% faster; for disk-to-disk copy:
>
> $ time dd if=test of=test3 bs=16777216 count=30 iflag=direct oflag=direct
> real	0m26.075s
> user	0m0.001s
> sys	0m0.678s
>
> $ time dd if=test2 of=test4 bs=1048576 count=480 iflag=direct oflag=direct
> real	0m45.210s
> user	0m0.005s
> sys	0m1.145s
>
> The bigger block size is 73% faster.

I perfectly believe that 16MB blocksize is faster than 2MB. That is true for iSCSI as well.

However, I do not see requests of this size coming in via virtio-blk when I ran:

dd if=/dev/zero of=test bs=16777216 count=30 oflag=direct.

As you can see from the multiwrite_merge trace the merging has never been stopped because of
the max_transfer_length. The question is, why are the I/O requests not coming in as specified?

multiwrite_merge: num_reqs 15 -> 1
iscsi_co_writev: sector_num 0 nb_sectors 15360 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 17 -> 1
iscsi_co_writev: sector_num 15360 nb_sectors 17408 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 32768 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 44032 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 63488 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 12 -> 1
iscsi_co_writev: sector_num 65536 nb_sectors 12288 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 18 -> 1
iscsi_co_writev: sector_num 77824 nb_sectors 18432 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 96256 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 12 -> 1
iscsi_co_writev: sector_num 98304 nb_sectors 12288 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 110592 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 1 -> 1
iscsi_co_writev: sector_num 130048 nb_sectors 1024 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 131072 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 142336 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 161792 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 12 -> 1
iscsi_co_writev: sector_num 163840 nb_sectors 12288 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 176128 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 1 -> 1
iscsi_co_writev: sector_num 195584 nb_sectors 1024 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 7 -> 1
iscsi_co_writev: sector_num 196608 nb_sectors 7168 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 18 -> 1
iscsi_co_writev: sector_num 203776 nb_sectors 18432 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 7 -> 1
iscsi_co_writev: sector_num 222208 nb_sectors 7168 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 229376 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 240640 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 260096 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 262144 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 18 -> 1
iscsi_co_writev: sector_num 273408 nb_sectors 18432 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 3 -> 1
iscsi_co_writev: sector_num 291840 nb_sectors 3072 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 12 -> 1
iscsi_co_writev: sector_num 294912 nb_sectors 12288 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 307200 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 1 -> 1
iscsi_co_writev: sector_num 326656 nb_sectors 1024 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 327680 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 338944 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 358400 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 360448 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 371712 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 391168 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 393216 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 14 -> 1
iscsi_co_writev: sector_num 404480 nb_sectors 14336 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 7 -> 1
iscsi_co_writev: sector_num 418816 nb_sectors 7168 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 425984 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 20 -> 1
iscsi_co_writev: sector_num 437248 nb_sectors 20480 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 1 -> 1
iscsi_co_writev: sector_num 457728 nb_sectors 1024 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 458752 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 18 -> 1
iscsi_co_writev: sector_num 470016 nb_sectors 18432 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 3 -> 1
iscsi_co_writev: sector_num 488448 nb_sectors 3072 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 491520 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 502784 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 522240 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 524288 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 18 -> 1
iscsi_co_writev: sector_num 535552 nb_sectors 18432 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 3 -> 1
iscsi_co_writev: sector_num 553984 nb_sectors 3072 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 557056 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 568320 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 587776 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 589824 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 601088 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 620544 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 12 -> 1
iscsi_co_writev: sector_num 622592 nb_sectors 12288 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 18 -> 1
iscsi_co_writev: sector_num 634880 nb_sectors 18432 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 653312 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 655360 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 666624 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 686080 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 688128 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 19 -> 1
iscsi_co_writev: sector_num 699392 nb_sectors 19456 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 718848 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 9 -> 1
iscsi_co_writev: sector_num 720896 nb_sectors 9216 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 18 -> 1
iscsi_co_writev: sector_num 730112 nb_sectors 18432 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 5 -> 1
iscsi_co_writev: sector_num 748544 nb_sectors 5120 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 12 -> 1
iscsi_co_writev: sector_num 753664 nb_sectors 12288 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 7 -> 1
iscsi_co_writev: sector_num 765952 nb_sectors 7168 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 6 -> 1
iscsi_co_writev: sector_num 773120 nb_sectors 6144 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 7 -> 1
iscsi_co_writev: sector_num 779264 nb_sectors 7168 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 786432 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 14 -> 1
iscsi_co_writev: sector_num 797696 nb_sectors 14336 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 5 -> 1
iscsi_co_writev: sector_num 812032 nb_sectors 5120 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 817152 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 8 -> 1
iscsi_co_writev: sector_num 819200 nb_sectors 8192 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 13 -> 1
iscsi_co_writev: sector_num 827392 nb_sectors 13312 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 6 -> 1
iscsi_co_writev: sector_num 840704 nb_sectors 6144 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 5 -> 1
iscsi_co_writev: sector_num 846848 nb_sectors 5120 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 851968 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 14 -> 1
iscsi_co_writev: sector_num 863232 nb_sectors 14336 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 6 -> 1
iscsi_co_writev: sector_num 877568 nb_sectors 6144 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 1 -> 1
iscsi_co_writev: sector_num 883712 nb_sectors 1024 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 884736 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 896000 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 5 -> 1
iscsi_co_writev: sector_num 907264 nb_sectors 5120 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 5 -> 1
iscsi_co_writev: sector_num 912384 nb_sectors 5120 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 11 -> 1
iscsi_co_writev: sector_num 917504 nb_sectors 11264 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 14 -> 1
iscsi_co_writev: sector_num 928768 nb_sectors 14336 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 5 -> 1
iscsi_co_writev: sector_num 943104 nb_sectors 5120 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 2 -> 1
iscsi_co_writev: sector_num 948224 nb_sectors 2048 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 12 -> 1
iscsi_co_writev: sector_num 950272 nb_sectors 12288 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 15 -> 1
iscsi_co_writev: sector_num 962560 nb_sectors 15360 bs->bl.max_transfer_length 65535
multiwrite_merge: num_reqs 5 -> 1
iscsi_co_writev: sector_num 977920 nb_sectors 5120 bs->bl.max_transfer_length 65535

Peter

>
> Paolo

  reply	other threads:[~2014-09-12 11:43 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
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 [this message]
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=5412DC5D.7050406@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.