Apacheのチューニング
httpd.confに設定する最大接続数(MaxClients)とかをチューニングする場合、プロセスごとにどれくらいのメモリを使っているかを調べる必要がある。Linuxなら/proc/PID以下にその情報があるので、少し整形するスクリプトを書いてやれば調査が出来る。PerlのLinux::Smapsを使うとプログラマブルに書けるらしいけど、そもそもPerlを知らないし、あまり覚える気力も無いので、awkを使ってシェルスクリプトのみで書いてみた。
PIDを取得するときには
みたいに書くのが常套句だと思ってたら、pgrepという便利な道具があったらしい。ほう。
注意事項
今回のスクリプトでは/proc/PID/statusと/proc/PID/smapsからデータを取ってきて、
をフィルターしている。これが存在するのは、主に2.6系列のカーネルなので、2.4系列の古いカーネルだと、以下のスクリプトはまともに動作しない。詳しくはmanページを参照。
プロセスごとのメモリ使用量を調べる
プロセス間で共有されているメモリ使用量を調べる