IBM POWER 8 is latest generation of the IBM POWER series, and
it's a hot one. Above all, for you reading this, POWER 8 is the
most Linux friendly so far and IBM really wants you to try this
out. Seveal Linux distributions are supporting POWER 8 now, and
MariaDB is of course the database of choise. Some cools things
with the POWER 8 architecture are the support for CAPI (google
for more details) and the fact that POWER 8 machines, due to a
vastly superior memory architecture, can grow in memory size,
which in general is good news but if you want your own POWER 8,
this makes then a bit expensive (although maybe not when you
consider the performance you get). IBM has fixed that recently
and have announced the LC series of servers which start at $6.600
(see more here: http://www-03.ibm.com/systems/power/hardware/linux-lc.html).
So, whar about MariaDB …
MariaDB 10.1 not only contains tons of new features, it has also
been polished to deliver top performance. The biggest improvement
has been achieved for scalability on massively multithreaded
hardware.
The following numbers show the throughput for a simplified
sysbench OLTP benchmark on MariaDB-10.1.8 compared to
MariaDB-10.0.21:
OLTP clients | MariaDB-10.0.21 | MariaDB-10.1.8 | increase |
---|---|---|---|
160 | 398124 | 930778 | 135% |
200 | 397102 | 1024311 | 159% |
240 | 395661 | 1108756 | 181% |
320 | …
At Percona Live MySQL Conference 2015 next week I’ll be presenting on “Towards One MILLION queries per second” on 14th April at 4:50pm in Ballroom A.
This is the story of work I’ve been doing to get MySQL executing ONE MILLION SQL queries per second. It involves tales of MySQL, tales of the POWER8 Processor and a general amount of fun in extracting huge amounts of performance.
As I speak, I’m working on some even more impressive benchmark results! New hardware, new MySQL versions and really breaking news on MySQL scalability.
In C (and C++) you can specify that a variable should take a specific number of bits of storage by doing “uint32_t foo:4;” rather than just “uint32_t foo”. In this example, the former uses 4 bits while the latter uses 32bits. This can be useful to pack many bit fields together.
Or, that’s what they’d like you to think.
In reality, the C spec allows the compiler to do just about anything it wants with these bitfields – which usually means it’s something you didn’t expect.
For a start, in a struct -e.g. “struct foo { uint32_t foo:4; uint32_t blah; uint32_t blergh:20; }” the compiler could go and combine foo and blergh into a single uint32_t and place it somewhere… or it could not. In this case, sizeof(struct foo) isn’t defined and may vary based on compiler, platform, compiler version, phases of the moon or if you’ve washed your hands recently.
Where …
[Read more]Yesterday, I got the basics going for MySQL Cluster on POWER. Today, I finished up a couple more patches to improve performance and ran some benchmarks.
This is on a 3.7Ghz POWER8 machine with non-balanced memory (only 2 of the 4 NUMA nodes have memory, so we have less total memory bandwidth than we could have, plus I’m going to bind ndbmtd to the CPUs in these NUMA nodes)
With a setup of a single replica and two data nodes on the one machine (each bound to a specific NUMA node), running the flexAsync benchmark on MySQL Cluster 7.3.7, I could get around:
- 3.2 million reads/sec
- 2.6 million deletes/sec
- 2.4 million updates/sec
- 2.4 million inserts/sec.
So, that’s at least in the right ballpark for a first go.
(I’m running this on a big endian host …
[Read more]So, I’ve written previously on MySQL on POWER, and today is a quick bit of news about MySQL Cluster on POWER – specifically MySQL Cluster 7.3.7.
I ran into three main issues in getting some flexAsync benchmark results. One of them was the fact that I wanted to do this in the middle of all the POWER8 machines I usually use moving buildings (hard to run benchmarks when computers are packed up in boxes on a truck).
The next issue was that ndbmtd (the multi-threaded data node) needs memory barriers for the magic message passing stuff between threads. So, that’s pretty easy (about an eight line patch).
The next issue was in the results from flexAsync, it turns out 32bit math is a bad idea with results from my POWER8 box.
My preliminary performance numbers are fairly promising (actually… what is the world record for a single machine and NDB these days? Single data node?). I think there’s a bit more low …
[Read more]MariaDB 10.0.14 was recently released, and is available for download here:
https://downloads.mariadb.org/mariadb/10.0.14/
This is the fifth GA release of MariaDB 10.0, and 15th overall release of MariaDB 10.0.
This is primarily a bug-fix release. (MariaDB 10.0 is the current stable series of MariaDB. It is an evolution of the MariaDB 5.5 with several entirely new features not found anywhere else and with backported and reimplemented features from MySQL 5.6.)
Here are the main items of note:
[Read more]Recently, Morgan has been writing on deprecating some MySQL features and inspired by that while working on MySQL on POWER, I wondered “What is the impact of the MySQL query cache on modern hardware?”
We’ve known for over six years (since before we started Drizzle) that the query cache hurt performance. It was for that reason that the query cache was one of the early things to be removed from Drizzle, it just didn’t scale on multi core systems that we were targeting.
So what about modern hardware? While working on MySQL 5.6 on POWER8, I enabled the query cache and ran a benchmark. …
[Read more]I’ve previously covered MySQL 5.6 on POWER (with patch), MySQL 5.6 Performance on POWER8 (spoiler: new performance record) and MySQL 5.7 on POWER.
Of course, The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions. Also, these numbers should be considered preliminary, but trust me – I did get them and it’s not April 1st.
From my last post, you saw that with my preliminary patch for MySQL 5.7 to work on POWER, we could easily match the previous record for sysbench point select …
[Read more]In a previous post, I covered porting MySQL 5.6 to POWER and subsequently, some new record performance numbers with MySQL 5.6.17 on POWER8.
Well, those following at home will be aware that not only is the next sentence sponsored by IBM Legal, but that MySQL 5.7 alleviates a bunch of the mutex contention that we saw with MySQL 5.6. The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions.
In looking at MySQL performance on POWER, it’s inevitable that I should look at MySQL 5.7 and what’s coming up in the next stable release of MySQL.
Surprisingly, a bunch of the core code in InnoDB and MySQL dealing with mutexes has changed in MySQL 5.7 when …
[Read more]