public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: carsteno-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org
Cc: "kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
	<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	Christian Borntraeger
	<cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
	mschwid2-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org
Subject: Re: [PATCH/RFC 6/9] virtual block device driver
Date: Mon, 14 May 2007 17:39:16 +0300	[thread overview]
Message-ID: <46487494.1070802@qumranet.com> (raw)
In-Reply-To: <464862E9.7020105-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>

Carsten Otte wrote:
>
> Avi Kivity wrote:
>> Is this the host file descriptor?  If so, we want to use something 
>> more abstract (if the host side is in kernel, there will be no fd, or 
>> if the device is implemented using >1 files (or <1 files)).
> This is indeed the host file descriptor. Host userland uses sys_open 
> to retrieve it. I see the beauty of having the remote side in the 
> kernel, however I fail to see why we would want to reinvent the wheel: 
> asynchronous IO with O_DIRECT (to avoid host caching) does just what 
> we want.

I don't see an immediate need to put the host-side driver in the kernel, 
but I don't want to embed the host fd (which is an implementation 
detail) into the host/guest ABI.  There may not even be a host fd.

> System call latency adds to the in-kernel approach here.

I don't understand this.

>
>> We'll want scatter/gather here.
> If you want scatter/gather, you have to do request merging in the 
> guest and use the do_request function of the block queue. That is 
> because in make_request you only have a single chunk at hand.
> With do_request, you would do that request merging twice and get twice 
> the block device plug latency for nothing. The host is the better 
> place to do IO scheduling, because it can optimize over IO from all 
> guest machines.

The bio layer already has scatter/gather (basically, a biovec), but the 
aio api (which you copy) doesn't.  The basic request should be a bio, 
not a bio page.

I don't think the guest driver needs to do its own merging.

>>
>>> +};
>>> +
>>> +struct vdisk_iocb_container {
>>> +    struct iocb iocb;
>>> +    struct bio *bio;
>>> +    struct vdisk_device *dev;
>>> +    int ctx_index;
>>> +    unsigned long context;
>>> +    struct list_head list;
>>> +};
>>> +
>>> +// from aio_abi.h
>>> +typedef enum io_iocb_cmd {
>>> +    IO_CMD_PREAD = 0,
>>> +    IO_CMD_PWRITE = 1,
>>> +
>>> +    IO_CMD_FSYNC = 2,
>>> +    IO_CMD_FDSYNC = 3,
>>> +
>>> +    IO_CMD_POLL = 5,
>>> +    IO_CMD_NOOP = 6,
>>> +} io_iocb_cmd_t;
>>>   
>>
>> Our own commands, please.  We need READV, WRITEV, and a barrier for 
>> journalling filesystems.  FDSYNC should work as a barrier, but is 
>> wasteful.  The FSYNC/FDSYNC distinction is meaningless.  POLL/NOOP 
>> are irrelevant.
> This matches the api of libaio. If userland translates this into 
> struct iocp, this makes sense. The barrier however is a general 
> problem with this approach: today, the asynchronous IO userspace api 
> does not allow to submit a barrier. Therefore, our make_request 
> function in the guest returns -ENOTSUPP in the guest which forces the 
> file system to wait for IO completion. This does sacrifice some 
> performance. The right thing to do would be to add the possibility to 
> submit a barrier to the kernel aio interface.

Right.  But the ABI needs to support barriers regardless of host kernel 
support.  When unavailable, barriers can be emulated by waiting for the 
request queue to flush itself.  If we do implement the host side in the 
kernel, then barriers become available.

>
>> We want to amortize the hypercall over multiple bios (but maybe 
>> you're doing that -- I'm not 100% up to speed on the block layer)
> We don't. We do one per bio, and I agree that this is a major 
> disadvantage of this approach. Since IO is slow (compared to 
> vmenter/vmexit), it pays back from to better IO scheduling. On our 
> platform, this approach outperforms the scatter/gather do_request one.

I/O may be slow, but you can have a lot more disks than cpus.

For example, if an I/O takes 1ms, and you have 100 disks, then you can 
issue 100K IOPS.  With one hypercall per request, that's ~50% of a cpu 
(at about 5us per hypercall that goes all the way to userspace).  That's 
not counting the overhead of calling io_submit().


-- 
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

  parent reply	other threads:[~2007-05-14 14:39 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1178903957.25135.13.camel@cotte.boeblingen.de.ibm.com>
     [not found] ` <1178903957.25135.13.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 17:35   ` [PATCH/RFC 2/9] s390 virtualization interface Carsten Otte
2007-05-11 17:35   ` [PATCH/RFC 3/9] s390 guest detection Carsten Otte
2007-05-11 17:35   ` [PATCH/RFC 4/9] Basic guest virtual devices infrastructure Carsten Otte
     [not found]     ` <1178904958.25135.31.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 20:06       ` Arnd Bergmann
2007-05-14 11:26       ` Avi Kivity
     [not found]         ` <46484753.30602-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 11:43           ` Carsten Otte
     [not found]             ` <46484B5D.6080605-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 12:00               ` [PATCH/RFC 4/9] Basic guest virtualdevices infrastructure Dor Laor
     [not found]                 ` <64F9B87B6B770947A9F8391472E032160BC7483D-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-14 13:32                   ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 5/9] s390 virtual console for guests Carsten Otte
     [not found]     ` <1178904960.25135.32.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 19:00       ` Anthony Liguori
     [not found]         ` <4644BD3C.8040901-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-11 19:42           ` Christian Bornträger
2007-05-12  8:07           ` Carsten Otte
2007-05-14 16:23           ` Christian Bornträger
     [not found]             ` <200705141823.13424.cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 16:48               ` Christian Borntraeger
     [not found]                 ` <200705141848.18996.borntrae-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 17:49                   ` Anthony Liguori
     [not found]                     ` <4648A11D.3050607-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-15  0:27                       ` Arnd Bergmann
2007-05-15  7:54                       ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 6/9] virtual block device driver Carsten Otte
     [not found]     ` <1178904963.25135.33.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-14 11:49       ` Avi Kivity
     [not found]         ` <46484CDF.505-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 13:23           ` Carsten Otte
     [not found]             ` <464862E9.7020105-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 14:39               ` Avi Kivity [this message]
     [not found]                 ` <46487494.1070802-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-15 11:47                   ` Carsten Otte
     [not found]                     ` <46499DE9.9090202-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-16 10:01                       ` Avi Kivity
2007-05-14 11:52       ` Avi Kivity
     [not found]         ` <46484D84.3060601-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 13:26           ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 7/9] Virtual network guest " Carsten Otte
     [not found]     ` <1178904965.25135.34.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 19:44       ` ron minnich
     [not found]         ` <13426df10705111244w1578ebedy8259bc42ca1f588d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-11 20:12           ` Anthony Liguori
     [not found]             ` <4644CE15.6080505-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 21:15               ` Eric Van Hensbergen
     [not found]                 ` <a4e6962a0705111415n47e77a15o331b59cf2a03b4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-11 21:47                   ` Anthony Liguori
     [not found]                     ` <4644E456.2060507-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 22:21                       ` Eric Van Hensbergen
     [not found]                         ` <a4e6962a0705111521v2d451ddcjecf209e2031c85af-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-16 17:28                           ` Anthony Liguori
     [not found]                             ` <464B3F20.4030904-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 17:38                               ` Daniel P. Berrange
     [not found]                                 ` <20070516173822.GD16863-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-05-17  9:29                                   ` Carsten Otte
     [not found]                                     ` <464C2069.20909-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-17 14:22                                       ` Anthony Liguori
     [not found]                                         ` <464C651F.5070700-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-21 11:11                                           ` Christian Borntraeger
2007-05-16 17:41                               ` Eric Van Hensbergen
     [not found]                                 ` <a4e6962a0705161041s5393c1a6wc455b20ff3fe8106-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-16 18:47                                   ` Anthony Liguori
     [not found]                                     ` <464B51A8.7050307-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 19:33                                       ` Eric Van Hensbergen
2007-05-16 17:45                               ` Gregory Haskins
     [not found]                                 ` <464B0ADB.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 18:39                                   ` Anthony Liguori
     [not found]                                     ` <464B4FEB.7070300-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-16 18:57                                       ` Gregory Haskins
     [not found]                                         ` <464B1B9C.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-05-16 19:10                                           ` Anthony Liguori
     [not found]                                             ` <464B572C.6090800-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-17  4:24                                               ` Rusty Russell
     [not found]                                                 ` <1179375881.21871.83.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-05-17 16:13                                                   ` Anthony Liguori
     [not found]                                                     ` <464C7F45.50908-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-17 23:34                                                       ` Rusty Russell
2007-05-21  9:07                                               ` Christian Borntraeger
     [not found]                                                 ` <OFC1AADF6F.DB57C7AC-ON422572E2.0030BE22-422572E2.0032174C-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-21  9:27                                                   ` Cornelia Huck
2007-05-21 11:28                                                   ` Arnd Bergmann
     [not found]                                                     ` <200705211328.04565.arnd-r2nGTMty4D4@public.gmane.org>
2007-05-21 11:56                                                       ` Cornelia Huck
     [not found]                                                         ` <20070521135628.17a4f9cc-XQvu0L+U/CiXI4yAdoq52KN5r0PSdgG1zG2AekJRRhI@public.gmane.org>
2007-05-21 13:53                                                           ` Arnd Bergmann
2007-05-21 18:45                                                       ` Anthony Liguori
     [not found]                                                         ` <4651E8D1.4010208-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-21 23:09                                                           ` ron minnich
     [not found]                                                             ` <13426df10705211609j613032c6j373d9a4660f8ec6c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22  0:29                                                               ` Anthony Liguori
     [not found]                                                                 ` <46523952.7070405-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22  0:45                                                                   ` ron minnich
     [not found]                                                                     ` <13426df10705211745r69acc95ai458b2192fe0d0132-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22  1:13                                                                       ` Anthony Liguori
2007-05-22  1:34                                                                   ` Eric Van Hensbergen
     [not found]                                                                     ` <a4e6962a0705211834s4db19c7t3b95765bf2c092d7-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22  1:42                                                                       ` Anthony Liguori
     [not found]                                                                         ` <46524A79.8070004-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22  5:17                                                                           ` Avi Kivity
     [not found]                                                                             ` <46527CD9.5000603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-22 12:49                                                                               ` Eric Van Hensbergen
     [not found]                                                                                 ` <a4e6962a0705220549j1c9565f2ic160c672b74aea35-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 12:56                                                                                   ` Christoph Hellwig
     [not found]                                                                                     ` <20070522125655.GA4506-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2007-05-22 14:50                                                                                       ` Eric Van Hensbergen
     [not found]                                                                                         ` <a4e6962a0705220750s5abe380dg8dd8e7d0b84de7cd-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 15:05                                                                                           ` Anthony Liguori
     [not found]                                                                                             ` <465306AE.5080902-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-22 15:31                                                                                               ` ron minnich
2007-05-22 16:25                                                                                               ` Eric Van Hensbergen
     [not found]                                                                                                 ` <a4e6962a0705220925l580f136we269380fe3c9691c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 17:00                                                                                                   ` ron minnich
     [not found]                                                                                                     ` <13426df10705221000i749badc5h8afe4f2fc95bc2ce-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 17:06                                                                                                       ` Christoph Hellwig
     [not found]                                                                                                         ` <20070522170628.GA16624-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2007-05-22 17:34                                                                                                           ` ron minnich
     [not found]                                                                                                             ` <13426df10705221034k7baf5bccrc77aabca8c9e225c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-22 20:03                                                                                                               ` Dor Laor
     [not found]                                                                                                                 ` <64F9B87B6B770947A9F8391472E032160BF29F1E-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-22 20:10                                                                                                                   ` ron minnich
2007-05-22 22:56                                                                                                                   ` Nakajima, Jun
     [not found]                                                                                                                     ` <8FFF7E42E93CC646B632AB40643802A8032793AC-1a9uaKK1+wJcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-05-23  8:15                                                                                                                       ` Carsten Otte
     [not found]                                                                                                                         ` <4653F807.2010209-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-23 12:25                                                                                                                           ` Avi Kivity
2007-05-23 14:12                                                                                                                           ` Eric Van Hensbergen
     [not found]                                                                                                                             ` <a4e6962a0705230712pd8c2958m9dee6b2ccec0899d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-23 23:02                                                                                                                               ` Arnd Bergmann
     [not found]                                                                                                                                 ` <200705240102.40795.arnd-r2nGTMty4D4@public.gmane.org>
2007-05-23 23:57                                                                                                                                   ` Eric Van Hensbergen
     [not found]                                                                                                                                     ` <a4e6962a0705231657n65946ba4n74393f7028b6d61c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-24  0:07                                                                                                                                       ` Eric Van Hensbergen
2007-05-23 12:21                                                                                                                       ` Avi Kivity
2007-05-23 12:16                                                                                                           ` Avi Kivity
     [not found]                                                                                                             ` <465430B2.7050101-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-23 12:20                                                                                                               ` Christoph Hellwig
2007-05-23 12:20                                                                                                       ` Avi Kivity
2007-05-23 11:55                                                                                           ` Avi Kivity
2007-05-22 13:08                                                                                   ` Anthony Liguori
2007-05-18  5:31                               ` ron minnich
     [not found]                                 ` <13426df10705172231y5e93d1f5y398d4f187a8978e1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-18 14:31                                   ` Anthony Liguori
     [not found]                                     ` <464DB8A5.6080503-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-18 15:14                                       ` ron minnich
2007-05-11 21:51               ` ron minnich
2007-05-12  8:46           ` Carsten Otte
     [not found]             ` <46457EF9.2070706-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-13 12:04               ` Dor Laor
     [not found]                 ` <64F9B87B6B770947A9F8391472E032160BC74612-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-13 14:49                   ` Anthony Liguori
     [not found]                     ` <4647257F.4020900-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-13 16:23                       ` Dor Laor
     [not found]                         ` <64F9B87B6B770947A9F8391472E032160BC74675-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-05-13 16:49                           ` Anthony Liguori
     [not found]                             ` <4647418A.2040201-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-05-13 17:06                               ` Muli Ben-Yehuda
     [not found]                                 ` <20070513170608.GA4343-WD1JZD8MxeCTrf4lBMg6DdBPR1lH4CV8@public.gmane.org>
2007-05-13 20:31                                   ` Dor Laor
2007-05-14  2:39                               ` Rusty Russell
2007-05-14 11:53                               ` Avi Kivity
2007-05-14 12:05           ` Avi Kivity
     [not found]             ` <46485070.3000106-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-14 12:24               ` Christian Bornträger
     [not found]                 ` <200705141424.44423.cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-05-14 12:32                   ` Avi Kivity
2007-05-14 13:36               ` Carsten Otte
2007-05-11 17:36   ` [PATCH/RFC 8/9] Virtual network host switch support Carsten Otte
     [not found]     ` <1178904968.25135.35.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-05-11 20:21       ` Anthony Liguori
     [not found]         ` <4644D048.7060106-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2007-05-11 20:50           ` Christian Bornträger
2007-05-11 17:36   ` [PATCH/RFC 9/9] Fix system<->user misaccount of interpreted execution Carsten Otte

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=46487494.1070802@qumranet.com \
    --to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
    --cc=carsteno-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    --cc=cborntra-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=mschwid2-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.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