ラベル CPU の投稿を表示しています。 すべての投稿を表示
ラベル CPU の投稿を表示しています。 すべての投稿を表示

2008年12月12日金曜日

sysstat

システムの状態を監視することができるツール.
rpmで発見したのでいれてみたところ,謎なことにドキュメントしかなくてw
READMEに書いてあったページにいってダウンロードしました.
ここからsysstat-8.1.7.tar.gz
をダウンロード.
以下README通りにやってみたことを.

% tar xvf sysstat-8.1.7.tar.gz
% cd sysstat-8.1.7
% ./configure
% make && make install


インストール完了.
ここで,例えば,プロセスIDが2001のMysqlサーバを5秒ごとに20回値を見たい場合,

% ./pidstat -p 2001 5 20

とすることで,そのプロセスのユーザモード,システムモードでのCPU使用率を監視することができ,平均値まで算出してくれます.

詳細は分かりませんが,ある程度の時間監視したい場合に便利そう.

参照ページ:
sysstatで性能管理(その1)
pidstatでプロセス毎のCPU使用率を測定 | gmt-24.net

プロセスごとのCPU使用率の計算

(調べたいプロセスの使用時間) / (全体の時間)
で算出できます.

●調べたいプロセスの使用時間
/proc/(pid)/stat内の,
utime(14番目の値)+stime(15番目の値)
で算出可能

●全体の時間
/proc/stat内のCPU情報
cpu 3357 0 4313 1362393
(左から順に,ユーザーモード,低い優先度 (nice) でのユーザーモード,システムモード,タスク待ち(idle task))
を全て足し合わせた時間

*どちらの値も,積算されているものなので,同じ間隔をとって差をとる必要があります

/procの内容に関する詳細は,%man procで見られます.
この/proc以下の情報はクロック割り込みごとに値を更新します.
が,ユーザ空間から見るためには,ファイル形式になっているため,ファイルのopen,read,closeをしなければならず,多少の時間が必要です.
よって,1msや10ms間隔で見ることは無理そうです.

間隔がある程度大きくても大丈夫な場合は,調べたいプロセスに関する情報のみを追うことができる便利なツール,sysstatもあります.
詳細は次の記事へ.

全体を眺めるならばtopを利用.
ちなみにtopの更新はデフォルト5sだそうです.
オプションをつけることで更新間隔を変更することも可能です.

2008年12月2日火曜日

/proc ってすごい!!

システムのCPU使用率や,メモリ使用量などの情報が全て入っています.
例)
/proc/meminfo :メモリ搭載量・空きメモリ量などが記載
/proc/cpuinfo :CPUの情報が記載

また,/procディレクトリ以下には,それぞれのプロセスの情報も格納されています.
プロセスIDごとにディレクトリがあり,その中に格納されています
例)
/proc/pid/map :そのプログラムがどのアドレスを何に使っているか
/proc/pid/status :そのプロセスの名前や状態などの情報

全て情報がここを見ればわかっちゃうわけですねー!
すごい.

今得たいのは,それぞれのプロセスの情報なので,
/proc/pid/statを見ればOKなようです.

参考ページ:
/procによるLinuxチューニング
Manpage of PROC

2008年11月19日水曜日

CPUの情報

shell> cat /proc/cpuinfo
でCPUのコア数などが表示される

使用するCPUの数の制御

マルチプロセッサのコア数を減らすためには,BIOSで設定が必要.
だと思っていたのですが,
使用するCPUの数を減らすには
% echo 0 > /sys/devices/system/cpu/cpu1/online
でCPU1を,不使用にできる.
元に戻したい場合は/sys/devices/system/cpu/cpu1/onlineの値を1に直せば良い.
他CPU2,CPU3なども同じように設定することで制御可能.

すごい便利!

ちなみにrebootする度に値は1になります.

/*** 追記(2008/11/28)
これは,スケジューリングをするときにこのonlineの値を見てそのCPUを使う/使わないを判断しているためだろうとのこと.
だからrebootなどが必要ないのですね.
他にもCPUのfrequencyなどもここで制御できるようで,省エネのためなのでは,と先輩が言っていました.
***/