北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

マルチスレッドとメモリ使用量とpsコマンドと。

ふとpsコマンドを叩いたら、

$ ps auxw | grep mysql
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 823 0.0 0.0 2156 492 ? S 2005 0:00 /bin/sh /usr/bin/mysqld
mysql 859 0.0 1.4 65576 13120 ? S 2005 0:01 /usr/sbin/mysqld
mysql 864 0.0 1.4 65576 13120 ? S 2005 0:00 /usr/sbin/mysqld
mysql 865 0.0 1.4 65576 13120 ? S 2005 0:00 /usr/sbin/mysqld
...

と言う風に、mysqldがたくさんメモリ食ってるように見えて、焦った。マルチスレッドをプロセスとして実装しているからこういう表示になるらしい。マルチスレッドなプログラムのメモリ使用量を見るのって、どうするんだろう??

ググってたどり着いたjavaでの解説を読んだところ、psにlオプションを付けた場合の表示で、

特に「Fの値=040」は、「CLONE_VM」(in bits/sched.h)であり、仮想メモリ空間を共有することを示している。最初の1つの java プロセスのみは、プロセスとして起動されているので「Fの値=000(通常のプロセス)」であることに注意されたい。

と書かれていたけど、他にもFの値が040や140なプロセスがたくさんあったりして、どうもこの情報だけでメモリ使用量を見極めるのは難しい気がする。

行き詰まり(-_-)。