You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Eric Newton (JIRA)" <ji...@apache.org> on 2012/11/15 22:07:12 UTC

[jira] [Comment Edited] (ACCUMULO-847) out of memory error creating native thread

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

Eric Newton edited comment on ACCUMULO-847 at 11/15/12 9:05 PM:
----------------------------------------------------------------

It's much worse than I thought.

Based on a user's ingest patterns, I created a new little test program to ingest random-length values with random rows in a single column.  I ran experiments, watching resident memory use of the tserver with top.  I experimented with the number of arenas and also setting M_MMAP_THRESHOLD_ to zero to force all memory allocations to mmap() and not sbrk().  At the end of the test, I flushed all tables to disk, and waited for compactions to finish.

Here's the results for ingesting 10M k-v with a value size of 1-4096, on a tserver with 1G jvm and 1G native map:

||Arenas||Thresh=0||Res Mem||Secs||
|unlimited|FALSE|3|556|
|unlimited|TRUE|4.2|626|
|4|TRUE|2.5|565|
|1|FALSE|1.9|569|
|1|TRUE|1.9|534|

Pay no attention to the seconds column; I was doing other lightweight tasks on the computer while the test ran, so I expected that much noise.

I've started to recommend 

{noformat}
export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-1}
{noformat}

in {{bin/config.sh}} and I will make the change for the trunk.

                
      was (Author: ecn):
    It's much worse than I thought.

Based on a user's ingest patterns, I created a new little test program to ingest random-length values with random rows in a single column.  I ran experiments, watching resident memory use of the tserver with top.  I experimented with the number of arenas and also setting M_MMAP_THRESHOLD_ to zero to force all memory allocations to mmap() and not sbrk().  At the end of the test, I flushed all tables to disk, and waited for compactions to finish.

Here's the results for ingesting 10M k-v with a value size of 1-4096.

||Arenas||Thresh=0||Res Mem||Secs||
|unlimited|FALSE|3|556|
|unlimited|TRUE|4.2|626|
|4|TRUE|2.5|565|
|1|FALSE|1.9|569|
|1|TRUE|1.9|534|

Pay no attention to the seconds column; I was doing other lightweight tasks on the computer while the test ran, so I expected that much noise.

I've started to recommend 

{noformat}
export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-1}
{noformat}

in {{bin/config.sh}} and I will make the change for the trunk.

                  
> out of memory error creating native thread
> ------------------------------------------
>
>                 Key: ACCUMULO-847
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-847
>             Project: Accumulo
>          Issue Type: Bug
>          Components: tserver
>         Environment: RHEL6
>            Reporter: Eric Newton
>            Assignee: Keith Turner
>             Fix For: 1.5.0
>
>
> Long running tablet servers had many gigabytes of memory allocated above what was expected (native + jvm).  Inspection of the heap did not show an unusual number of native objects allocated.  Servers would eventually fail to create new threads.
> See HADOOP-7154 for the details.

--
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