httpd の2

どうも、MinGW/CygwinだとsocketのAcceptに異常に時間が掛かるようだ。これはWinsockの問題のようなのでmosh側ではどうしようもない。
x64のLinux上で試したところ無事8000rps程度を記録(local時)。ただ、並列度がかなり低い(1.5程度/2core)。コードの負荷よりもGCの負荷が圧倒的に大きく、現状ではparallel-markを有効にしていないので、今後コードを増やしていけばより並列度は向上すると考えている。
両者に共通するのは、何故かgdb上ではなかなか落ちないという点。もちろん、ワーカスレッドを50とか100にすればgdb上でも落ちる。

(gdb) bt
#0  0x00002ad14b7d3114 in std::_Rb_tree_rotate_left ()
   from /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/libstdc++.so.6
#1  0x00002ad14b7d3364 in std::_Rb_tree_insert_and_rebalance ()
   from /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/libstdc++.so.6
#2  0x0000000000406d9c in std::_Rb_tree<int const* const, std::pair
<int const* const, scheme::Object>, std::_Select1st<std::pair<int const* const, scheme::Object> >, 
scheme::ltstr, gc_allocator<std::pair<int const* const, scheme::Object>
 > >::_M_insert_ (this=0xa20f80, __x=<value optimized out>, __p=0x8b45780,
    __v=@0x4680b5a0)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/include/g++-v4/bits/stl_tree.h:854
#3  0x00000000004076e7 in std::_Rb_tree<int const* const, std::pair
<int const* const, scheme::Object>, std::_Select1st<std::pair<int const* const, scheme::Object> >, 
scheme::ltstr, gc_allocator<std::pair<int const* const, scheme::Object>
 > >::_M_insert_unique_ (this=0xa20f80, __position={_M_node = 0x248f900},
    __v=@0x4680b5a0)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/include/g++-v4/bits/stl_tree.h:1201
#4  0x00000000004ac74d in scheme::gensymEx (theVM=0x37cf640,
    argc=<value optimized out>, argv=0x6979718)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/include/g++-v4/bits/stl_map.h:496
#5  0x000000000041adc1 in scheme::CProcedure::call (this=0x0, theVM=0x8b45780,
    argc=10620816, argv=0x0) at CProcedure.h:47

evalだけが原因では無いようで、当たり所が悪いと別のエラーも出る。

 Condition components:
 1. &i/o-read
 2. &lexical
 3. &who             who: "read"
 4. &message         message: "(): syntax error near [-inewline)\n] at 
<transcoded-textual-input-port <binary-input-port ./ext/serverport/body.mosh.ss>>:32. "
 5. &irritants       irritants: ()

ワーカスレッドはほどほどの数にするのが良いようだ。