Erlang で分散 Key-Value Storage を書いているのだがデータの insert で思うように速度が出ていない。get の 10 倍ほど遅い。 ログを見た印象と直感的には insert の際の lock が競合しているのではないかと思われたがプロファイルをとってみたらボトルネックは lock ではなかった。 まず始めに Erlang 付属の fprof でプロファイルをとったがゴミデータばかりで肝心の事は何も分からなかった。 gen_server は末尾再帰ループなので余計に出力が見にくい。さらに数千プロセス分のログが出るので分からない。ML でも gen_server と fprof の相性は良くないという投稿が見受けられた。 色々ググっていたところ、Erlang 製のAmazon Dynamoクローン「Dynomite」の開発者がブログで dynomite_prof