Bug #23176 | Falcon hangs on update key sysbench test with 256 threads | ||
---|---|---|---|
Submitted: | 11 Oct 2006 14:44 | Modified: | 24 Oct 2006 21:33 |
Reporter: | Patrick Galbraith | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Falcon storage engine | Severity: | S3 (Non-critical) |
Version: | OS: | Any | |
Assigned to: | CPU Architecture: | Any |
[11 Oct 2006 14:44]
Patrick Galbraith
[11 Oct 2006 14:47]
Patrick Galbraith
One other important note: When you start mysql, please start with --default-storage-engine=falcon. Often when running sysbench prepare then a subsequent test, it runs great because the table was created as myisam.
[11 Oct 2006 22:25]
Jim Starkey
It was a simple deadlock in the Serial Log when logging a rollback. The commit code had already been fixed. Sysbench is now running, but reporting index cleanup failures. I'm still trying to figure what's happening there.
[12 Oct 2006 0:55]
Patrick Galbraith
Test passes now: [patg@buffy mysql-5.1-falcon]$ /usr/local/bin/sysbench --test=oltp --mysql-engine-trx=yes --oltp-table-name=sbtest --oltp-test-mode=nontrx --oltp-nontrx-mode=update_key --max-requests=0 --oltp-dist-type=special --max-time=600 --mysql-table-engine=falcon --mysql-user=root --num-threads=4 --max-time=180 --mysql-port=5555 --mysql-socket=/tmp/falc.sock --mysql-db=sbtest run sysbench v0.4.8: multi-threaded system evaluation benchmark No DB drivers specified, using mysql Running the test with following options: Number of threads: 4 Doing OLTP test. Running non-transactional test Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases) Using "BEGIN" for starting transactions Using auto_inc on the id column Threads started! Time limit exceeded, exiting... (last message repeated 3 times) Done. OLTP test statistics: queries performed: read: 0 write: 166711 other: 0 total: 166711 transactions: 161274 (895.82 per sec.) deadlocks: 5437 (30.20 per sec.) read/write requests: 166711 (926.02 per sec.) other operations: 0 (0.00 per sec.) Test execution summary: total time: 180.0303s total number of events: 161274 total time taken by event execution: 719.2444 per-request statistics: min: 0.0003s avg: 0.0045s max: 31.4631s approx. 95 percentile: 0.0277s Threads fairness: events (avg/stddev): 40318.5000/427.53 execution time (avg/stddev): 179.8111/0.01
[12 Oct 2006 15:37]
Patrick Galbraith
Ok, sorry to change the synopsis a little bit and re-open, but I get a failure at 256 threads with this test. (gdb) bt #0 0x000000390fe0ce1d in raise () from /lib64/libpthread.so.0 #1 0x000000000085a958 in Error::debugBreak () at Error.cpp:93 #2 0x000000000085aa71 in Error::error (string=0xc0b008 "assertion failed at line %d in file %s\n") at Error.cpp:70 #3 0x000000000085ab07 in Error::assertionFailed (fileName=0xc10040 "Record.cpp", line=122) at Error.cpp:77 #4 0x000000000088e2ed in ~Record (this=0x2b9b55266c90) at Record.cpp:122 #5 0x000000000088cc50 in Record::release (this=0x2b9b55266c90) at Record.cpp:499 #6 0x00000000008174f6 in StorageTable::clearRecord (this=0x2aaaaad904d0) at StorageTable.cpp:289 #7 0x00000000008103bf in NfsStorageTable::external_lock (this=0x1e31b80, thd=0x127bc70, lock_type=2) at ha_falcon.cpp:1120 #8 0x0000000000750d5e in handler::ha_external_lock (this=0x1e31b80, thd=0x127bc70, lock_type=2) at handler.cc:3592 #9 0x0000000000657604 in unlock_external (thd=0x127bc70, table=0x1ed1198, count=1) at lock.cc:641 #10 0x00000000006578a3 in mysql_unlock_tables (thd=0x127bc70, sql_lock=0x1ed1170) at lock.cc:271 #11 0x00000000006f7fcf in mysql_update (thd=0x127bc70, table_list=0x23a69a0, fields=@0x23a3da8, values=@0x23a4140, conds=0x23a75b0, order_num=0, order=0x0, limit=18446744073709551614, handle_duplicates=DUP_ERROR, ignore=false) at sql_update.cc:676 #12 0x000000000067ba9b in mysql_execute_command (thd=0x127bc70) at sql_parse.cc:3320 #13 0x00000000006f0796 in Prepared_statement::execute (this=0x23a37e0, expanded_query=0x43ae6590, open_cursor=false) at sql_prepare.cc:2965 #14 0x00000000006f0b4f in mysql_stmt_execute (thd=0x127bc70, packet_arg=0x12808a1 "\002", packet_length=18) at sql_prepare.cc:2291 #15 0x000000000068266f in dispatch_command (command=COM_STMT_EXECUTE, thd=0x127bc70, packet=0x12808a1 "\002", packet_length=18) at sql_parse.cc:1789 #16 0x0000000000683d55 in do_command (thd=0x127bc70) at sql_parse.cc:1612 #17 0x0000000000684131 in handle_one_connection (arg=0x127bc70) at sql_parse.cc:1227 #18 0x000000390fe062ea in start_thread () from /lib64/libpthread.so.0 #19 0x000000390e5cb73d in clone () from /lib64/libc.so.6 #20 0x0000000000000000 in ?? () Steps to reproduce: 1. Make sure to start mysqld as normal, but with --max-connections=256 2. prepare sysbench --test=oltp --oltp-table-size=1000000 --mysql-engine-trx=yes --mysql-socket=/tmp/falc.sock --mysql-port=5555 --mysql-user=root --mysql-table-engine=falcon --mysql-db=sbtest prepare 3. run sysbench --test=oltp --mysql-engine-trx=yes --oltp-table-name=sbtest --oltp-test-mode=nontrx --oltp-nontrx-mode=update_key --max-requests=0 --oltp-dist-type=special --max-time=600 --mysql-table-engine=falcon --mysql-user=root --num-threads=256 --max-time=180 --mysql-port=5555 --mysql-socket=/tmp/falc.sock --mysql-db=sbtest run
[24 Oct 2006 21:33]
Patrick Galbraith
fixed.