making nio use kevent/kqueue

Nick Johnson freebsd at spatula.net
Thu Aug 23 12:12:57 PDT 2007


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...
> 
>    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/


More information about the freebsd-java mailing list