色々ユーザランドでのロックを使わない形に書き換えても、なかなか速くならなかったのが、pwrite をやめて mmap(PROT_WRITE) 経由での書き込みにしたら、20% 程度あった idle time が 0 になった。 ベンチマーク的にはこんな感じ。上が pwrite 経由。下が msync(MS_ASYNC) 経由の書き込み。どちらも読み込みは mmap。 $ USE_C_CLIENT=1 MESSAGES=400000 CONCURRENCY=40 DBI='dbi:mysql:test;mysql_socket=/tmp/mysql51.sock;user=root' t/05-multireader.t 1..4 ok 1 - check number of messages ok 2 - min value of received message ok 3 - max v