RFR JDK-8161004 "Bulk sending WindowUpdate frame speedup HTTP/2 performance up to 18x times and improve scalability"
Michael McMahon
michael.x.mcmahon at oracle.com
Fri Jul 22 11:59:44 UTC 2016
Sergey,
This looks good. I'm making fairly extensive changes at the moment,
but I will ensure the change doesn't get lost.
Thanks,
Michael.
On 07/07/2016, 22:35, Sergey Kuksenko wrote:
> Hi,
>
> Could you please review the following fix for JDK-8158980?
> http://cr.openjdk.java.net/~skuksenko/jep110/8161004/webrev.00/
> https://bugs.openjdk.java.net/browse/JDK-8161004
>
> Current HTTP/2 implementation sends WindowUpdate frame each time when
> data frame is processed. That leads to network saturation and
> oversynchronization on "Http2Connection.sendlock".
>
> In case of getting small data (less than max frame size) we get 55% of
> blocks on sendWindowUpdate (and only 37% on sendHeaders).
> Even in case of getting large data (1Mbytes) - 18% of all blocks is
> caused by sendWindowUpdate.
>
> Suggested performance improvement provides 2x-18x performance speedup.
> Implemented optimizations:
> 1. Accumulate size of received data and send bulk WindowUpdate when
> some watermark is reached.
> 2. Don't send stream WindowUpdate when the last data frame is received
> (set flag END_STREAM)
> 3. WindowUpdate frame goes directly to HttpConnection bypassing
> Http2Connection.sendlock. That is allowed with proper protection for
> "do not insert WindowUpdate frame between Headers and Continuation
> frames".
>
> Thank you,
> Sergey Kuksenko.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/net-dev/attachments/20160722/c29aaeea/attachment-0001.html>
More information about the net-dev
mailing list