You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by ch...@apache.org on 2022/07/27 15:57:53 UTC

[bookkeeper] branch master updated: update ALLOCATOR_POOLING_CONCURRENCY default value (#3001)

This is an automated email from the ASF dual-hosted git repository.

chenhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 01c8824157 update ALLOCATOR_POOLING_CONCURRENCY default value (#3001)
01c8824157 is described below

commit 01c882415714ecfcf11aaf77c86ae550bef6feb6
Author: ssj <su...@gmail.com>
AuthorDate: Wed Jul 27 23:57:48 2022 +0800

    update ALLOCATOR_POOLING_CONCURRENCY default value (#3001)
    
    Set a more reasonable default value to avoid OutOfDirectMemoryError.
    
    Descriptions of the changes in this PR:
    
    
    ### Motivation
    The default value of  allocatorPoolingConcurrency is 2 * Runtime.getRuntime().availableProcessors(). It's used to specify the num of Arena in PooledByteBufAllocator.
    
    Assume:
    40 processors
    80 arena (processors*2)
    2 chunk per arena
    16MiB per chunk
    JVM's total direct mem should be larger then 80*2*16=2560MiB, otherwise OutOfDirectMemoryError occured.
    
    OutOfDirectMemoryError much more likely to occur in Docker, cause JDK versions earlier than Java SE 8U131 does not support Docker CPU limits.
    
    
    ### Changes
    Use Netty default arena num `PooledByteBufAllocator.defaultNumDirectArena()` as default allocatorPoolingConcurrency.
---
 .../main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java    | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
index ade6308131..0b8fce91ca 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/AbstractConfiguration.java
@@ -27,6 +27,7 @@ import java.util.Map;
 
 import javax.net.ssl.SSLEngine;
 
+import io.netty.buffer.PooledByteBufAllocator;
 import lombok.extern.slf4j.Slf4j;
 
 import org.apache.bookkeeper.common.allocator.LeakDetectionPolicy;
@@ -1085,7 +1086,7 @@ public abstract class AbstractConfiguration<T extends AbstractConfiguration>
      * @return the configured pooling concurrency for the allocator.
      */
     public int getAllocatorPoolingConcurrency() {
-        return this.getInteger(ALLOCATOR_POOLING_CONCURRENCY, 2 * Runtime.getRuntime().availableProcessors());
+        return this.getInteger(ALLOCATOR_POOLING_CONCURRENCY, PooledByteBufAllocator.defaultNumDirectArena());
     }
 
     /**