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

Suresh Srinivas commented on HDFS-4461:
---------------------------------------

bq. we analyzed a DN heap dump from a production cluster with eclipse memory 
analyzer and found that the memory was full of ScanInfo objects. The memory 
histogram showed that java.lang.String was the third-largest consumer of memory 
in the system. Unfortunately I can't share the heap dump.
A server generally has a lot of String objects. There are also file objects in 
ReplicasMap, string paths tracked in many other places as well.

This patch indeed saves few bytes. However I do not think this is either the 
cause of the OOME or is likely to solve that issue. ScanInfo is a short lived 
object, unlike other data structures that are long lived.

Can you answer the following question, I previously asked:
bq. How many blocks per storage directory do you have, when OOME happened?

Or at least the number of ScanInfo objects you saw.
                
> DirectoryScanner: volume path prefix takes up memory for every block that is 
> scanned 
> -------------------------------------------------------------------------------------
>
>                 Key: HDFS-4461
>                 URL: https://issues.apache.org/jira/browse/HDFS-4461
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>    Affects Versions: 2.0.3-alpha
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>            Priority: Minor
>         Attachments: HDFS-4461.002.patch, HDFS-4461.003.patch, 
> memory-analysis.png
>
>
> In the {{DirectoryScanner}}, we create a class {{ScanInfo}} for every block.  
> This object contains two File objects-- one for the metadata file, and one 
> for the block file.  Since those File objects contain full paths, users who 
> pick a lengthly path for their volume roots will end up using an extra 
> N_blocks * path_prefix bytes per block scanned.  We also don't really need to 
> store File objects-- storing strings and then creating File objects as needed 
> would be cheaper.  This has been causing out-of-memory conditions for users 
> who pick such long volume paths.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to