You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by GitBox <gi...@apache.org> on 2018/02/01 23:07:05 UTC

[GitHub] merlimat opened a new pull request #1108: Replace DoubleByteBuf with CompositeByteBuf because of perf regression with Netty > 4.1.12

merlimat opened a new pull request #1108: Replace DoubleByteBuf with CompositeByteBuf because of perf regression with Netty > 4.1.12
URL: https://github.com/apache/bookkeeper/pull/1108
 
 
   Starting from Netty-4.1.13 some internal behavior has changed and that has introduced a performance penalty when using the DoubleByteBuf.
   
   The problem resides in the fact that netty falls back to calling nioBuffers() and that is creating an array of unpooled direct ByteBuffers. That is pretty heavy and the JVM is taking 1 to 3 seconds GC pause to reclaim them.
   
   Short term fix is to go back to CompositeByteBuf which doesn't have the problem (the DirectByteBuffer instances are pooled and reused). I have verified that GC is back to normal after this patch.
   
   More mid-term, since CompositeByteBuf allocates a bunch of objects (counted ~10 per entry) I have a change to replace it with a ByteBufList holder class. I have the change almost done but it will take a while to test it to verify corner cases.
   
   
   This should be considered for a 4.6.2 fix release.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services