RFR: 8193370 Provide more user friendly defaults for HTTP/2 client settings

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

RFR: 8193370 Provide more user friendly defaults for HTTP/2 client settings

Daniel Fuchs
Hi,

please find below a patch for:

8193370 Provide more user friendly defaults for HTTP/2 client settings
https://bugs.openjdk.java.net/browse/JDK-8193370

webrev:
http://cr.openjdk.java.net/~dfuchs/webrev_8193370/webrev.01/

best regards,

-- daniel
Reply | Threaded
Open this post in threaded view
|

Re: RFR: 8193370 Provide more user friendly defaults for HTTP/2 client settings

Chris Hegarty

> On 12 Dec 2017, at 17:43, Daniel Fuchs <[hidden email]> wrote:
>
> Hi,
>
> please find below a patch for:
>
> 8193370 Provide more user friendly defaults for HTTP/2 client settings
> https://bugs.openjdk.java.net/browse/JDK-8193370
>
> webrev:
> http://cr.openjdk.java.net/~dfuchs/webrev_8193370/webrev.01/

This looks good Daniel. It is good that you have added restrictions
on the allowable values for some of these settings, some of which
are specified by the RFC. I also agree with the increase is window
sizes. This should improve overall throughput and reduce network
trashing from windows updates.

-Chris.
Reply | Threaded
Open this post in threaded view
|

Re: RFR: 8193370 Provide more user friendly defaults for HTTP/2 client settings

Simone Bordet
Hi,

On Tue, Dec 12, 2017 at 7:04 PM, Chris Hegarty <[hidden email]> wrote:

>
>> On 12 Dec 2017, at 17:43, Daniel Fuchs <[hidden email]> wrote:
>>
>> Hi,
>>
>> please find below a patch for:
>>
>> 8193370 Provide more user friendly defaults for HTTP/2 client settings
>> https://bugs.openjdk.java.net/browse/JDK-8193370
>>
>> webrev:
>> http://cr.openjdk.java.net/~dfuchs/webrev_8193370/webrev.01/
>
> This looks good Daniel. It is good that you have added restrictions
> on the allowable values for some of these settings, some of which
> are specified by the RFC. I also agree with the increase is window
> sizes. This should improve overall throughput and reduce network
> trashing from windows updates.

Do I read it correctly that the default session window is 1 GiB ?

This would impose on the client a large memory requirement especially
when connecting to multiple domains.
I would suggest smaller values.

Our experience is that even in fast network (not localhost) 16 MiB
session windows will hit TCP congestion control before stalling HTTP/2
flow control.

--
Simone Bordet
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless.   Victoria Livschitz
Reply | Threaded
Open this post in threaded view
|

Re: RFR: 8193370 Provide more user friendly defaults for HTTP/2 client settings

Daniel Fuchs
Hi Simone,

Long time no talk ;-)

Thanks for sharing your experience!

On 12/12/2017 18:21, Simone Bordet wrote:
> Our experience is that even in fast network (not localhost) 16 MiB
> session windows will hit TCP congestion control before stalling HTTP/2
> flow control.

I have experimented with 16Mib and 32Mib.
Even on slow network (VPN) the settings in my patch give me a
boost of 2+ times faster response.

These settings can be overridden by specifying an alternate
value for the corresponding net/system properties, if the
defaults is not appropriate for the application.
If I'm not mistaken curl seems also to be using large
connection window sizes.

best regards,

-- daniel
Reply | Threaded
Open this post in threaded view
|

Re: RFR: 8193370 Provide more user friendly defaults for HTTP/2 client settings

Daniel Fuchs
Hi Simone,

On 12/12/2017 21:02, Daniel Fuchs wrote:
> On 12/12/2017 18:21, Simone Bordet wrote:
>> Our experience is that even in fast network (not localhost) 16 MiB
>> session windows will hit TCP congestion control before stalling HTTP/2
>> flow control.
>
> I have experimented with 16Mib and 32Mib.
> Even on slow network (VPN) the settings in my patch give me a
> boost of 2+ times faster response.

Chris & I played some more with different settings.
I may have been too aggressive in my previous patch :-)
It seems indeed that a session windows of 32M is a reasonable default.
I have updated my webrev and done some intensive same-binary
test runs:

http://cr.openjdk.java.net/~dfuchs/webrev_8193370/webrev.02

best regards,

-- daniel
Reply | Threaded
Open this post in threaded view
|

Re: RFR: 8193370 Provide more user friendly defaults for HTTP/2 client settings

Chris Hegarty
Daniel, Simone,

On 13/12/17 01:17, Daniel Fuchs wrote:

> Hi Simone,
>
> On 12/12/2017 21:02, Daniel Fuchs wrote:
>> On 12/12/2017 18:21, Simone Bordet wrote:
>>> Our experience is that even in fast network (not localhost) 16 MiB
>>> session windows will hit TCP congestion control before stalling HTTP/2
>>> flow control.
>>
>> I have experimented with 16Mib and 32Mib.
>> Even on slow network (VPN) the settings in my patch give me a
>> boost of 2+ times faster response.
>
> Chris & I played some more with different settings.
> I may have been too aggressive in my previous patch :-)
> It seems indeed that a session windows of 32M is a reasonable default.

Yes, I think this is better, thanks.

> I have updated my webrev and done some intensive same-binary
> test runs:
>
> http://cr.openjdk.java.net/~dfuchs/webrev_8193370/webrev.02

This link appears to be not working, so I copied the webrev
to the following location:

http://cr.openjdk.java.net/~chegar/webrev_8193370/webrev.02/

-Chris.