Q4M - とりあえず pwrite を複数スレッドから呼ぶようにしてみた
とりあえず pwrite を複数スレッドから呼ぶようにしてみた。でもってベンチとろうとしたら perl のテストコードじゃサチってどうしようもなくなっていたので C で書いた。
$ MESSAGES=400000 CONCURRENCY=40 DBI='dbi:mysql:test;mysql_socket=/tmp/mysql51.sock' t/05-multireader.t 1..4 ok 1 ok 2 ok 3 ok 4 Multireader benchmark result: Number of messages: 400000 Number of readers: 40 Elapsed: 20.282 seconds Throughput: 19721.561 mess./sec.
その間の top はこんな感じ。並走度 2.5 あたりが現在の上限らしい (クライアント数を 40 から 80 に変更してもアイドルが発生する) 。次はやっぱ mmap なんでしょうなぁ。
top - 12:20:02 up 40 days, 19:49, 3 users, load average: 5.85, 2.64, 1.25 Tasks: 192 total, 4 running, 188 sleeping, 0 stopped, 0 zombie Cpu(s): 44.4%us, 32.6%sy, 0.0%ni, 20.5%id, 2.0%wa, 0.0%hi, 0.5%si, 0.0%st Mem: 32967696k total, 32433632k used, 534064k free, 458044k buffers Swap: 10485752k total, 0k used, 10485752k free, 27667516k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17786 kazuho 18 0 369m 27m 4960 S 259 0.1 7:58.66 mysqld 21515 kazuho 15 0 19240 1504 1168 S 2 0.0 0:00.16 05-multireader- 21536 kazuho 15 0 19244 1504 1168 S 2 0.0 0:00.14 05-multireader- 21538 kazuho 15 0 19244 1508 1168 S 2 0.0 0:00.17 05-multireader- 21586 kazuho 15 0 19240 1504 1168 S 2 0.0 0:00.17 05-multireader- 21513 kazuho 15 0 19244 1504 1168 S 1 0.0 0:00.15 05-multireader- 21514 kazuho 15 0 19244 1508 1168 S 1 0.0 0:00.13 05-multireader- 21516 kazuho 15 0 19244 1508 1168 R 1 0.0 0:00.15 05-multireader- 21517 kazuho 15 0 19244 1504 1168 S 1 0.0 0:00.15 05-multireader- 21520 kazuho 15 0 19244 1508 1168 S 1 0.0 0:00.16 05-multireader- 21530 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.15 05-multireader- 21531 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.15 05-multireader- 21539 kazuho 15 0 19244 1500 1168 S 1 0.0 0:00.15 05-multireader- 21543 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.17 05-multireader- 21544 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.17 05-multireader- 21549 kazuho 15 0 19244 1504 1168 R 1 0.0 0:00.15 05-multireader- 21550 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.15 05-multireader- 21552 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.16 05-multireader- 21553 kazuho 15 0 19244 1508 1168 S 1 0.0 0:00.16 05-multireader- 21563 kazuho 15 0 19240 1500 1168 S 1 0.0 0:00.14 05-multireader- 21565 kazuho 15 0 19244 1504 1168 S 1 0.0 0:00.16 05-multireader- 21571 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.16 05-multireader- 21579 kazuho 15 0 19244 1504 1168 S 1 0.0 0:00.14 05-multireader- 21580 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.15 05-multireader- 21581 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.15 05-multireader- 21588 kazuho 15 0 19240 1504 1168 S 1 0.0 0:00.16 05-multireader- 21589 kazuho 15 0 19240 1500 1168 S 1 0.0 0:00.14 05-multireader-
13:07追記: むー、どうも pwrite の直列化が律速じゃなかったみたい。結局 --with-mt-pwrite=no してもほとんど変わらない速度が出る。ちなみに --with-sync=no して fsync やめると 30,000 transaction/sec. 近い値が出る。