making nio use kevent/kqueue

Vlad GALU dudu at dudu.ro
Thu Aug 23 12:57:28 PDT 2007


On 8/23/07, Nick Johnson <freebsd at spatula.net> wrote:
> Looking at it a bit more, it looks like the "right" thing to do is to
> create a KeventArrayWrapper, possibly based on the EPollArrayWrapper.c so
> that multiple ready FDs can be returned at one time.
>
> That means creating a KeventArrayWrapper.java based on
> j2se/src/solaris/classes/sun/nio/ch/EPollArrayWrapper.java as well as a
> KeventSelectorImpl.java based on EPollSelectorImpl.java and
> KeventSelectorProvider.java based on EPollSelectorProvider.java.
>
> It also means modifying
> src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java to select the
> KeventSelectorProvider and possibly tweaking some makefiles to ensure that
> everything gets built, including:
>
> make/java/nio/Makefile
> make/java/nio/mapfile*  (do we end up using mapfile-linux or
> mapfile-solaris?)
>
>    Nick
>
> On Thu, 23 Aug 2007, Nick Johnson wrote:
>
> > I think there could be a considerable performance gain if java.nio were
> > tweaked to use kevent/kqueue(2) as opposed to poll(2).
> >
> > It looks like the files that would need to be touched for this are:
> >
> > j2se/src/solaris/native/sun/nio/ch/
> >       DevPollArrayWrapper.c  (not sure about this one actually since
> > FreeBSD doesn't use /dev/poll)
> >       PollArrayWrapper.c
> >       SocketChannelImpl.c
> >
> > Does that sound about right?  I see select(2) and poll(2) used in other
> > places as well, though outside of nio where they're likely to show the
> > greatest benefit.
> >
> > Are there any caveats or "gotchas" I should be aware if should I decide to
> > take some free time to try to come up with a kevent patch for nio?
> >
> > Also, is there a quicker way to build a JVM when just changing a file or
> > two like this?  It would be lousy to have to wait 2 hours to build after
> > every minor change...

    IIRC, the OS-X Java uses kqueue already. Furthermore, classpath
(http://www.gnu.org/software/classpath/) supposedly has a kqueue nio
implementation. I haven't tried any of the two aforementioned
solutions, but it's definitely something I'll want to take a look at
in the near future.

    HTH :)

> >
> >    Nick
> >
> >
>
> --
> "Courage isn't just a matter of not being frightened, you know. It's being
>  afraid and doing what you have to do anyway."
>    Doctor Who - Planet of the Daleks
> This message has been brought to you by Nick Johnson 2.3b1 and the number 6.
> http://healerNick.com/       http://morons.org/        http://spatula.net/
> _______________________________________________
> freebsd-java at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-java
> To unsubscribe, send any mail to "freebsd-java-unsubscribe at freebsd.org"
>


-- 
If it's there, and you can see it, it's real.
If it's not there, and you can see it, it's virtual.
If it's there, and you can't see it, it's transparent.
If it's not there, and you can't see it, you erased it.


More information about the freebsd-java mailing list