7173515: (se) Selector.open fails with OOME on Solaris when unlimited file descriptors

Alan Bateman Alan.Bateman at oracle.com
Fri Jun 1 08:32:14 PDT 2012


This is an update to the changes to the /dev/poll Selector from a few 
weeks ago [1].

The changes in 7169050 fixed a long standing performance issue that 
stemmed from the insertion of a POLLREMOVE prior to each update. 
Unfortunately the changes introduced an issue on systems configured with 
an unlimited number of file descriptors. The issue that the update 
events are indexed by file descriptor. To fix this I've changed it so 
that it updates to file descriptors >64k spill into into a Map. One 
other improvement is the addition of a bit set to track which file 
descriptors are registered as this ensures that the updates to the 
registrations are accurate. The final improvement is to use the same 
poll array for both dpwrite and ioctl(DP_POLL). The webrev is here:

http://cr.openjdk.java.net/~alanb/7173515/webrev/

BTW: I hope to post a webrev soon with a completely new Selector 
implementation for Solaris. The new Selector will use the Solaris event 
ports facilities than the /dev/poll driver.

-Alan

[1] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/21703d431217
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/nio-dev/attachments/20120601/0f77f271/attachment.html 


More information about the nio-dev mailing list