← Back to team overview

maria-developers team mailing list archive

FYI: More ha_cassandra benchmark data

 

Hi!

For the record, posting some ha_cassandra benchmarks:

<contents>
Run #1: re-run previous benchmarks
Run #2: evaluate max. network performance
Run #3: Load two dbt3 databases at once
Run #4: load two datasets into different nodes
Results
Conclusions
</contents>

=== Run #1: re-run previous benchmarks ===
My results with
- m1.large mysqld node  (mysqld uses optimized binary)
- Cassandra on 2*m1.large nodes
- Loading data with the standard LOAD DATA INFILE command.

- %CPU mysqld =14

sar -n DEV 10:
03:04:41 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:04:51 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:04:51 PM      eth0   1575.20    156.60     81.47   4458.13      0.00      0.00      0.00

On cassandra node:
- jsvc %CPU 70-170...

02:51:00 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
02:51:05 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
02:51:05 PM      eth0   8325.20   7333.80   3376.25   1696.74      0.00      0.00      0.00

Total load time: time: 19 min.

=== Run #2: evaluate max. network performance ===

for comparison, sending /dev/zero on one host to /dev/null on another with nc:

03:39:24 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:39:34 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:39:34 PM      eth0  16756.70   3688.50    851.91  87477.61      0.00      0.00      0.00

sending in both directions:

SQL:
03:45:36 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:45:46 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:45:46 PM      eth0  63308.20   4473.50  73002.80  81484.77      0.00      0.00      0.00

Cassandra:
03:47:32 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
03:47:42 PM        lo      0.20      0.20      0.01      0.01      0.00      0.00      0.00
03:47:42 PM      eth0  60741.50  15241.70  84110.07  70712.32      0.00      0.00      0.00

=== Run #3: Load two dbt3 databases at once ===
- Loading two DBT-3 databases at once.
- The databases have their own key spaces, and mysql tables 
- Still, both loaders connect to the same cassandra host.

Cassandra host:
04:27:57 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:28:07 PM      eth0   9979.10   8984.00   6006.77   2621.08      0.00      0.00      0.00
04:29:07 PM      eth0   9181.80   7315.00   6416.25   2686.83      0.00      0.00      0.00
04:29:17 PM      eth0  10277.00   9629.60   6047.00   2672.02      0.00      0.00      0.00

04:30:23 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:30:33 PM     all     34.56     24.80     24.71      0.18      0.05     15.69
04:30:53 PM     all     32.08     11.20     24.25      1.31      0.08     31.07
04:31:03 PM     all     35.59     22.55     22.28      0.27      0.00     19.31

it has periodical slow-downs like this:
04:32:38 PM     all     53.25      1.30     19.05      3.03      0.00     23.38
04:32:39 PM     all     65.84     10.40     21.78      0.00      0.00      1.98
04:32:40 PM     all     37.14     33.81     18.10      0.95      0.00     10.00
04:32:41 PM     all     42.65     25.98     26.96      0.00      0.00      4.41
04:32:42 PM     all     33.17     39.42     19.23      0.00      0.00      8.17
04:32:43 PM     all     36.89     36.89     19.90      0.00      0.00      6.31
04:32:44 PM     all     39.81     35.55     13.74      0.00      0.00     10.90
04:32:45 PM     all     34.45     33.97     22.01      0.00      0.00      9.57
04:32:46 PM     all     35.58     36.06     21.15      0.00      0.00      7.21
04:32:47 PM     all     31.05     35.16     15.07      0.00      0.00     18.72
04:32:48 PM     all     41.31     26.29     20.66      0.00      0.00     11.74
04:32:49 PM     all     39.02     32.20     25.37      0.00      0.00      3.41
04:32:50 PM     all     26.64     34.50     13.97      0.00      0.00     24.89
04:32:51 PM     all     56.93     27.72     12.87      0.00      0.00      2.48
04:32:52 PM     all     71.14     15.42     11.44      0.00      0.00      1.99
04:32:53 PM     all     64.22      8.82     23.04      0.00      0.00      3.92
04:32:54 PM     all     76.73      1.98     19.31      0.00      0.00      1.98
04:32:55 PM     all     61.24      0.00     30.14      0.96      0.00      7.66
04:32:56 PM     all     29.20      0.00     32.40      0.00      0.00     38.40
04:32:57 PM     all     30.29      0.00     29.88      0.00      0.00     39.83
04:32:58 PM     all     23.19      0.00     20.29      0.00      0.36     56.16
04:32:59 PM     all     23.34      0.00     16.38      0.00      0.35     59.93
04:33:00 PM     all     20.07      0.00     21.90      0.00      0.00     58.03
04:33:01 PM     all     24.20      0.00     18.86      0.00      0.00     56.94
04:33:02 PM     all     20.07      0.00     22.18      0.00      0.70     57.04

Is this a compaction? 


mysqld host:
04:29:01 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
04:29:01 PM      eth0   1416.20    247.90     75.43   6578.11      0.00      0.00      0.00
04:29:11 PM      eth0   1175.00    199.60     62.49   5292.67      0.00      0.00      0.00
04:29:21 PM      eth0   1074.60    186.90     57.21   4952.19      0.00      0.00      0.00

04:30:30 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:30:40 PM     all      7.77      0.00      0.56      0.00      0.05     91.62
04:30:50 PM     all      8.20      0.00      0.60      0.00      0.30     90.89
04:31:00 PM     all      8.01      0.00      0.66      0.00      0.05     91.28

Conclusions:
- mysqld is still idle most of the time. 
- Cassandra is busier. Sometimes, it is 1014/Sep/12 12:50 PM0% busy.
- network use betwen mysqld and cassandra is 2x more, which is expected

Run time: 24 minutes for both (compare to 19 minutes)


=== Run #4: load two datasets into different nodes ===

==== Network ====
SQL node: 
05:44:21 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
05:44:41 PM      eth0   1178.10    210.10     62.81   5510.03      0.00      0.00      0.00
05:44:51 PM      eth0   1062.10    200.90     57.53   5152.63      0.00      0.00      0.00
05:45:01 PM      eth0    965.80    194.00     52.53   5012.62      0.00      0.00      0.00

Cassandra1:
05:44:19 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
05:44:49 PM      eth0  10159.00   8659.20   4443.26   1798.75      0.00      0.00      0.00
05:44:59 PM      eth0   9018.20   7750.10   3982.21   1578.30      0.00      0.00      0.00
05:45:09 PM      eth0   8741.30   7521.70   3921.69   1541.55      0.00      0.00      0.00

Cassandra2:
05:44:56 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
05:45:06 PM      eth0   9305.60   7906.00   4121.10   1622.92      0.00      0.00      0.00
05:45:16 PM      eth0   9186.50   7828.80   4258.12   1681.78      0.00      0.00      0.00
05:45:26 PM      eth0   9675.70   8283.10   4306.89   1698.37      0.00      0.00      0.00

==== CPU ====
SQL node: 
05:46:45 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:46:55 PM     all      8.39      0.00      0.70      0.00      0.40     90.51
05:47:05 PM     all      7.65      0.00      0.74      0.00      0.70     90.91
05:47:15 PM     all      8.76      0.00      0.64      0.00      0.89     89.70

cassandra 1:
05:47:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:47:11 PM     all     27.28     28.24     27.55      0.00      0.05     16.89
05:47:21 PM     all     31.45     24.44     27.56      1.38      0.05     15.13
05:47:31 PM     all     29.46     19.60     23.19      2.35      0.04     25.36
05:47:41 PM     all     38.47      0.04     14.21      0.15      0.07     47.06
05:47:51 PM     all     31.04      9.92     17.97      0.39      0.08     40.61
05:48:01 PM     all     24.73     28.07     21.77      0.26      0.04     25.12
05:48:11 PM     all     19.79     11.67     19.23      1.83      0.07     47.41
05:48:21 PM     all     20.29      0.00     11.07      0.06      0.13     68.44
05:48:31 PM     all     24.08      0.00     11.96      0.13      0.13     63.69

Cassandra 2:
05:46:56 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
05:47:06 PM     all     31.97     27.14     26.91      0.09      0.05     13.85
05:47:16 PM     all     32.79     20.43     23.39      2.34      0.04     21.01
05:47:26 PM     all     26.43     27.07     27.29      0.14      0.09     18.98
05:47:36 PM     all     17.72      8.59     12.00      2.97      0.21     58.52
05:47:46 PM     all     13.63      0.00      6.77      0.06      0.30     79.23
05:47:56 PM     all     27.19      3.92      8.52      0.11      0.25     60.01
05:48:06 PM     all     19.94     27.83     18.47      0.13      0.08     33.54
05:48:16 PM     all     13.69     16.01     14.24      2.69      0.15     53.22
05:48:26 PM     all     18.13      0.00      9.57      0.25      0.38     71.66


=== Results ===
The first client failed with 
ERROR 1928 (HY000) at line 145: Internal error: 'TimedOutException: Default TException.'

real	4m3.463s
user	0m0.008s
sys	0m0.000s

The second completed after:
real	19m57.875s   (which matches load time for loading one dataset).

=== Conclusions ===
- need to fix the Timeout error (filed as MDEV-535)
- CPU time spent by mysqld is negligible now  (I don't know whether this comes
  from using faster CPU for SQL node, or using a release build of mariadb, or
  both)
- A confirmation of previous findings: if we use only one connection, the speed
  at which we can insert the data is very limited (see: with two connections,
  we have inserted 2x data in 20% more time.  This is where we used two
  connections to connect to the *same* node)

- I am not sure whether I should just start using multiple connections, or also
  automatically route the data (both writes and reads) to the right node?
   - need to check out Hector client. It seems to be able to connect to
     multiple nodes of Cassandra cluster.

BR
 Sergei
-- 
Sergei Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog


Follow ups