Re: [take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-19 Thread Evgeniy Polyakov
On Tue, Dec 19, 2006 at 12:01:35AM -0800, Ulrich Drepper ([EMAIL PROTECTED]) 
wrote:
> Evgeniy Polyakov wrote:
> >What error messages do you see and what are kevent related config
> >changes?
> 
> ARCH=um
> 
> #define CONFIG_KEVENT_USER_STAT 1
> #define CONFIG_KEVENT_PIPE 1
> #define CONFIG_KEVENT_POLL 1
> #define CONFIG_KEVENT_TIMER 1
> #define CONFIG_KEVENT 1
> #define CONFIG_KEVENT_SIGNAL 1
> #define CONFIG_KEVENT_SOCKET 1
> 
> 
> 
> In file included from kernel/kevent/kevent.c:28:
> include/linux/kevent.h: In function ‘kevent_init_file’:
> include/linux/kevent.h:220: error: ‘struct file’ has no member named 
> ‘st’
> include/linux/kevent.h: In function ‘kevent_cleanup_file’:
> include/linux/kevent.h:225: error: ‘struct file’ has no member named 
> ‘st’

Can you send me your linux/fs.h file to chek if it is correct.
Also does 'make prepare' fix the buid?

> -- 
> ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, 
> CA ❖

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


Re: [take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-19 Thread Ulrich Drepper

Evgeniy Polyakov wrote:

What error messages do you see and what are kevent related config
changes?


ARCH=um

#define CONFIG_KEVENT_USER_STAT 1
#define CONFIG_KEVENT_PIPE 1
#define CONFIG_KEVENT_POLL 1
#define CONFIG_KEVENT_TIMER 1
#define CONFIG_KEVENT 1
#define CONFIG_KEVENT_SIGNAL 1
#define CONFIG_KEVENT_SOCKET 1



In file included from kernel/kevent/kevent.c:28:
include/linux/kevent.h: In function ‘kevent_init_file’:
include/linux/kevent.h:220: error: ‘struct file’ has no member named ‘st’
include/linux/kevent.h: In function ‘kevent_cleanup_file’:
include/linux/kevent.h:225: error: ‘struct file’ has no member named ‘st’

--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-19 Thread Ulrich Drepper

Evgeniy Polyakov wrote:

What error messages do you see and what are kevent related config
changes?


ARCH=um

#define CONFIG_KEVENT_USER_STAT 1
#define CONFIG_KEVENT_PIPE 1
#define CONFIG_KEVENT_POLL 1
#define CONFIG_KEVENT_TIMER 1
#define CONFIG_KEVENT 1
#define CONFIG_KEVENT_SIGNAL 1
#define CONFIG_KEVENT_SOCKET 1



In file included from kernel/kevent/kevent.c:28:
include/linux/kevent.h: In function ‘kevent_init_file’:
include/linux/kevent.h:220: error: ‘struct file’ has no member named ‘st’
include/linux/kevent.h: In function ‘kevent_cleanup_file’:
include/linux/kevent.h:225: error: ‘struct file’ has no member named ‘st’

--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-19 Thread Evgeniy Polyakov
On Tue, Dec 19, 2006 at 12:01:35AM -0800, Ulrich Drepper ([EMAIL PROTECTED]) 
wrote:
 Evgeniy Polyakov wrote:
 What error messages do you see and what are kevent related config
 changes?
 
 ARCH=um
 
 #define CONFIG_KEVENT_USER_STAT 1
 #define CONFIG_KEVENT_PIPE 1
 #define CONFIG_KEVENT_POLL 1
 #define CONFIG_KEVENT_TIMER 1
 #define CONFIG_KEVENT 1
 #define CONFIG_KEVENT_SIGNAL 1
 #define CONFIG_KEVENT_SOCKET 1
 
 
 
 In file included from kernel/kevent/kevent.c:28:
 include/linux/kevent.h: In function ‘kevent_init_file’:
 include/linux/kevent.h:220: error: ‘struct file’ has no member named 
 ‘st’
 include/linux/kevent.h: In function ‘kevent_cleanup_file’:
 include/linux/kevent.h:225: error: ‘struct file’ has no member named 
 ‘st’

Can you send me your linux/fs.h file to chek if it is correct.
Also does 'make prepare' fix the buid?

 -- 
 ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, 
 CA ❖

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


Re: [take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Evgeniy Polyakov
On Mon, Dec 18, 2006 at 10:21:34PM -0800, Ulrich Drepper ([EMAIL PROTECTED]) 
wrote:
> Evgeniy Polyakov wrote:
> >I've uploaded the latest changes to the homepage.
> 
> Thanks.  But could you now update the patch so that it can be compiled 
> with the current upstream kernel?  At least  has 
> problems because of file->st accesses.

file->st is only defined for poll/select events, if it is not specified
at compile time, functions in linux/kevent.h becomes void:

#ifdef CONFIG_KEVENT_POLL
static inline void kevent_init_file(struct file *file)
{
kevent_storage_init(file, >st);
}

static inline void kevent_cleanup_file(struct file *file)
{
kevent_storage_fini(>st);
}
#else
static inline void kevent_init_file(struct file *file) {}
static inline void kevent_cleanup_file(struct file *file) {}
#endif

What error messages do you see and what are kevent related config
changes?

> -- 
> ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, 
> CA ❖

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


Re: [take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Ulrich Drepper

Evgeniy Polyakov wrote:

I've uploaded the latest changes to the homepage.


Thanks.  But could you now update the patch so that it can be compiled 
with the current upstream kernel?  At least  has 
problems because of file->st accesses.


--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Evgeniy Polyakov
On Mon, Dec 18, 2006 at 07:47:21PM -0800, Ulrich Drepper ([EMAIL PROTECTED]) 
wrote:
> It would help if one could actually get hold of the changes.
> 
> Neither at home nor on my gmail account did I get them all.  The gmane 
> also only has 5 of the 9 mails or so.  Your archive only has sources 
> from a couple of versions back.

Kernel archive contains all changes as far as I can see at
marc.theaimsgroup.com and lkml.org

I've uploaded the latest changes to the homepage.

> -- 
> ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, 
> CA ❖

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


Re: [take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Randy Dunlap
On Mon, 18 Dec 2006 19:47:21 -0800 Ulrich Drepper wrote:

> It would help if one could actually get hold of the changes.
> 
> Neither at home nor on my gmail account did I get them all.  The gmane 
> also only has 5 of the 9 mails or so.  Your archive only has sources 
> from a couple of versions back.

It looks like they are all archived at marc.theaimsgroup.com.
Try this:
http://marc.theaimsgroup.com/?l=linux-netdev=2=1=take28-resend_2=t

But it would be Good for them to have a home.

---
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Ulrich Drepper

It would help if one could actually get hold of the changes.

Neither at home nor on my gmail account did I get them all.  The gmane 
also only has 5 of the 9 mails or so.  Your archive only has sources 
from a couple of versions back.


--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Ulrich Drepper

It would help if one could actually get hold of the changes.

Neither at home nor on my gmail account did I get them all.  The gmane 
also only has 5 of the 9 mails or so.  Your archive only has sources 
from a couple of versions back.


--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Randy Dunlap
On Mon, 18 Dec 2006 19:47:21 -0800 Ulrich Drepper wrote:

 It would help if one could actually get hold of the changes.
 
 Neither at home nor on my gmail account did I get them all.  The gmane 
 also only has 5 of the 9 mails or so.  Your archive only has sources 
 from a couple of versions back.

It looks like they are all archived at marc.theaimsgroup.com.
Try this:
http://marc.theaimsgroup.com/?l=linux-netdevw=2r=1s=take28-resend_2q=t

But it would be Good for them to have a home.

---
~Randy
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Evgeniy Polyakov
On Mon, Dec 18, 2006 at 07:47:21PM -0800, Ulrich Drepper ([EMAIL PROTECTED]) 
wrote:
 It would help if one could actually get hold of the changes.
 
 Neither at home nor on my gmail account did I get them all.  The gmane 
 also only has 5 of the 9 mails or so.  Your archive only has sources 
 from a couple of versions back.

Kernel archive contains all changes as far as I can see at
marc.theaimsgroup.com and lkml.org

I've uploaded the latest changes to the homepage.

 -- 
 ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, 
 CA ❖

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


Re: [take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Ulrich Drepper

Evgeniy Polyakov wrote:

I've uploaded the latest changes to the homepage.


Thanks.  But could you now update the patch so that it can be compiled 
with the current upstream kernel?  At least linux/kevent.h has 
problems because of file-st accesses.


--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-18 Thread Evgeniy Polyakov
On Mon, Dec 18, 2006 at 10:21:34PM -0800, Ulrich Drepper ([EMAIL PROTECTED]) 
wrote:
 Evgeniy Polyakov wrote:
 I've uploaded the latest changes to the homepage.
 
 Thanks.  But could you now update the patch so that it can be compiled 
 with the current upstream kernel?  At least linux/kevent.h has 
 problems because of file-st accesses.

file-st is only defined for poll/select events, if it is not specified
at compile time, functions in linux/kevent.h becomes void:

#ifdef CONFIG_KEVENT_POLL
static inline void kevent_init_file(struct file *file)
{
kevent_storage_init(file, file-st);
}

static inline void kevent_cleanup_file(struct file *file)
{
kevent_storage_fini(file-st);
}
#else
static inline void kevent_init_file(struct file *file) {}
static inline void kevent_cleanup_file(struct file *file) {}
#endif

What error messages do you see and what are kevent related config
changes?

 -- 
 ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, 
 CA ❖

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


[take28-resend_2->0 0/8] kevent: Generic event handling mechanism.

2006-12-17 Thread Evgeniy Polyakov

Generic event handling mechanism.

Kevent is a generic subsytem which allows to handle event notifications.
It supports both level and edge triggered events. It is similar to
poll/epoll in some cases, but it is more scalable, it is faster and
allows to work with essentially eny kind of events.

Events are provided into kernel through control syscall and can be read
back through ring buffer or using usual syscalls.
Kevent update (i.e. readiness switching) happens directly from internals
of the appropriate state machine of the underlying subsytem (like
network, filesystem, timer or any other).

Homepage:
http://tservice.net.ru/~s0mbre/old/?section=projects=kevent

Documentation page:
http://linux-net.osdl.org/index.php/Kevent

Consider for inclusion.

New benchmark, which can be a hoax though, can be found at 
http://tservice.net.ru/~s0mbre/blog/2006/11/30#2006_11_30
where kevent on amd64 with 1gb of ram can handle more than 7200 events per 
second with 8000 requests concurrency with 'ab' benchmark and lighttpd.
Although I tought it should not be published due to possible errors,
I decided to send it for review.

With this release I start 3 days resending timeout - i.e. each third day I 
will send either new version (if something new was requested and agreed to 
be implemented) or resending with back counter started from three. 
When back counter hits zero after three resending I consider there is no 
interest in subsystem and I will stop further sending.

Thanks for understanding and your time.

Changes from 'take27' patchset:
 * made kevent default yes in non embedded case.
 * added falgs to callback structures - currently used to check if kevent
can be requested from kernelspace only (posix timers) or 
userspace (all others)

Changes from 'take26' patchset:
 * made kevent visible in config only in case of embedded setup.
 * added comment about KEVENT_MAX number.
 * spell fix.

Changes from 'take25' patchset:
 * use timespec as timeout parameter.
 * added high-resolution timer to handle absolute timeouts.
 * added flags to waiting and initialization syscalls.
 * kevent_commit() has new_uidx parameter.
 * kevent_wait() has old_uidx parameter, which, if not equal to u->uidx,
results in immediate wakeup (usefull for the case when entries
are added asynchronously from kernel (not supported for now)).
 * added interface to mark any event as ready.
 * event POSIX timers support.
 * return -ENOSYS if there is no registered event type.
 * provided file descriptor must be checked for fifo type (spotted by Eric 
Dumazet).
 * signal notifications.
 * documentation update.
 * lighttpd patch updated (the latest benchmarks with lighttpd patch can be 
found in blog).

Changes from 'take24' patchset:
 * new (old (new)) ring buffer implementation with kernel and user indexes.
 * added initialization syscall instead of opening /dev/kevent
 * kevent_commit() syscall to commit ring buffer entries
 * changed KEVENT_REQ_WAKEUP_ONE flag to KEVENT_REQ_WAKEUP_ALL, kevent wakes
   only first thread always if that flag is not set
 * KEVENT_REQ_ALWAYS_QUEUE flag. If set, kevent will be queued into ready queue
   instead of copying back to userspace when kevent is ready immediately when
   it is added.
 * lighttpd patch (Hail! Although nothing really outstanding compared to epoll)

Changes from 'take23' patchset:
 * kevent PIPE notifications
 * KEVENT_REQ_LAST_CHECK flag, which allows to perform last check at dequeueing 
time
 * fixed poll/select notifications (were broken due to tree manipulations)
 * made Documentation/kevent.txt look nice in 80-col terminal
 * fix for copy_to_user() failure report for the first kevent (Andrew Morton)
 * minor function renames

Changes from 'take22' patchset:
 * new ring buffer implementation in process' memory
 * wakeup-one-thread flag
 * edge-triggered behaviour

Changes from 'take21' patchset:
 * minor cleanups (different return values, removed unneded variables, 
whitespaces and so on)
 * fixed bug in kevent removal in case when kevent being removed
   is the same as overflow_kevent (spotted by Eric Dumazet)

Changes from 'take20' patchset:
 * new ring buffer implementation
 * removed artificial limit on possible number of kevents

Changes from 'take19' patchset:
 * use __init instead of __devinit
 * removed 'default N' from config for user statistic
 * removed kevent_user_fini() since kevent can not be unloaded
 * use KERN_INFO for statistic output

Changes from 'take18' patchset:
 * use __init instead of __devinit
 * removed 'default N' from config for user statistic
 * removed kevent_user_fini() since kevent can not be unloaded
 * use KERN_INFO for statistic output

Changes from 'take17' patchset:
 * Use RB tree instead of hash table. 
At least for a web sever, frequency of addition/deletion of new kevent 
is comparable with number of search access, i.e. most of the time 
events 
are added, accesed only couple of times and then 

[take28-resend_2-0 0/8] kevent: Generic event handling mechanism.

2006-12-17 Thread Evgeniy Polyakov

Generic event handling mechanism.

Kevent is a generic subsytem which allows to handle event notifications.
It supports both level and edge triggered events. It is similar to
poll/epoll in some cases, but it is more scalable, it is faster and
allows to work with essentially eny kind of events.

Events are provided into kernel through control syscall and can be read
back through ring buffer or using usual syscalls.
Kevent update (i.e. readiness switching) happens directly from internals
of the appropriate state machine of the underlying subsytem (like
network, filesystem, timer or any other).

Homepage:
http://tservice.net.ru/~s0mbre/old/?section=projectsitem=kevent

Documentation page:
http://linux-net.osdl.org/index.php/Kevent

Consider for inclusion.

New benchmark, which can be a hoax though, can be found at 
http://tservice.net.ru/~s0mbre/blog/2006/11/30#2006_11_30
where kevent on amd64 with 1gb of ram can handle more than 7200 events per 
second with 8000 requests concurrency with 'ab' benchmark and lighttpd.
Although I tought it should not be published due to possible errors,
I decided to send it for review.

With this release I start 3 days resending timeout - i.e. each third day I 
will send either new version (if something new was requested and agreed to 
be implemented) or resending with back counter started from three. 
When back counter hits zero after three resending I consider there is no 
interest in subsystem and I will stop further sending.

Thanks for understanding and your time.

Changes from 'take27' patchset:
 * made kevent default yes in non embedded case.
 * added falgs to callback structures - currently used to check if kevent
can be requested from kernelspace only (posix timers) or 
userspace (all others)

Changes from 'take26' patchset:
 * made kevent visible in config only in case of embedded setup.
 * added comment about KEVENT_MAX number.
 * spell fix.

Changes from 'take25' patchset:
 * use timespec as timeout parameter.
 * added high-resolution timer to handle absolute timeouts.
 * added flags to waiting and initialization syscalls.
 * kevent_commit() has new_uidx parameter.
 * kevent_wait() has old_uidx parameter, which, if not equal to u-uidx,
results in immediate wakeup (usefull for the case when entries
are added asynchronously from kernel (not supported for now)).
 * added interface to mark any event as ready.
 * event POSIX timers support.
 * return -ENOSYS if there is no registered event type.
 * provided file descriptor must be checked for fifo type (spotted by Eric 
Dumazet).
 * signal notifications.
 * documentation update.
 * lighttpd patch updated (the latest benchmarks with lighttpd patch can be 
found in blog).

Changes from 'take24' patchset:
 * new (old (new)) ring buffer implementation with kernel and user indexes.
 * added initialization syscall instead of opening /dev/kevent
 * kevent_commit() syscall to commit ring buffer entries
 * changed KEVENT_REQ_WAKEUP_ONE flag to KEVENT_REQ_WAKEUP_ALL, kevent wakes
   only first thread always if that flag is not set
 * KEVENT_REQ_ALWAYS_QUEUE flag. If set, kevent will be queued into ready queue
   instead of copying back to userspace when kevent is ready immediately when
   it is added.
 * lighttpd patch (Hail! Although nothing really outstanding compared to epoll)

Changes from 'take23' patchset:
 * kevent PIPE notifications
 * KEVENT_REQ_LAST_CHECK flag, which allows to perform last check at dequeueing 
time
 * fixed poll/select notifications (were broken due to tree manipulations)
 * made Documentation/kevent.txt look nice in 80-col terminal
 * fix for copy_to_user() failure report for the first kevent (Andrew Morton)
 * minor function renames

Changes from 'take22' patchset:
 * new ring buffer implementation in process' memory
 * wakeup-one-thread flag
 * edge-triggered behaviour

Changes from 'take21' patchset:
 * minor cleanups (different return values, removed unneded variables, 
whitespaces and so on)
 * fixed bug in kevent removal in case when kevent being removed
   is the same as overflow_kevent (spotted by Eric Dumazet)

Changes from 'take20' patchset:
 * new ring buffer implementation
 * removed artificial limit on possible number of kevents

Changes from 'take19' patchset:
 * use __init instead of __devinit
 * removed 'default N' from config for user statistic
 * removed kevent_user_fini() since kevent can not be unloaded
 * use KERN_INFO for statistic output

Changes from 'take18' patchset:
 * use __init instead of __devinit
 * removed 'default N' from config for user statistic
 * removed kevent_user_fini() since kevent can not be unloaded
 * use KERN_INFO for statistic output

Changes from 'take17' patchset:
 * Use RB tree instead of hash table. 
At least for a web sever, frequency of addition/deletion of new kevent 
is comparable with number of search access, i.e. most of the time 
events 
are added, accesed only couple of times and then