From: Asias He <asias@redhat.com>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Sasha Levin <levinsasha928@gmail.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH 3/3] virtio-blk: Add bio-based IO path for virtio-blk
Date: Mon, 02 Jul 2012 10:45:05 +0800 [thread overview]
Message-ID: <4FF10B31.60609@redhat.com> (raw)
In-Reply-To: <87r4svxcjw.fsf@rustcorp.com.au>
On 07/02/2012 07:54 AM, Rusty Russell wrote:
> On Tue, 19 Jun 2012 10:51:18 +0800, Asias He <asias@redhat.com> wrote:
>> On 06/18/2012 07:39 PM, Sasha Levin wrote:
>>> On Mon, 2012-06-18 at 14:14 +0300, Dor Laor wrote:
>>>> On 06/18/2012 01:05 PM, Rusty Russell wrote:
>>>>> On Mon, 18 Jun 2012 16:03:23 +0800, Asias He<asias@redhat.com> wrote:
>>>>>> On 06/18/2012 03:46 PM, Rusty Russell wrote:
>>>>>>> On Mon, 18 Jun 2012 14:53:10 +0800, Asias He<asias@redhat.com> wrote:
>>>>>>>> This patch introduces bio-based IO path for virtio-blk.
>>>>>>>
>>>>>>> Why make it optional?
>>>>>>
>>>>>> request-based IO path is useful for users who do not want to bypass the
>>>>>> IO scheduler in guest kernel, e.g. users using spinning disk. For users
>>>>>> using fast disk device, e.g. SSD device, they can use bio-based IO path.
>>>>>
>>>>> Users using a spinning disk still get IO scheduling in the host though.
>>>>> What benefit is there in doing it in the guest as well?
>>>>
>>>> The io scheduler waits for requests to merge and thus batch IOs
>>>> together. It's not important w.r.t spinning disks since the host can do
>>>> it but it causes much less vmexits which is the key issue for VMs.
>>>
>>> Is the amount of exits caused by virtio-blk significant at all with
>>> EVENT_IDX?
>>
>> Yes. EVENT_IDX saves the number of notify and interrupt. Let's take the
>> interrupt as an example, The guest fires 200K request to host, the
>> number of interrupt is about 6K thanks to EVENT_IDX. The ratio is 200K /
>> 6K = 33. The ratio of merging is 40000K / 200K = 20.
>
> Confused. So, without merging we get 6k exits (per second?) How many
> do we get when we use the request-based IO path?
Sorry for the confusion. The numbers were collected from request-based
IO path where we can have the guest block layer merge the requests.
With the same workload in guest, the guest fires 200K requests to host
with merges enabled in guest (echo 0 > /sys/block/vdb/queue/nomerges),
while the guest fires 40000K requests to host with merges disabled in
guest (echo 2 > /sys/block/vdb/queue/nomerges). This show that the merge
in block layer reduces the total number of requests fire to host a lot
(40000K / 200K = 20).
The guest fires 200K requests to host with merges enabled in guest (echo
0 > /sys/block/vdb/queue/nomerges), the host fires 6K interrupts in
total for the 200K requests. This show that the ratio of interrupts
coalesced (200K / 6K = 33).
>
> If your device is slow, then you won't be able to make many requests per
> second: why worry about exit costs?
If a device is slow, the merge would merge more requests and reduce the
total number of requests to host. This saves exit costs, no?
> If your device is fast (eg. ram),
> you've already shown that your patch is a win, right?
Yes. Both on ramdisk and fast SSD device (e.g. FusionIO).
--
Asias
next prev parent reply other threads:[~2012-07-02 2:45 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-18 6:53 [PATCH v2 0/3] Improve virtio-blk performance Asias He
2012-06-18 6:53 ` [PATCH 1/3] block: Introduce __blk_segment_map_sg() helper Asias He
2012-06-18 21:31 ` Tejun Heo
2012-06-19 2:02 ` Asias He
2012-06-19 18:00 ` Tejun Heo
2012-06-18 6:53 ` [PATCH v2 2/3] block: Add blk_bio_map_sg() helper Asias He
2012-06-18 6:53 ` [PATCH 3/3] virtio-blk: Add bio-based IO path for virtio-blk Asias He
2012-06-18 7:46 ` Rusty Russell
2012-06-18 8:03 ` Asias He
2012-06-18 10:05 ` Rusty Russell
2012-06-18 11:14 ` Dor Laor
2012-06-18 11:39 ` Sasha Levin
2012-06-19 2:51 ` Asias He
2012-06-19 6:21 ` Dor Laor
2012-06-20 4:46 ` Asias He
2012-06-21 9:49 ` Dor Laor
2012-07-01 23:54 ` Rusty Russell
[not found] ` <87r4svxcjw.fsf@rustcorp.com.au>
2012-07-02 2:45 ` Asias He [this message]
2012-07-02 6:41 ` Rusty Russell
2012-07-03 0:39 ` Asias He
2012-07-04 2:40 ` Rusty Russell
2012-07-06 1:03 ` Asias He
2012-07-03 13:31 ` Paolo Bonzini
[not found] ` <4FF2F417.2010209@redhat.com>
2012-07-03 14:02 ` Asias He
2012-07-03 14:22 ` Ronen Hod
2012-07-03 14:28 ` Dor Laor
2012-07-04 14:10 ` Paolo Bonzini
2012-06-18 21:28 ` Tejun Heo
2012-06-19 2:39 ` Asias He
2012-06-18 10:13 ` Michael S. Tsirkin
2012-06-19 2:21 ` Asias He
2012-06-18 9:37 ` Stefan Hajnoczi
2012-06-18 10:21 ` Michael S. Tsirkin
2012-06-18 10:45 ` Stefan Hajnoczi
2012-06-19 2:30 ` Asias He
2012-06-18 9:14 ` [PATCH v2 0/3] Improve virtio-blk performance Stefan Hajnoczi
2012-06-18 9:39 ` Asias He
2012-06-18 10:58 ` Stefan Hajnoczi
2012-06-19 4:24 ` Asias He
2012-06-19 10:14 ` Stefan Hajnoczi
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=4FF10B31.60609@redhat.com \
--to=asias@redhat.com \
--cc=hch@lst.de \
--cc=kvm@vger.kernel.org \
--cc=levinsasha928@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.linux-foundation.org \
/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).