Setup: C* 1.1.6, 6 node (Linux, 64GB RAM, 16 Core CPU, 2x512 SSD), RF=3, 1.65TB 
total used
Background: Client app is off - no reads/writes happening. Doing some cluster 
maintenance requiring node repairs and upgradesstables.

I've been playing around with trying to figure out what is making compactions 
run so slow.  Watching syslogs, it seems to average 3-4MB/s.  That just seems 
so 
slow for this set up and the fact there is zero external load on the cluster.  
As far as I can tell:
1. Not I/O bound according to iostat data 
2. CPU seems to be idiling also
3. From my understanding, I am using all the correct compaction settings for 
this setup: Here are those below:

snapshot_before_compaction: false
in_memory_compaction_limit_in_mb: 256
multithreaded_compaction: true
compaction_throughput_mb_per_sec: 128
compaction_preheat_key_cache: true

Some other thoughts:
- I have turned on DEBUG logging for the Throttle class and played with the 
live 
compaction_throughput_mb_per_sec setting.  I can see it performing the 
throttling if I set the value low (say 4), but anything over 8 it is apparently 
running wide open. [Side note: Although the math for the Throttle class adds 
up, 
over all the throttling seems to be very very conservative.]
- I accidently turned on DEBUG for the entire ...compaction.* package and that 
unintentionally created A LOT of I/O from the ParallelCompactionIterable class, 
and the disk/OS handled that just fine.

Perhaps I just don't fully grasp what is going on or have the correct 
expectations.  I am OK with things being slow if the hardware is working hard, 
but that does not seem to be the case.

Anyone have some insight?

Thanks

Reply via email to