On Wed, Sep 7, 2011 at 2:09 PM, Hefeng Yuan <hfy...@rhapsody.com> wrote:

> 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
>
>
>
Can you check in the logs for something like this
...... Memtable.java (line 157) Writing
Memtable-<ColumnFamilyName>@1151031968(67138588 bytes, 47430 operations)
to see the bytes/operations at which the column family gets flushed. In case
you are hitting the operations threshold you can try increasing that to a
high number. The operations threshold is getting hit at  less than 2% of
size threshold. I would try bumping up the *memtable_operations *substantially.
Default is 1.1624999999999999(in millions).  Try 10 or 20 and see if your CF
flushes at higher size. Keep adjusting it until the frequency/size of
flushing becomes satisfactory and hopefully reduces the compaction overhead.

-Adi







> 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