You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Aleksey Yeschenko (JIRA)" <ji...@apache.org> on 2014/08/13 18:14:12 UTC

[jira] [Updated] (CASSANDRA-6126) Set MALLOC_ARENA_MAX in cassandra-env.sh for new glibc per-thread allocator

     [ https://issues.apache.org/jira/browse/CASSANDRA-6126?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Yeschenko updated CASSANDRA-6126:
-----------------------------------------

    Fix Version/s:     (was: 2.0.2)
                   2.0.10

> Set MALLOC_ARENA_MAX in cassandra-env.sh for new glibc per-thread allocator
> ---------------------------------------------------------------------------
>
>                 Key: CASSANDRA-6126
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6126
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Packaging
>         Environment: glibc >= 2.10
>            Reporter: J. Ryan Earl
>            Assignee: Brandon Williams
>            Priority: Minor
>             Fix For: 2.0.10
>
>
> Cassandra does not take into account particular GLIBC environment variables and the nature of the JVM.  Cassandra should set the MALLOC_ARENA_MAX variable, ideally in cassandra-env.sh, to have something like the following:
> {noformat}
> export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4}
> {noformat}
> This will limit the number of per-thread memory allocation arenas (ie separate memory ranges dedicated to each thread for memory allocation) for the new per-thread GLIBC malloc found in distribution like Enterprise Linux 6 and newer.  The net effect is a performance gain, specifically through reduced page-table size and kernel overhead of memory management.  Without the setting, Cassandra will occupy more than double the amount of virtual memory space, and due to increased pagetable size, the resident amount of memory will also be somewhat larger (~10% or so).  For more discussion, see HADOOP-7154.  Bottom line, cassandra-env.sh need to be setting MALLOC_ARENA_MAX to better use system resources.
> In general it can be stated all JVMs should use this environment setting as JVMs tend to be highly threaded and manage their own heap.  Cassandra and Hadoop in particular seem to benefit from my testing.
> More background: http://siddhesh.in/journal/2012/10/24/malloc-per-thread-arenas-in-glibc/



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