We've passed another performance milestone using MySQL Cluster.
In 2002 we passed the limit of 1M reads per second. Now we've
passed the milestone of 1B reads per minute. We achieved 1.05BN
reads per minute on an 8-node cluster using MySQL Cluster
7.2.5.
The benchmark used the latest MySQL Cluster version, available on
launchpad and to be released as MySQL Cluster 7.2.5. The
benchmark program is flexAsynch. Each read is a transaction
consisting of a read of an entire row consisting of 25
attributes, each 4 bytes in size. flexAsynch uses the
asynchronous feature of the NDB API which enables one thread to
send off multiple transactions in parallel. This is handled
similarly to how Node.js works with callbacks registered that
reports back when a transaction is completed.
I will in a later blog discuss how an application can be designed
to make optimal use of the asynchronous API to enable the
application to reach these kind of performance numbers for key
lookup operations.
The benchmark was executed on a set of 2-socket servers using
X5670 with Infiniband interconnect and 48GB of memory per
machine. There were 8 data nodes in the cluster and each machine
had 1 data node placed in it. There were 10 machines running
flexAsynch (1 process per machine).
We reported a similar benchmark a year ago, the results from an 8
data node set-up was 2.1M reads per second (8X improvement) and
using 8 machines the set-up was 16 data nodes where we reached
4.3M reads per second (4X improvement). This dramatic improvement
is possible since we have made each data node make more effective
use of the available hardware threads. Previously each data node
exploited about 6 CPUs with 8 threads, in this benchmark we used
about 14 CPUs with 24 threads. We've also removed a number of
bottlenecks and the configuration of the threads is done in such
a manner as to handle many different loads well.
We have also improved the update numbers from 1.3M updates per
second in an 8-node setup to now reaching 1.9M updates per second
in a similar set-up.
The scripts required to run the benchmark are available on
our benchmark page. We've placed the configuration
file used to drive the benchmark in the dbt2-0.37.50 tarball in
the examples directory.
You can learn more about all of the enhancements in MySQL Cluster
7.2 from our Developer Zone article.
Feb
15
2012