RFR: 8253478: (se) epoll Selector should use eventfd for wakeup instead of pipe [v6]
Alan Bateman
alanb at openjdk.java.net
Wed Jan 20 15:43:53 UTC 2021
On Tue, 19 Jan 2021 23:29:09 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:
>> Please review this change which modifies the Linux `epoll(7)`-based `Selector` to use `eventfd(2)` instead of `pipe(2)` in its wakeup mechanism. The change passes all tier 1-tier 3 tests on Linux. Based on rudimentary testing, there does not appear to be any appreciable change in performance. One improvement however is that only one file descriptor instead of two is used for the wakeup. No test is included as the code is covered well by existing tests.
>
> Brian Burkhalter has updated the pull request incrementally with one additional commit since the last revision:
>
> 8253478: clean up comment in epoll selector
src/java.base/linux/classes/sun/nio/ch/EventFD.java line 60:
> 58: }
> 59:
> 60: static native int eventfd0() throws IOException;
I assume the native methods should be private.
src/java.base/linux/classes/sun/nio/ch/EventFD.java line 41:
> 39: EventFD() throws IOException {
> 40: efd = eventfd0();
> 41: IOUtil.configureBlocking(IOUtil.newFD(efd), false);
If there is just one no-arg constructor then I think it should create the eventfd with the default settings, meaning blocking mode. A second constructor that takes a boolean blocking parameter would be okay too.
-------------
PR: https://git.openjdk.java.net/jdk/pull/2082
More information about the nio-dev
mailing list