Android、Java、Web系、Linux、マラソン等の備忘録

2011/09/25

サーバのメモリやCPUリソース監視に役立ちそうなコマンド

1 件のコメント

コマンドを確認したOS

  • CentOS 5

コマンドでのメリット

障害対応や原因究明のような緊急を要する作業には、GUIの解析ツールよりコマンドでの解析の方が汎用的。

システム管理の項目

構成管理 システムをこうせいする機器やソフトウェアといったリソースを管理したり、各リソースの設定情報などを管理
障害管理 異常を検出したら、その箇所を特定し、回復にあたる。また、事前に障害を定義し、検出の方法や対策、またはシステム予防などを取りまとめる
性能管理 システムの稼働状況などを基に、一定の性能を保っているか監視し、その維持にあたる
セキュリティ
管理
脆弱性対策、サービス停止攻撃に対する防御など、システム保護につとめ、セキュリティリスクを低減する。また、事前にセキュリティポリシーを策定
課金管理 使用したリソースを基に超すとを算出したり、課金に必要な情報を収集

Software Design (ソフトウェア デザイン) 2011年 02月号 [雑誌] 特集1:サーバ・ネットワーク超管理術より引用

ここでは、性能管理のCPU稼働率やメモリ使用率などをチェックしたい

psコマンド

起動中のプロセスの状態を一覧表示。

[httpプロセスの状態を確認したい場合 ]

# ps aux | grep httpd | grep -v grep
apache 1541 0.0 3.1 51744 32576 ? S Sep19 0:35 /usr/sbin/httpd
root 2495 0.0 1.4 31920 15112 ? Ss Aug27 0:01 /usr/sbin/httpd
apache 3238 0.0 3.4 54364 35208 ? S Sep18 1:18 /usr/sbin/httpd
apache 3239 0.0 3.4 54620 35344 ? S Sep18 1:18 /usr/sbin/httpd
apache 3240 0.0 3.4 54256 35052 ? S Sep18 1:10 /usr/sbin/httpd
apache 15076 0.0 3.3 53708 34572 ? S Sep18 1:17 /usr/sbin/httpd




[オプション]


















a 全ユーザのプロセスの状態を表示
u プロセスのユーザ名と開始時刻を表示内容に付加
x 制御端末を持たないデーモンなどのプロセスも合わせて表示





[上記のオプションで表示される内容(左から順番に)]






















































USER プロセスの実行ユーザ
PID プロセスID
%CPU CPU時間と実際に処理した時間の比率
%MEM 実メモリの使用率
VSZ プロセスの仮想メモリサイズ(kbytes単位)
RSS プロセスが使用している物理(スワップされていない)メモリサイズ(kbytes単位)
STAT 別表参照
START 開始時刻
COMMAND 実行しているコマンド





[STATの表示内容(1文字目)]











































D


ディスク(あるいは他の割り込み不可能な短期間の)待ち状態

I


idle状態(20秒以上スリープしている)

J


jail上で実行

R


runnable(実行可能)状態

S


20秒未満のsleep状態

T


stop状態

Z


死んでいる(ゾンビ)状態





[STATの表示内容(2文字目)]









































































+


プロセスはその制御端末のフォアグラウンドプロセスグループに属している

>


CPU のスケジュール優先度が上げられている

<


メモリ要求に対するソフトリミットが指定されており、現在そのリミットを超えている。このようなプロセスは(必然的に)スワップされない

A


ランダムなページスワップを要求した

E


終了しようとしている

L


実メモリ中にロックされたページを持っている

N


プロセスはスケジューリング優先度が下げられている

S


FIFO ページスワップを要求した

s


セッションリーダである

V


vfork の間、一時中断されている

W


スワップアウトされている

X


トレースされているかデバッグされている




grep -v grepはこれを入れないと、このコマンドのプロセスも拾ってきてしまう。



[sortコマンドでCPU使用率順に表示]



# ps aux | sort -nr -k 3


[sortコマンドでメモリ使用率順に表示]
# ps aux | sort -nr -k 4





[ソートのオプション]


















-n 先頭の文字列を数値として扱う
-r 比較の結果を逆順にする
-k<位置1> [, <位置2>] ソートするのに用いるフィールドを指定する。<位置1>から<位置2>の直前までがソートキーになる。


上記のコマンドだとたくさん表示されるかもしれないので。





# ps aux | sort -nr -k 4 | head -n 10




とすると、メモリ使用率の上位10件を降順で表示してくれる。







topコマンド



システムやプロセスのリアルタイムな稼働状況を表示する



$ top

top - 11:26:33 up 28 days, 19:16, 1 user, load average: 0.06, 0.06, 0.00
Tasks: 125 total, 1 running, 123 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.3%us, 3.6%sy, 11.6%ni, 80.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1027196k total, 798976k used, 228220k free, 145096k buffers
Swap: 2031608k total, 88k used, 2031520k free, 341680k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND








[1行目]
























11:26:33 現在時間
up 28 days, 19:16 稼働時間(28日と19時間16分稼働中)
1 user ログインユーザ数
load average: 0.06, 0.06, 0.00 CPU待ちのプロセス数の1分、5分、15分ごとの平均値。一般的にはこの数字が大きいほどCPUの負荷が高いと考えられる








[2行目(プロセス(タスク)関連)]






























125 total 総稼動プロセス数
1 running 稼働中のプロセス数
123 sleeping 待機中のプロセス数
0 stopped 停止プロセス数
1 zombie ゾンビ・プロセス数







[3行目(CPUの使用状態)]
















































4.3%us ユーザプロセスによる使用率
3.6%sy システムプロセスによる使用率
11.6%ni 優先指定プロセスによる使用率
80.5%id システム アイドル率
0.0%wa ファイルIOの待ち時間
0.0%hi ハードウェア割込み要求での使用時間
0.0%si ソフトウェア割込み要求での使用時間
0.0%st steal time。不本意なCPU時間消費(直訳でスマソ)







[4行目(メモリの状態)]
























1027196k total メモリ総量
798976k used 使用したメモリ量
228220k free 未使用メモリ量
145096k buffers バッファキャッシュの量







[5行目(スワップ領域の使用状況)]
























2031608k total スワップ領域総量
88k used 使用したスワップ領域の量
2031520k free 未使用スワップ領域の量
341680k cached ファイルキャッシュの量







[カラム]















































































PID プロセスID
USER タスクの所有者の実効ユーザ名
PR タスクの優先度
NI タスクのnice値
VIRT 仮想イメージ。タスクが使用している仮想メモリの総量(KB)

VIRT = SWAP + RES
SWAP タスクの総仮想メモリイメージのうちスワップされたサイズ(KB)
RES タスクが使用しているスワップされていない常駐している物理メモリ

RES = コードサイズ(KB) + 実効可能コード以外に割かれる物理メモリ(KB)
SHR タスクが利用している共有メモリの総量(KB)
S プロセスの状態

D:割り込み不可能なスリープ状態


R:実行中


S:スリープ状態


T:トレース中/停止された


Z:ゾンビ
%CPU CPU使用率。
%MEM メモリ使用率。タスクが使用している利用可能な物理メモリの占有率
TIME+ CPU時間。(1/100単位)
COMMAND プログラム名


上記のように単発でtopコマンドを実行した場合は、リアルタイムに状況を見ることができる。通常はCPU使用率順になっている。「Shift + M」でメモリ順に並べ替える事もできる。リアルタムの状況は目視で確認しやすいが統計的に調べるには、バッチモードで定期的に結果を出力させる方法もある。






$ top -b -d 1


 














-b バッチモードで起動
-d スクリーンの更新間隔。この場合、1秒間隔で出力される



 


$ top -b -d 1 >> log.txt


このようにファイルに書き込む事もできる。





freeコマンド







システムの空きメモリと利用メモリの量を表示する






 free -s 2



 







-s 後に指定する数字の秒間隔でポーリングを行う(この場合2秒間隔)


 


             total       used       free     shared    buffers     cached
Mem: 1027196 808728 218468 0 150476 342224
-/+ buffers/cache: 316028 711168
Swap: 2031608 88 2031520





[カラム]































total メモリの総量
used 使用したメモリ量
free 空きメモリ量
buffers バッファに利用(転用)されるメモリ量
cached キャッシュに利用(転用)されるメモリ量



実際に空いているメモリ:free + buffers + cachedで計算できる。計算しなくても赤字の部分が空いているメモリ量。



vmstatコマンド







メモリーやCPUの負荷率や使用状況を表示する






$ vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 88 218040 150676 342324 0 0 3 16 12 3 1 0 99 0 0
0 0 88 217876 150676 342324 0 0 0 0 1072 1465 24 6 71 0 0


2秒間隔で状況を表示する









































Procs b: 割り込み不可能なスリープ状態にあるプロセス数
Memory

swpd: 仮想メモリの量。

free: 空きメモリの量。


buff: バッファに用いられているメモリの量。


cache: キャッシュに用いられているメモリの量。


inact: アクティブでないメモリの量 (-a オプション)。


active: アクティブなメモリの量 (-a オプション)。


Swap

si: ディスクからスワップインされているメモリの量 (/s)。

so: ディスクにスワップしているメモリの量 (/s)。


IO

bi: ブロックデバイスから受け取ったブロック (blocks/s)。

bo: ブロックデバイスに送られたブロック (blocks/s)。


System

in: 一秒あたりの割り込み回数。クロック割り込みも含む。

cs: 一秒あたりのコンテキストスイッチの回数。


CPU

これらは CPU の総時間に対するパーセンテージである。

us: カーネルコード以外の実行に使用した時間 (ユーザー時間、nice 時間を含む)。


sy: カーネルコードの実行に使用した時間 (システム時間)。


id: アイドル時間。Linux 2.5.41 以前では、IO 待ち時間を含んでいる。


wa: IO 待ち時間。Linux 2.5.41 以前では、0 と表示される。


1 件のコメント :

  1. ... [Trackback]

    [...] Read More: takaiwa.net/archives/863 [...]

    返信削除