lkml.org 
[lkml]   [2007]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3
    On Mon, Feb 26, 2007 at 03:15:18PM +0100, Ingo Molnar (mingo@elte.hu) wrote:
    > > > your whole reasoning seems to be faith-based:
    > > >
    > > > [...] Anyway, kevents are very small, threads are very big, [...]
    > > >
    > > > How about following the scientific method instead?
    > >
    > > That are only rethorical words as you have understood I bet, I meant
    > > that the whole process of getting readiness notification from kevent
    > > is way tooo much faster than resheduling of the new process/thread to
    > > handle that IO.
    > >
    > > The whole process of switching from one process to another can be as
    > > fast as bloody hell, but all other details just kill the thing.
    >
    > for our primary abstractions there /IS NO OTHER DETAIL/ but wakeup and
    > context-switching! The "event notification" of a sys_read() /IS/ the
    > wakeup and context-switching that we do - or the epoll/kevent enqueueing
    > as an alternative.
    >
    > yes, the two are still different in a number of ways, and yes, it's
    > still stupid to do a pool of thousands of threads and thus we can always
    > optimize queuing, RAM and cache footprint via specialization, but your
    > whole foundation seems to be constructed around the false notion that
    > queueing and scheduling a task by the scheduler is somehow magically
    > expensive and different from queueing and scheduling other type of
    > requests. Please reconsider that foundation and open up a bit more to a
    > slightly different world view: scheduling is really just another, more
    > generic (and thus certainly more expensive) type of 'request queueing',
    > and user-space, most of the time, is much better off if it handles its
    > 'requests' and 'events' via tasks. (Especially if many of those 'events'
    > turn out to be non-events at all, so to speak.)

    If kernelspace rescheduling is that fast, then please explain me why
    userspace one always beats kernel/userspace?

    And you showed that threadlets without polling accept still does not
    scale good - if it is the same fast queueing of events, then why doesn't
    it work?

    Actually it does not matter, if that narrow place exist (like
    kernel/user transformation, or register copy or something else), it can
    be eliminated in different model - kevent is that model - it does not
    require a lot of things to be changed to get notification and start
    working, so it scales better.

    It is very similar to epoll, but there are at least two significant
    moments:
    1. it can work with _any_ type of events with minimal overhead (can not
    be even remotely compared with 'file' binding which is required to be
    pollable).
    2. its notifications do not go through the second loop, i.e. it is O(1),
    not O(ready_num), and notifications happens directly from internals of
    the appropriate subsystem, which does not require special wakeup
    (although it can be done too).

    > Ingo

    --
    Evgeniy Polyakov
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-02-26 18:01    [W:0.053 / U:59.492 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site