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

Daryn Sharp commented on HDFS-6709:
-----------------------------------

I sense a bit of condescension.  We're all friends here.  I'm just asking 
leading questions to make sure this approach is sound.  Y! stands to lose a lot 
if this doesn't actually scale.  To clarify the RTTI, I thought you meant more 
than just a per-instance reference to the class would be saved - although 
saving a reference is indeed great.  Regarding atomicity/CAS, it's relevant 
because using misalignment (over-optimization?) prevents adding concurrency to 
data structures that aren't but should allow concurrency.  I digress....

The important point for discussion is this:
bq. No, because every modern GC uses "generational collection." This means that 
short-lived instances are quickly cleaned up, without any pauses.

I know about generational collection but I'm admittedly not an expert.  Which 
young gen GC method does not pause?  ParNew+CMS definitively pauses...  Here 
are some quickly gathered 12-day observations from a moderately loaded, 
multi-thousand node, non-production cluster:
* ParNew collections:
** frequency: every ~4s
** range: 66ms -> 468ms
** avg: 130ms
** collects: 2.5GB
* CMS old collections:
** frequency: < 4 per day 
** range: 1.0s -> 2.9s
** avg: 1.5s

We have production clusters over 2.5X larger that sustained over 3X ops/sec.  
This non-prod cluster is generating ~625MB of garbage/sec.  How do you predict 
dynamic instantiation of INode and BlockInfo objects will help?  They generally 
won't be promoted to old gen which should reduce the infrequent CMS collection 
times.  BUT, will it dramatically increase the frequency of young collection 
and/or lead to premature tenuring?

I'm honestly asking for design specifics of how this will help.  Are you 
positive we won't get a little by giving up a lot?  I'd love for my concerns to 
be unfounded.

> Implement off-heap data structures for NameNode and other HDFS memory 
> optimization
> ----------------------------------------------------------------------------------
>
>                 Key: HDFS-6709
>                 URL: https://issues.apache.org/jira/browse/HDFS-6709
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: namenode
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>         Attachments: HDFS-6709.001.patch
>
>
> We should investigate implementing off-heap data structures for NameNode and 
> other HDFS memory optimization.  These data structures could reduce latency 
> by avoiding the long GC times that occur with large Java heaps.  We could 
> also avoid per-object memory overheads and control memory layout a little bit 
> better.  This also would allow us to use the JVM's "compressed oops" 
> optimization even with really large namespaces, if we could get the Java heap 
> below 32 GB for those cases.  This would provide another performance and 
> memory efficiency boost.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to