2012年6月30日土曜日

straceでthreadの確保するメモリ量を調べてみる

最近straceとtcpdumpがお気に入り。

# strace -ff -tt -o strace -p `pidof mysqld`

-fでforkしたプロセスのシステムコールも拾う、とか書いてあるけれど、
派生したスレッドの情報も拾える(forkとpthreadの違い、メモリコピーするかどうかだけらしいし)

そのまま別のターミナルからmysqlクライアントを立ち上げると、
`Process 1883 attached' みたいなメッセージが上がる。
(スレッドキャッシュ利いてないときだけ。スレッドキャッシュがあればスレッド作らないから、これ出ない)

で、strace止めて、strace.1883ファイルを覗くと色々見られる。
23:55:49.196003 mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x5cd00000

システムコールはmanpageキーワードと一緒に(mmap manpage、みたいに)
ググれば大体出てくるので、出てきた順に調べていけばなんとなく読める。

取り敢えず、このスレッドは2Mくらい初期状態で確保するのねメモリ。

あと、プロンプトが上がってread()で待ちになるまでは0.5秒くらいだった。
アタッチしてたから体感でもちょっと遅い感じがしたけど。
家の仮想マシン貧弱だしね。。

0 件のコメント :

コメントを投稿