harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Shipilev" <aleksey.shipi...@gmail.com>
Subject Re: [classlib][nio] epoll()-based Selector
Date Thu, 04 Oct 2007 10:56:43 GMT
Hi again,

I have updated the JIRA [1] with the final patch, all known
performance issues were resolved. I have also run extensive experiment
for measuring the performance of Selector.selectNow() operation on
current and epoll-based implementations comparing to Sun 1.6.0. You
might find the results in the JIRA attachment: comparison of current
and epoll-based implementation [2].

This implementation successfully passes JUnit tests and simple
workloads. It's also does not change anything in the classlib (not
saying about makefiles), additional option should be specified to
enable epoll functionality, so it's safe to apply this patch at any

BTW, as I found not so long ago, epoll-based Selector is the main
improvement for java.nio.* in Sun 1.6.0 classlib [3], and we're going
neck and neck with them [4] :)

Aleksey Shipilev,
ESSD, Intel

[1] https://issues.apache.org/jira/browse/HARMONY-4879
[2] https://issues.apache.org/jira/secure/attachment/12367060/2000-all.png
[3] http://java.sun.com/javase/6/docs/technotes/guides/io/enhancements.html
[4] https://issues.apache.org/jira/secure/attachment/12367060/2000-best.png

On 10/1/07, Aleksey Shipilev <aleksey.shipilev@gmail.com> wrote:
> Hi all,
> I would like to present the epoll()-based java.nio.channels.Selector
> for Harmony. Epoll facility [1] was developed as the part on Linux
> Kernel starting from version 2.5.44, and its interface was finalized
> starting before 2.6.x kernels. Epoll is generally driven by callbacks
> inside the kernel and thus it strives to be O(1), whereas legacy
> poll() and select() are driven by traversing linked lists and thus
> being O(n).
> You can find draft implementation at HARMONY-4879 [2]. This version is
> ready to play, but not intended for inclusion, since there are a
> couple of performance problems persist (like possible O(n^2) at
> processSelectResults()). I will try to eliminate them in several days.
> However, this patch successfully passes JUnit tests and might be ready
> to be tried on some networking-heavy workloads.
> Speaking about performance results, simple test which registers 2000
> channels on one Selector and then continuously calls selectNow()
> reveals this:
> Harmony-r576670:
>  connect time: 100538 msecs
>  selectNow() time (10000 times): 27777 msecs
> Harmony-r576670 + HARMONY-4879:
>  connect time: 832 msecs
>  selectNow() time (10000 times): 87 msecs
> Speedups:
>  connect: 120x
>  selectNow(): 320x
> More details are in JIRA.
> Is someone interested in the topic?
> I would like to collaborate with you then - to prevent duplication of work :)
> [1] http://lse.sourceforge.net/epoll/index.html
> [2] https://issues.apache.org/jira/browse/HARMONY-4879

View raw message