Yes, we have an open discussion there as well. From now on, we will focus on net-dev.
Thank you! Yingqi -----Original Message----- From: David Holmes [mailto:david.hol...@oracle.com] Sent: Thursday, November 19, 2015 6:10 PM To: Lu, Yingqi <yingqi...@intel.com>; Kharbas, Kishor <kishor.khar...@intel.com>; core-libs-dev@openjdk.java.net Subject: Re: Patch for adding SO_REUSEPORT socket option Hi, I think this should be moved to the net-dev mailing list. Thanks, David On 20/11/2015 6:37 AM, Lu, Yingqi wrote: > Hello All, > > Currently, I think the only platform that does not have SO_REUSEPORT is > Windows. API allows this possibility by throwing SocketException with message > "Invalid option". Older kernel that does not support the feature throws > SocketException with message "Protocol not available". > > Here is the first version of the patch (we implement SO_REUSEPORT as a > standard socket option): > http://cr.openjdk.java.net/~mcberg/jdk/6432031/webrev.01/ > > Here is the second version of the patch (we implement SO_REUSEPORT as an > extended socket option): > http://cr.openjdk.java.net/~mcberg/jdk/6432031/webrev.02/ > > The performance improvement by enabling SO_REUSEPORT is significant (up to > 1.93x on Hadoop Distributed File System (HDFS)). It would be great if OpenJDK > can have it. Please take some time to review the patches and let us know your > feedback and comments! > > Thanks, > Lucy > > > From: Kharbas, Kishor > Sent: Monday, November 16, 2015 10:47 AM > To: core-libs-dev@openjdk.java.net > Cc: Kharbas, Kishor; Lu, Yingqi; Kharbas, Kishor > Subject: Patch for adding SO_REUSEPORT socket option > > 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 >