I tried to play with drizzle, and as my experience is mostly
unpleasant, as my goal left non-achieved.
The goal was to run the similar benchmark as described in
http://www.mysqlperformanceblog.com/2012/02/18/mariadb-5-3-4-benchmarks/
I decided to share it with you, in case you want an opinion from a third party.
I should say that I used RPM
drizzle7-2012.01.30-1.el6.x86_64.rpm.tar.gz . Probably some issues
resolved in more recent RC.
First, I received to many crashes, and in very simple cases, i.e.
wrong option name in drizzled.cnf
Reported bugs:
https://bugs.launchpad.net/drizzle/+bug/935866
https://bugs.launchpad.net/drizzle/+bug/935950
Another non-reported crash happens when I try to start drizzled
--user=root ( probably drizzle
tries to protect me from abusing the root account)
Second, It seems drizzled does not accept values like 64M
for max-heap-table-size and other variables, so I had
to convert it to 67108864.
Is that by intention ? I can't say this is a user friendly.
On the user friendly note, I also had to convert option names
from max_heap_table_size to max-heap-table-size,
as drizzled refused to understand underscores.
Which is probably not a big deal, but it was one on barriers for me
get drizzled started.
Long story short, it started and I uploaded sysbench data.
Now my benchmark uses pre-load tables trick to have a warm data in cache, I use:
( mysql -e "select avg(id) from sbtest$i FORCE KEY (PRIMARY); " sbtest
) > $OUTDIR/warmup.${i}.out 2>&1 &
This is 16 connections running in parallel.
This process never finished in drizzle,
as it seems it was serialized somewhere and I saw only 1 thread running.
Drizzle threads under gdb during this time:
(gdb) info threads all ap bt
43 Thread 0x7f38f4974700 (LWP 191767) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
42 Thread 0x7f38f3f73700 (LWP 191768) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
41 Thread 0x7f38f3572700 (LWP 191769) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
40 Thread 0x7f38f2b71700 (LWP 191770) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
39 Thread 0x7f38f2170700 (LWP 191771) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
38 Thread 0x7f38f176f700 (LWP 191772) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
37 Thread 0x7f38f0d6e700 (LWP 191773) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
36 Thread 0x7f38f036d700 (LWP 191774) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
35 Thread 0x7f38ef96c700 (LWP 191775) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
34 Thread 0x7f38eef6b700 (LWP 191776) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
33 Thread 0x7f38ee56a700 (LWP 191777) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
32 Thread 0x7f38edb69700 (LWP 191778) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
31 Thread 0x7f38ed168700 (LWP 191779) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
30 Thread 0x7f38ec767700 (LWP 191780) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
29 Thread 0x7f38ebd66700 (LWP 191781) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
28 Thread 0x7f38eb365700 (LWP 191782) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
27 Thread 0x7f38ea964700 (LWP 191783) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
26 Thread 0x7f38e9f63700 (LWP 191784) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
25 Thread 0x7f38e8b61700 (LWP 191786) 0x000000389be0b75b in
pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
24 Thread 0x7f38e8160700 (LWP 191787) 0x000000389be0b75b in
pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
23 Thread 0x7f38e775f700 (LWP 191788) 0x000000389be0b75b in
pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
22 Thread 0x7f38e6d5e700 (LWP 191789) 0x000000389b6de2f3 in select
() from /lib64/libc.so.6
21 Thread 0x7f38e9562700 (LWP 191790) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
20 Thread 0x7f38e635d700 (LWP 191791) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
19 Thread 0x7f38e595c700 (LWP 191792) 0x000000389b632d65 in sigwait
() from /lib64/libc.so.6
18 Thread 0x7f38e4e19700 (LWP 191793) 0x000000389be0d6c0 in
sem_wait () from /lib64/libpthread.so.0
17 Thread 0x7f38d3fff700 (LWP 191833) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
16 Thread 0x7f38d35fe700 (LWP 191835) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
15 Thread 0x7f38d2bfd700 (LWP 191838) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
14 Thread 0x7f38d21fc700 (LWP 191841) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
13 Thread 0x7f38d17fb700 (LWP 191843) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
12 Thread 0x7f38d0dfa700 (LWP 191845) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
11 Thread 0x7f3890169700 (LWP 191847) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
10 Thread 0x7f388f768700 (LWP 191850) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
9 Thread 0x7f388ed67700 (LWP 191856) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
8 Thread 0x7f388e366700 (LWP 191857) 0x00000000006df764 in ?? ()
7 Thread 0x7f388d965700 (LWP 191858) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
6 Thread 0x7f388cf64700 (LWP 191860) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
5 Thread 0x7f3887fff700 (LWP 191861) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
4 Thread 0x7f38875fe700 (LWP 191862) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
3 Thread 0x7f3886bfd700 (LWP 191863) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
2 Thread 0x7f38861fc700 (LWP 191864) 0x000000389be0b3dc in
pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
* 1 Thread 0x7f44d48a9760 (LWP 191766) 0x000000389b6dc053 in poll ()
from /lib64/libc.so.6
It seems it stuck in condition variables.
On this stage I gave up, as I do not have endless weekend.
--
Vadim Tkachenko, CTO, Percona Inc.
Phone +1-925-400-7377, Skype: vadimtk153
Schedule meeting: http://tungle.me/VadimTkachenko
Join us at Percona Live: MySQL Conference And Expo 2012
http://www.percona.com/live/mysql-conference-2012/
I saw the bugs you filed, thank you for that.
>
> I should say that I used RPM
> drizzle7-2012.01.30-1.el6.x86_64.rpm.tar.gz . Probably some issues
> resolved in more recent RC.
I think it's very unfortunate that building RPMs and DEBs was
neglected for so long. It really would have been more useful if you
could have tried the RC. Anyway, I hope that it's just a matter of
days before first packages are published for 7.1 series.
In some ways I'm even happy you gave up on the 7 release, since it is
old by Drizzle standards. Would be much more interesting to have
results for Drizzle 7.1. (I'm not saying I know it to be better, just
that the results would be more useful and comparable.)
Out of the bugs you filed, it's possible some of them have been fixed,
but I think I have seen the --no-defaults not working also with the
current trunk. I was doing something else so I didn't chase it down,
but that one seems familiar.
Basically, my experience is that Drizzle isn't generally very
unstable, but it's also not very tested in various (often common) end
user scenarios. Options being undocumented, or not working as
documented (or at all) is a common example. Getting bug reports from
users who weren't involved in developing the code themselves is the
best cure. Now the real test is whether the bugs are fixed or not.
(Last RC closed 20-30 bugs, so I'm optimistic.)
Otoh the cond_wait behavior you reported seems more like a bad bug and
will be interesting to see what the cause of that was, and how quickly
someone rushes to fix it.
> ( mysql -e "select avg(id) from sbtest$i FORCE KEY (PRIMARY); " sbtest
> ) > $OUTDIR/warmup.${i}.out 2>&1 &
>
> This is 16 connections running in parallel.
>
> This process never finished in drizzle,
> as it seems it was serialized somewhere and I saw only 1 thread running.
Seems like you didn't report this one anymore, so I did:
https://bugs.launchpad.net/drizzle/+bug/936409
henrik
--
henri...@avoinelama.fi
+358-40-8211286 skype: henrik.ingo irc: hingo
www.openlife.cc
My LinkedIn profile: http://www.linkedin.com/profile/view?id=9522559