You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2011/09/09 15:54:08 UTC

[jira] [Created] (CASSANDRA-3168) Arena allocation causes excessive flushing on small heaps

Arena allocation causes excessive flushing on small heaps
---------------------------------------------------------

                 Key: CASSANDRA-3168
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3168
             Project: Cassandra
          Issue Type: Bug
    Affects Versions: 1.0
            Reporter: Jonathan Ellis
            Assignee: Jonathan Ellis
             Fix For: 1.0


adding allocator.size() to Memtable.getLiveSize has two problems:

1) it double-counts allocated parts of regions
2) it makes the size of an empty memtable the size of a single region

(2) is a particular problem because flushing a nearly-empty memtable will not actually free up much memory -- we just trade one almost-empty region, for another.  In testing, I even saw this happening to the low-traffic system tables like LocationInfo.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (CASSANDRA-3168) Arena allocation causes excessive flushing on small heaps

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-3168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13101451#comment-13101451 ] 

Stu Hood commented on CASSANDRA-3168:
-------------------------------------

+1.

> Arena allocation causes excessive flushing on small heaps
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-3168
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3168
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.0.0
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>             Fix For: 1.0.0
>
>         Attachments: 0002-3168.txt, 3168.txt
>
>
> adding allocator.size() to Memtable.getLiveSize has two problems:
> 1) it double-counts allocated parts of regions
> 2) it makes the size of an empty memtable the size of a single region
> (2) is a particular problem because flushing a nearly-empty memtable will not actually free up much memory -- we just trade one almost-empty region, for another.  In testing, I even saw this happening to the low-traffic system tables like LocationInfo.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CASSANDRA-3168) Arena allocation causes excessive flushing on small heaps

Posted by "Stu Hood (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-3168?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stu Hood updated CASSANDRA-3168:
--------------------------------

    Attachment: 0002-3168.txt

Using both currentThroughput and allocator.size is definitely wrong... don't know what I was thinking there.

Since this was the only code using SlabAllocator.size(), here's a patch to remove it.

> Arena allocation causes excessive flushing on small heaps
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-3168
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3168
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.0.0
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>             Fix For: 1.0.0
>
>         Attachments: 0002-3168.txt, 3168.txt
>
>
> adding allocator.size() to Memtable.getLiveSize has two problems:
> 1) it double-counts allocated parts of regions
> 2) it makes the size of an empty memtable the size of a single region
> (2) is a particular problem because flushing a nearly-empty memtable will not actually free up much memory -- we just trade one almost-empty region, for another.  In testing, I even saw this happening to the low-traffic system tables like LocationInfo.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Updated] (CASSANDRA-3168) Arena allocation causes excessive flushing on small heaps

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-3168?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-3168:
--------------------------------------

    Attachment: 3168.txt

patch to remove allocator.size() from getLiveSize calculation.  also adds note about arena allocation to NEWS.

> Arena allocation causes excessive flushing on small heaps
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-3168
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3168
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.0
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>             Fix For: 1.0
>
>         Attachments: 3168.txt
>
>
> adding allocator.size() to Memtable.getLiveSize has two problems:
> 1) it double-counts allocated parts of regions
> 2) it makes the size of an empty memtable the size of a single region
> (2) is a particular problem because flushing a nearly-empty memtable will not actually free up much memory -- we just trade one almost-empty region, for another.  In testing, I even saw this happening to the low-traffic system tables like LocationInfo.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira