We didn't change MemtableThroughputInMB/min/maxCompactionThreshold, they're 
499/4/32.
As for why we're flushing at ~9m, I guess it has to do with this: 
http://thelastpickle.com/2011/05/04/How-are-Memtables-measured/
The only parameter I tried to play with is the 
compaction_throughput_mb_per_sec, tried cutting it in half and doubled, seems 
none of them helps avoiding the simultaneous compactions on nodes.

I agree that we don't necessarily need to add node, as long as we have a way to 
avoid simultaneous compaction on 4+ nodes.

Thanks,
Hefeng

On Sep 7, 2011, at 10:51 AM, Adi wrote:

> 
> On Wed, Sep 7, 2011 at 1:09 PM, Hefeng Yuan <hfy...@rhapsody.com> wrote:
> Adi,
> 
> The reason we're attempting to add more nodes is trying to solve the 
> long/simultaneous compactions, i.e. the performance issue, not the storage 
> issue yet.
> We have RF 5 and CL QUORUM for read and write, we have currently 6 nodes, and 
> when 4 nodes doing compaction at the same period, we're screwed, especially 
> on read, since it'll cover one of the compaction node anyways. 
> My assumption is that if we add more nodes, each node will have less load, 
> and therefore need less compaction, and probably will compact faster, 
> eternally avoid 4+ nodes doing compaction simultaneously.
> 
> Any suggestion on how to calculate how many more nodes to add? Or, generally 
> how to plan for number of nodes required, from a performance perspective?
> 
> Thanks,
> Hefeng
> 
> 
> 
> Adding nodes to delay and reduce compaction is an interesting performance use 
> case :-)  I am thinking you can find a smarter/cheaper way to manage that.
> Have you looked at 
> a) increasing memtable througput
> What is the nature of your writes?  Is it mostly inserts or also has lot of 
> quick updates of recently inserted data. Increasing memtable_throughput can 
> delay and maybe reduce the compaction cost if you have lots of updates to 
> same data.You will have to provide for memory if you try this. 
> When mentioned "with ~9m serialized bytes" is that the memtable throughput? 
> That is quite a low threshold which will result in large number of SSTables 
> needing to be compacted. I think the default is 256 MB and on the lower end 
> values I have seen are 64 MB or maybe 32 MB.
> 
> 
> b) tweaking min_compaction_threshold and max_compaction_threshold
> - increasing min_compaction_threshold will delay compactions
> - decreasing max_compaction_threshold will reduce number of sstables per 
> compaction cycle
> Are you using the defaults 4-32 or are trying some different values
> 
> c) splitting column families
> Again splitting column families can also help because compactions occur 
> serially one CF at a time and that spreads out your compaction cost over time 
> and column families. It requires change in app logic though.
> 
> -Adi
> 

Reply via email to