Backporting the TCP loopback fast path (Windows) improvement to OpenJDK v7

Seán Coffey sean.coffey at oracle.com
Mon Jan 26 13:48:25 UTC 2015


Valeriy,

those changes look fine to me and I've verified that they run through 
testing fine also. webrev here for reference :
http://cr.openjdk.java.net/~coffeys/webrev.8060170.7u.v3/webrev/

Can I have a jdk7u reviewer for this change ?

Regards,
Sean.

On 26/01/15 10:26, Valery Kopylov (Akvelon) wrote:
>
> Sean,
>
> Thank you for your changes! However, instead of checking for WSAEINVAL 
> we propose to check for Windows version.
>
> There are two potential issues our approach helps to avoid:
>
> 1.On Win8 the only error code WSAEOPNOTSUPP means that loopback can’t 
> be set. All other errors should throw an exception.
>
> 2.Since Windows 7 returns WSAEOPNOTSUPP and WinXP returns WSAEINVAL, 
> we can’t be completely sure that all older versions that use jdk7 
> return one of these two codes.
>
> Please find a patch with implemented Windows version check in attachment.
>
> Are such changes suitable for you?
>
> Best regards,
>
> Valeriy Kopylov,
>
> Software Engineer,
>
> Akvelon,
>
> Skype: Valeriy.Kopylov
>
> *From:*Martin Sawicki (MS OPEN TECH)
> *Sent:* Saturday, January 24, 2015 03:21
> *To:* Seán Coffey; Valery Kopylov (Akvelon); jdk7u-dev at openjdk.java.net
> *Cc:* Kirk Shoop (MS OPEN TECH); OpenJDK Network Dev list
> *Subject:* RE: Backporting the TCP loopback fast path (Windows) 
> improvement to OpenJDK v7
>
> Sorry about the delay. Valeryi has prepared a patch – he’ll be 
> responding soon.
>
> *From:*Seán Coffey [mailto:sean.coffey at oracle.com]
> *Sent:* Friday, January 23, 2015 5:55 AM
> *To:* Valery Kopylov (Akvelon); Martin Sawicki (MS OPEN TECH); 
> jdk7u-dev at openjdk.java.net <mailto:jdk7u-dev at openjdk.java.net>
> *Cc:* Kirk Shoop (MS OPEN TECH); OpenJDK Network Dev list
> *Subject:* Re: Backporting the TCP loopback fast path (Windows) 
> improvement to OpenJDK v7
>
> Valeriy,
>
> I didn't see a follow up on this. I've modified the patch so that we 
> cater for a possible WSAEINVAL error to be returned from the 
> NET_EnableFastTcpLoopback call. Latest webrev :
> http://cr.openjdk.java.net/~coffeys/webrev.8060170.7u.v2/webrev/ 
> <http://cr.openjdk.java.net/%7Ecoffeys/webrev.8060170.7u.v2/webrev/>
>
> changes only in 
> http://cr.openjdk.java.net/~coffeys/webrev.8060170.7u.v2/webrev/src/windows/native/sun/nio/ch/Net.c.cdiff.html 
> <http://cr.openjdk.java.net/%7Ecoffeys/webrev.8060170.7u.v2/webrev/src/windows/native/sun/nio/ch/Net.c.cdiff.html>
>
> Good to push ? I'll try and get this into 7u80 but can't guarantee 
> that now given that we've entered the rampdown/stabilization phase.
>
> regards,
> Sean.
>
> On 15/01/15 12:09, Seán Coffey wrote:
>
>     Valeriy,
>
>     I used the jdk7u patch that was attached to the mail request. It
>     applied cleanly. I've posted webrev here for reference (patch
>     there also):
>     http://cr.openjdk.java.net/~coffeys/webrev.8060170.7u/webrev/
>     <http://cr.openjdk.java.net/%7Ecoffeys/webrev.8060170.7u/webrev/>
>
>     The new WSAIoctl call would appear to be failing with WSAEINVAL.
>     The NET_EnableFastTcpLoopback call already tests for WSAEOPNOTSUPP
>     - maybe we should test for WSAEINVAL also and perhaps return
>     silently if windows don't support the option. Or maybe - we state
>     this as desired behaviour - i.e this option is suitable for modern
>     windows kernels - your note below would contradict what I'm seeing
>     though.
>
>     The test passes for me on Windows 7 and fails on Windows XP.
>
>     regards,
>     Sean.
>
>     On 15/01/2015 11:15, Valery Kopylov (Akvelon) wrote:
>
>     Hi Sean,
>
>     Our TCP loopback implementation should process the option
>     correctly on older windows kernels. I tried to reproduce the
>     issue, but it works fine on my side. So I have an assumption that
>     part of the code present on jdk9 patch has been lost and this
>     causes such errors.
>     Did you use the patch for jdk7 sent by Martin or perform the
>     backporting from jdk8 or 9 by yourself?
>     Could you please send me output of "hg diff" command in jdk folder?
>
>
>     Best regards,
>     Valeriy Kopylov
>
>     -----Original Message-----
>     From: Seán Coffey [mailto:sean.coffey at oracle.com]
>     Sent: Tuesday, January 13, 2015 22:31
>     To: Martin Sawicki (MS OPEN TECH); jdk7u-dev at openjdk.java.net
>     <mailto:jdk7u-dev at openjdk.java.net>
>     Cc: Valery Kopylov (Akvelon); Kirk Shoop (MS OPEN TECH); Alan Bateman
>     Subject: Re: Backporting the TCP loopback fast path (Windows)
>     improvement to OpenJDK v7
>
>     Hi Martin,
>
>     I've run into a problem in backporting this to JDK 7u. The test
>     fails on our build/test systems. (windows XP) -
>
>     reason: User specified action: run main/othervm
>     -Djdk.net.useFastTcpLoopback StressLoopback elapsed time (seconds):
>     0.64
>     STDOUT:
>     STDERR:
>     java.net.SocketException: Invalid argument: fastLoopback
>         at sun.nio.ch.Net.socket0(Native Method)
>         at sun.nio.ch.Net.serverSocket(Net.java:445)
>         at
>     sun.nio.ch.AsynchronousServerSocketChannelImpl.<init>(AsynchronousServerSocketChannelImpl.java:71)
>         at
>     sun.nio.ch.WindowsAsynchronousServerSocketChannelImpl.<init>(WindowsAsynchronousServerSocketChannelImpl.java:69)
>         at
>     sun.nio.ch.WindowsAsynchronousChannelProvider.openAsynchronousServerSocketChannel(WindowsAsynchronousChannelProvider.java:83)
>         at
>     java.nio.channels.AsynchronousServerSocketChannel.open(AsynchronousServerSocketChannel.java:140)
>         at
>     java.nio.channels.AsynchronousServerSocketChannel.open(AsynchronousServerSocketChannel.java:161)
>         at StressLoopback.main(StressLoopback.java:42)
>
>     This seems to be from the fact that the new SIO_LOOPBACK_FAST_PATH
>     IOCTL code is only supported on more modern windows systems. I'm
>     wondering if we should change the src code to not attempt to use
>     this option on older windows kernels or if I should just modify
>     the testcase to not run the test on older windows systems ?
>
>     regards,
>     Sean.
>
>
>
>     On 09/01/2015 16:25, Martin Sawicki (MS OPEN TECH) wrote:
>
>     Sean, thank you for the update and your assistance. Looking forward.
>
>     -----Original Message-----
>     From: Seán Coffey [mailto:sean.coffey at oracle.com]
>     Sent: Friday, January 09, 2015 8:24 AM
>     To: Martin Sawicki (MS OPEN TECH); jdk7u-dev at openjdk.java.net
>     <mailto:jdk7u-dev at openjdk.java.net>
>     Cc: Valery Kopylov (Akvelon); Kirk Shoop (MS OPEN TECH)
>     Subject: Re: Backporting the TCP loopback fast path (Windows)
>     improvement to OpenJDK v7
>
>     Hey Martin,
>
>     I can help in getting this enhancement ported to jdk7u-dev. I'm
>     just waiting on approval for use of new system property in jdk7u
>     release.
>     Once I have that, I can get this in.
>
>     regards,
>     Sean.
>
>     On 08/01/15 20:01, Martin Sawicki (MS OPEN TECH) wrote:
>
>     Hello again,
>     We'd like to propose to back-port our TCP loopback fast path
>     performance improvement for Windows that was recently accepted
>     into OpenJDK v9 and v8 into v7.
>     Just for reference, the original OpenJDK v9 fix just for reference
>     can be found here:
>     http://hg.openjdk.java.net/jdk9/dev/jdk/rev/26e6402772c8.
>
>     Our suggested webrev patch file for OpenJDK *v7* is attached to
>     this message, based on our understanding of the back-porting steps.
>
>     Your review and acceptance of this contribution would be appreciated.
>
>     Best regards,
>     Martin Sawicki (and Kirk Shoop, and Valeriy Kopylov) Microsoft Open
>     Technologies, Inc.
>     A subsidiary of Microsoft Corp.
>



More information about the jdk7u-dev mailing list