All of lore.kernel.org
 help / color / mirror / Atom feed
From: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
To: Ingo Molnar <mingo@elte.hu>
Cc: David Miller <davem@davemloft.net>,
	Ulrich Drepper <drepper@redhat.com>,
	Andrew Morton <akpm@osdl.org>, netdev <netdev@vger.kernel.org>,
	Zach Brown <zach.brown@oracle.com>,
	Christoph Hellwig <hch@infradead.org>,
	Chase Venters <chase.venters@clientec.com>,
	Johann Borck <johann.borck@densedata.com>,
	linux-kernel@vger.kernel.org, Jeff Garzik <jeff@garzik.org>,
	Jamal Hadi Salim <hadi@cyberus.ca>
Subject: Re: [take29 0/8] kevent: Generic event handling mechanism.
Date: Fri, 29 Dec 2006 16:14:53 +0300	[thread overview]
Message-ID: <20061229131452.GA5641@2ka.mipt.ru> (raw)
In-Reply-To: <20061229125427.GA23893@elte.hu>

On Fri, Dec 29, 2006 at 01:54:27PM +0100, Ingo Molnar (mingo@elte.hu) wrote:
> > > > Generic event handling mechanism.
> > > 
> > > i see it covers alot of event sources, but i cannot see block IO 
> > > notifications. Am i missing something?
> > 
> > Depending on what it is :) If you mean kevent based AIO, then it was 
> > dropped to reduce size of the patchset, and in favour of new AIO 
> > design.
> 
> yes, kevent based AIO. Could you please re-add it, preferably ontop of 
> Suparna's AIO patchset? I dont see how a "generic event handling 
> mechanism" can exclude block IO because we really need to see how it 
> plugs into (and plays along with) block AIO and how it performs relative 
> to block AIO to be able to judge whether this API and infrastructure 
> should be included in the kernel in its current form.

I like new design much more than my previous kevent based approach and
existing repeated call approach. I plan to start working on it jst after
New Year vacations are over (in about a week or two, it is the longest
vacations of the year in Russia, which are spent in a way which does not 
allow to hack or perform any other usefull work).
Kevent AIO was completely different thing than Suparna's AIO, and
although it hooked into block/fs subsystem on a bit different layer (I
exported ->get_block() callback), it was possible to fully separate AIO
from main code.

> > Other kinds of read/write notifications can be handled by poll/select 
> > notifications.
> 
> but poll/select notifications are just a second-degree way of doing an 
> IO state machine, and they are mostly there in kevents for completeness 
> and compatibility.

Yes, indeed.

> To be able to judge a "generic" event mechanism it really must support 
> block IO as well, natively. Without that we'd have the following obscene 
> API situation:
> 
>  - poll()/select(): supports everything but is slow and inaccurate
>  - epoll(): more modern API ontop of poll notifications
>  - async IO: supports block IO

Network AIO should not be different from block IO - it is essentially
the same mechanisms, which just have different lower layer from where
callbacks are invoked. 

>  - kevent supports almost everything /except/ block IO
> 
> so what we need is for kevents to support /all/ the important 
> high-performance event types natively:
> 
>  - networking
>  - block IO
>  - VFS namespace
>  - timers
> 
> (rarer things like mouse/input events can stay with poll notifications)
> 
> and it is /especially/ important to include block IO events in kevents 
> to be able to judge its performance and scalability relative to the 
> async IO API and infrastructure.

Yes, async IO is a significant part, and will be implemented, IMHO, new
design I highlighted in linux-fsdevel@ in AIO related thread is the way
to go (at least I will imlement it that way).

> 	Ingo

-- 
	Evgeniy Polyakov

  reply	other threads:[~2006-12-29 13:16 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <3154985aa0591036@2ka.mipt.ru>
2006-12-17 13:53 ` [take28-resend_2->0 0/8] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-12-17 13:53   ` [take28-resend_2->0 1/8] kevent: Description Evgeniy Polyakov
2006-12-17 13:53     ` [take28-resend_2->0 2/8] kevent: Core files Evgeniy Polyakov
2006-12-17 13:53       ` [take28-resend_2->0 3/8] kevent: poll/select() notifications Evgeniy Polyakov
2006-12-17 13:53         ` [take28-resend_2->0 4/8] kevent: Socket notifications Evgeniy Polyakov
2006-12-17 13:53           ` [take28-resend_2->0 5/8] kevent: Timer notifications Evgeniy Polyakov
2006-12-17 13:53             ` [take28-resend_2->0 6/8] kevent: Pipe notifications Evgeniy Polyakov
2006-12-17 13:53               ` [take28-resend_2->0 7/8] kevent: Signal notifications Evgeniy Polyakov
2006-12-17 13:53                 ` [take28-resend_2->0 8/8] kevent: Kevent posix timer notifications Evgeniy Polyakov
2006-12-19  3:47   ` [take28-resend_2->0 0/8] kevent: Generic event handling mechanism Ulrich Drepper
2006-12-19  4:01     ` Randy Dunlap
2006-12-19  4:51     ` Evgeniy Polyakov
2006-12-19  6:21       ` Ulrich Drepper
2006-12-19  6:38         ` Evgeniy Polyakov
2006-12-19  8:01           ` Ulrich Drepper
2006-12-19  8:56             ` Evgeniy Polyakov
2006-12-21  9:14 ` [take28-resend_1->0 " Evgeniy Polyakov
2006-12-21  9:14   ` [take28-resend_1->0 1/8] kevent: Description Evgeniy Polyakov
2006-12-21  9:14     ` [take28-resend_1->0 2/8] kevent: Core files Evgeniy Polyakov
2006-12-21  9:14       ` [take28-resend_1->0 3/8] kevent: poll/select() notifications Evgeniy Polyakov
2006-12-21  9:14         ` [take28-resend_1->0 4/8] kevent: Socket notifications Evgeniy Polyakov
2006-12-21  9:14           ` [take28-resend_1->0 5/8] kevent: Timer notifications Evgeniy Polyakov
2006-12-21  9:14             ` [take28-resend_1->0 6/8] kevent: Pipe notifications Evgeniy Polyakov
2006-12-21  9:14               ` [take28-resend_1->0 7/8] kevent: Signal notifications Evgeniy Polyakov
2006-12-21  9:14                 ` [take28-resend_1->0 8/8] kevent: Kevent posix timer notifications Evgeniy Polyakov
2006-12-21 10:35   ` [take28-resend_1->0 0/8] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-12-21 10:41     ` Jeff Garzik
2006-12-21 10:49       ` Evgeniy Polyakov
2006-12-21 10:57         ` Evgeniy Polyakov
2006-12-21 13:48         ` jamal
2006-12-21 14:04           ` Evgeniy Polyakov
2006-12-21 14:21             ` jamal
2006-12-21 14:23               ` Evgeniy Polyakov
2006-12-21 14:36                 ` Evgeniy Polyakov
2006-12-21 14:40                   ` jamal
2006-12-21 14:46                     ` Evgeniy Polyakov
2006-12-21 16:42                       ` jamal
2006-12-21 16:51                         ` Evgeniy Polyakov
2006-12-23 16:51 ` [take29 " Evgeniy Polyakov
2006-12-23 16:51   ` [take29 1/8] kevent: Description Evgeniy Polyakov
2006-12-23 16:51     ` [take29 2/8] kevent: Core files Evgeniy Polyakov
2006-12-23 16:51       ` [take29 3/8] kevent: poll/select() notifications Evgeniy Polyakov
2006-12-23 16:51         ` [take29 4/8] kevent: Socket notifications Evgeniy Polyakov
2006-12-23 16:51           ` [take29 5/8] kevent: Timer notifications Evgeniy Polyakov
2006-12-23 16:51             ` [take29 6/8] kevent: Pipe notifications Evgeniy Polyakov
2006-12-23 16:51               ` [take29 7/8] kevent: Signal notifications Evgeniy Polyakov
2006-12-23 16:51                 ` [take29 8/8] kevent: Kevent posix timer notifications Evgeniy Polyakov
2006-12-23 17:10   ` [take29 0/8] kevent: Generic event handling mechanism Evgeniy Polyakov
2006-12-28 15:56   ` Ingo Molnar
2006-12-29  8:48     ` Evgeniy Polyakov
2006-12-28 16:01   ` Ingo Molnar
2006-12-29  8:55     ` Evgeniy Polyakov
2006-12-29 12:54       ` Ingo Molnar
2006-12-29 13:14         ` Evgeniy Polyakov [this message]
2006-12-29 13:24           ` Ingo Molnar
2006-12-29 12:25 ` [take30 0/9] " Evgeniy Polyakov
2006-12-29 12:25   ` [take30 1/9] kevent: Description Evgeniy Polyakov
2006-12-29 12:25     ` [take30 2/9] kevent: Core files Evgeniy Polyakov
2006-12-29 12:25       ` [take30 3/9] kevent: poll/select() notifications Evgeniy Polyakov
2006-12-29 12:25         ` [take30 4/9] kevent: Socket notifications Evgeniy Polyakov
2006-12-29 12:25           ` [take30 5/9] kevent: Timer notifications Evgeniy Polyakov
2006-12-29 12:25             ` [take30 6/9] kevent: Pipe notifications Evgeniy Polyakov
2006-12-29 12:25               ` [take30 7/9] kevent: Signal notifications Evgeniy Polyakov
2006-12-29 12:25                 ` [take30 8/9] kevent: Kevent posix timer notifications Evgeniy Polyakov
2006-12-29 12:25                   ` [take30 9/9] kevent: Private userspace notifications Evgeniy Polyakov
2007-01-08 19:25 ` [take31 0/10] kevent: Generic event handling mechanism Evgeniy Polyakov
2007-01-08 19:25   ` [take31 1/10] kevent: Description Evgeniy Polyakov
2007-01-08 19:25     ` [take31 2/10] kevent: Core files Evgeniy Polyakov
2007-01-08 19:25       ` [take31 3/10] kevent: poll/select() notifications Evgeniy Polyakov
2007-01-08 19:25         ` [take31 4/10] kevent: Socket notifications Evgeniy Polyakov
2007-01-08 19:25           ` [take31 5/10] kevent: Timer notifications Evgeniy Polyakov
2007-01-08 19:25             ` [take31 6/10] kevent: Pipe notifications Evgeniy Polyakov
2007-01-08 19:25               ` [take31 7/10] kevent: Signal notifications Evgeniy Polyakov
2007-01-08 19:26                 ` [take31 8/10] kevent: Kevent posix timer notifications Evgeniy Polyakov
2007-01-08 19:26                   ` [take31 9/10] kevent: Private userspace notifications Evgeniy Polyakov
2007-01-08 19:26                     ` [take31 10/10] kevent: Kevent based AIO (aio_sendfile()) Evgeniy Polyakov

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=20061229131452.GA5641@2ka.mipt.ru \
    --to=johnpol@2ka.mipt.ru \
    --cc=akpm@osdl.org \
    --cc=chase.venters@clientec.com \
    --cc=davem@davemloft.net \
    --cc=drepper@redhat.com \
    --cc=hadi@cyberus.ca \
    --cc=hch@infradead.org \
    --cc=jeff@garzik.org \
    --cc=johann.borck@densedata.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=zach.brown@oracle.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.