[ 
https://issues.apache.org/jira/browse/HDDS-2342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16957212#comment-16957212
 ] 

Attila Doroszlai commented on HDDS-2342:
----------------------------------------

Maximum number of entries in {{stateMachineDataCache}} is also based on chunk 
executor thread count, so this also affects heap size requirement.

> ContainerStateMachine$chunkExecutor threads hold onto native memory
> -------------------------------------------------------------------
>
>                 Key: HDDS-2342
>                 URL: https://issues.apache.org/jira/browse/HDDS-2342
>             Project: Hadoop Distributed Data Store
>          Issue Type: Bug
>          Components: Ozone Datanode
>            Reporter: Lokesh Jain
>            Assignee: Lokesh Jain
>            Priority: Major
>
> In a heap dump many threads in ContainerStateMachine$chunkExecutor holds onto 
> native memory in the ThreadLocal map. Every such thread holds onto chunk 
> worth of DirectByteBuffer. Since these threads are involved in write and read 
> chunk operations, the JVM allocates chunk (16MB) worth of DirectByteBuffer in 
> the ThreadLocalMap for every thread involved in IO. Also the native memory 
> would not be GC'ed as long as the thread is alive.
> It would be better to reduce the default number of chunk executor threads and 
> have them in proportion to number of disks on the datanode. We should also 
> use DirectByeBuffers for the IO on datanode. Currently we allocate 
> HeapByteBuffer which needs to be backed by DirectByteBuffer. If we can use a 
> DirectByteBuffer we can avoid a buffer copy.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to