Patch for adding SO_REUSEPORT socket option

Lu, Yingqi yingqi.lu at intel.com
Thu Nov 19 17:10:01 UTC 2015


Yes, that was our first version of the patch.

We just completed the second version which will be uploaded soon, hopefully today. In the new version, we implemented the SO_REUSEPORT as an extended socket option (jdk.net.ExtendedSocketOptions) instead of the standard socket option.

Once we are done uploading the patch, we will notify the community.

Thank you very much for your help and we look forward to having your feedback!
Yingqi Lu (Lucy)

From: net-dev [mailto:net-dev-bounces at openjdk.java.net] On Behalf Of Mark Sheppard
Sent: Thursday, November 19, 2015 6:53 AM
To: Michael McMahon; Kharbas, Kishor; net-dev at openjdk.java.net
Subject: Re: Patch for adding SO_REUSEPORT socket option


there would appear to be a link to a webrev in the JBS bug https://bugs.openjdk.java.net/browse/JDK-6432031

http://cr.openjdk.java.net/~mcberg/jdk/6432031/webrev.01/

I presume that a review is requested for this patch?

regards
Mark
On 19/11/2015 14:11, Michael McMahon wrote:
Hi Kishor

Did you mean to include the patch with this message?
If you send it, I can convert it to a webrev and put
it on the cr.openjdk server for review

Thanks
Michael

On 16/11/15 18:49, Kharbas, Kishor wrote:
Hello all,

I request the community to review a patch for adding SO_REUSEPORT support. There is already an existing JBS opened at https://bugs.openjdk.java.net/browse/JDK-6432031

Details :

SO_REUSEPORT removes 1:1 assignment between listen socket and IP:PORT pair and enable multiple sockets listening to the same address and port. This improves the scalability and parallelism of network traffic handling. It is enabled for both TCP and UDP sockets (at least for Linux). For more details, please refer to https://lwn.net/Articles/542629/. Many applications, especially Linux or BSD based webservers such as Apache httpd and Nginx are already supporting it now. Ruby and Python have it supported as well. Other Java applications such as Netty webserver have it supported via JNI function since JDK has not supported it yet.



By enabling the SO_REUSEPORT feature itself, up to 4X throughput and latency improvement have been observed from various applications. Specific to Java application with this patch, we modified Apache Hadoop Distributed File System (HDFS) source code to take advantage of this feature. We observed up to 1.93x performance improvements.

The feature is supported since Linux Kernel 3.9. It is also supported in BSDs, Solaris and Mac OS. Windows does not have it. In the current patch, we only enable the feature on Linux platform since we do not have BSD, Solaris and Mac OS for testing. Whether the feature is supported or not on the running kernel is determined at the run time.

P.S. Based on Alan Baleman's comment on JBS, we are in meanwhile working on adding this option to 'java.net.ExtendedSocketOption'.

Regards,
Kishor Kharbas



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/net-dev/attachments/20151119/42f831d8/attachment.html>


More information about the net-dev mailing list