[ 
https://issues.apache.org/jira/browse/CASSANDRA-7546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14140007#comment-14140007
 ] 

graham sanderson commented on CASSANDRA-7546:
---------------------------------------------

Didn't want to deep dive, but out of curiosity I did do one run configured for 
a single partition

{code}
Results:
op rate                   : 5760
partition rate            : 5760
row rate                  : 5760
latency mean              : 158.7
latency median            : 151.2
latency 95th percentile   : 221.5
latency 99th percentile   : 262.3
latency 99.9th percentile : 282.4
latency max               : 396.0
total gc count            : 3
total gc mb               : 18779
total gc time (s)         : 0
avg gc time(ms)           : 67
stdev gc time(ms)         : 26
Total operation time      : 00:00:35
Improvement over 609 threadCount: 4%
             id, total ops , adj row/s,    op/s,    pk/s,   row/s,    mean,     
med,     .95,     .99,    .999,     max,   time,   stderr,  gc: #,  max ms,  
sum ms,  sdv ms,      mb
  4 threadCount, 6782      ,        -0,     120,     120,     120,    33.3,    
43.8,    50.6,    63.0,    83.9,    85.7,   56.6,  0.01940,      0,       0,    
   0,       0,       0
  8 threadCount, 6629      ,        -0,     212,     212,     212,    37.7,    
39.1,    57.0,    75.0,   127.2,   138.2,   31.3,  0.00868,      0,       0,    
   0,       0,       0
 16 threadCount, 27730     ,        -0,     566,     566,     566,    28.2,    
26.2,    50.6,    75.7,   125.5,   170.4,   49.0,  0.01963,      0,       0,    
   0,       0,       0
 24 threadCount, 51763     ,       798,     796,     796,     796,    30.1,    
29.5,    51.0,    76.9,    90.8,   144.4,   65.0,  0.01977,      2,     203,    
 203,      10,   12877
 36 threadCount, 74953     ,        -0,    1253,    1253,    1253,    28.7,    
27.8,    50.7,    60.5,    79.6,   308.0,   59.8,  0.01938,      0,       0,    
   0,       0,       0
 54 threadCount, 56948     ,        -0,    1807,    1807,    1807,    29.8,    
27.6,    52.6,    63.1,    78.1,   121.1,   31.5,  0.01170,      3,     176,    
 176,      12,   19816
 81 threadCount, 74856     ,        -0,    2369,    2369,    2369,    34.1,    
33.2,    57.2,    67.6,    76.6,   108.6,   31.6,  0.00946,      0,       0,    
   0,       0,       0
121 threadCount, 100526    ,        -0,    3158,    3158,    3158,    38.2,    
37.8,    63.4,    78.9,    89.1,   446.6,   31.8,  0.01805,      2,      93,    
  93,       1,   13063
181 threadCount, 277875    ,        -0,    4491,    4491,    4491,    40.2,    
40.2,    63.1,    79.1,    94.0,   679.7,   61.9,  0.01985,      5,     286,    
 286,      28,   32541
271 threadCount, 169870    ,        -0,    5205,    5205,    5205,    52.0,    
49.2,    84.9,   110.5,   140.5,   843.9,   32.6,  0.01320,      3,     157,    
 157,      11,   19408
406 threadCount, 187985    ,      5648,    5555,    5555,    5555,    73.0,    
64.2,   122.1,   156.0,   285.3,   848.6,   33.8,  0.01421,      3,     173,    
 173,      12,   19570
609 threadCount, 201184    ,      5540,    5534,    5534,    5534,   110.1,   
101.1,   160.5,   230.1,   378.9,   555.6,   36.4,  0.01917,      3,     163,   
  163,      17,   19709
913 threadCount, 205466    ,      5787,    5760,    5760,    5760,   158.7,   
151.2,   221.5,   262.3,   282.4,   396.0,   35.7,  0.01335,      3,     200,   
  200,      26,   18779
{code}

Obviously I don't know if the slowdown is on the load end or the server end 
(though there is some GC increase here - we'll see what the patch for this 
issue does). Note that if this is a synchronization problem with the load 
generator still, we do know for a fact that hinting is a good way of turning a 
large partition domain into a small partition domain (so I'll obviously be 
testing that too, though that isn't apples to apples either).

> AtomicSortedColumns.addAllWithSizeDelta has a spin loop that allocates memory
> -----------------------------------------------------------------------------
>
>                 Key: CASSANDRA-7546
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7546
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: graham sanderson
>            Assignee: graham sanderson
>             Fix For: 2.1.1
>
>         Attachments: 7546.20.txt, 7546.20_2.txt, 7546.20_3.txt, 
> 7546.20_4.txt, 7546.20_5.txt, 7546.20_6.txt, 7546.20_7.txt, 7546.20_7b.txt, 
> 7546.20_alt.txt, 7546.20_async.txt, 7546.21_v1.txt, hint_spikes.png, 
> suggestion1.txt, suggestion1_21.txt, young_gen_gc.png
>
>
> In order to preserve atomicity, this code attempts to read, clone/update, 
> then CAS the state of the partition.
> Under heavy contention for updating a single partition this can cause some 
> fairly staggering memory growth (the more cores on your machine the worst it 
> gets).
> Whilst many usage patterns don't do highly concurrent updates to the same 
> partition, hinting today, does, and in this case wild (order(s) of magnitude 
> more than expected) memory allocation rates can be seen (especially when the 
> updates being hinted are small updates to different partitions which can 
> happen very fast on their own) - see CASSANDRA-7545
> It would be best to eliminate/reduce/limit the spinning memory allocation 
> whilst not slowing down the very common un-contended case.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to