071234567891011121314151617181920212223242526272829303109

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【 --/--/-- (--) 】 スポンサー広告 | TB(-) | CM(-)

sarコマンドのマニュアル

とある依頼でLinuxマシンの性能監視を行う必要があったので、sarをいろいろ使いまくった。

sarはディストリビューションによっては標準で入れられてない場合もあるので、topやvmstatに比べたらなかなか知られてないとは思うけど、非常に便利なコマンド。
で、知られてないついでに、Linux JM Projectに日本語manページも存在しない。


なので、日本語に訳してみた。正式のJMプロジェクトのマニュアルみたいにレビューを通してないので、用語や表現の統一もしてなければ、自分が得意な分野以外の単語が訳として適切かもわからないけど、自分用の訳が他の人でも多少なりとも参考になればという感覚。

たぶんBSD、Linux、その他環境によって多少使えるオプションが違うけど、おおまかに言って似てるはず。私が参考にしたのは、Linux (SuSE)のsar。


sar(1)




名前


sar - システムのアクティビティについての情報を収集、保存、出力する。

書式


sar [ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -i interval ] [ -p ] [ -q ] [ -r ] [ -R ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ] [ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ] [ -o [ filename ] | -f [ filename ] ] [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ] [ interval [ count ] ]

説明


sarコマンドは、選択したOSのアクティビティ・カウンターの累積値を標準出力に出力する。指定した回数・間隔パラメータの値に基づき、アカウンティングシステムがシステム情報を指定した秒間隔で指定した回数表示する。間隔パラメータがゼロの場合は、sarコマンドはシステム開始後からの平均値を出力する。回数パラメータの指定なしに間隔パラメータのみ指定された場合は、レポートを出力し続ける。

収集されたデータは、標準出力に加え、-o filename フラグで指定したファイルに保存する事ができる。ファイル名の指定がない場合は、sarは標準のシステム活動日次ファイル /var/log/sa/sadd (ddは現在日付)に記録する。デフォルトではカーネルから得られる全ての情報が当データファイルへ記録される。



sarコマンドは-fオプションによって指定されたファイル、もしくはデフォルトの日次システムアクティビティ・データファイルから、過去に保存された結果をファイルから読み取り、標準出力に出力できる。



-Pオプションなしに実行すると、sarコマンドは、システム全体(全プロセッサの合計)の数値をパーセント表示のものについては平均値、それ以外は合計値として出力する。-Pフラグが指定された場合は、sarコマンドは指定されたひとつもしくは複数のプロセッサについての情報を出力する。-P ALLとして指定された場合は、sarコマンドは全プロセッサの個別情報と合計値の両方を出力する。



フラグを使用する事で、特定のシステムアクティビティを選んで出力できる。フラグを指定しない場合は、CPUアクティビティのみ出力する。-Aフラグを指定する事は、-bBdqrRSvmWy -I SUM -I XALL -n ALL -u ALL -P ALLを意味する。



デフォルトのsarコマンド出力(CPU利用状況レポート)は、重要なシステム資源であるため、システムアクティビティの調査にあたって最初に見るべきもののひとつである。CPU利用状況が100%に近い場合(user + nice + system値)、ワークロードはCPUがボトルネックになっている。



複数のサンプル値やレポートが必要な場合は、sarコマンドで出力ファイルを指定するのが便利である。sarコマンドをバックグラウンドで実行するシンタックスは、

sar -o datafile interval count >/dev/null 2>&1 &

である。



全てのデータはバイナリ形式で計測され、ファイルへ保存される。sarコマンドに-fコマンドを指定する事により、ファイルを選んで出力する事ができる。間隔と回数を指定して保存した結果から取得できる。回数パラメータが指定されない場合は、ファイル内に保存された全ての結果が選択される。このような方法によるデータ取得は、システム利用のピーク時間帯を判定するのに有用である。



注意:sarコマンドはローカルなアクティビティのみ出力する。


オプション



-A
このオプションを指定する事は、-bBdqrRSuvwWy -I SUM -I XALL -n ALL -u ALL -P ALLを指定する事と同等である。

-b
I/O転送レートについての統計を出力する。下記の値が表示される:

tps
物理デバイスに対し発行された1秒あたり総転送数。転送とは、物理デバイスに対してのi/Oリクエストの事である。複数の論理リクエストは単一のI/Oリクエストとして結合される場合がある。各転送のサイズは不定である。

rtps
物理デバイスに対し発行された1秒あたり総読み取りリクエスト数。

wtps
物理デバイスに対し発行された1秒あたり総書き込みリクエスト数。

bread/s
デバイスから1秒間に読み取られた総ブロック数。ブロックはカーネル2.4以降ではセクタと同じであり、512バイトの大きさである。それより古いカーネルについては、ブロックのサイズは不定である。

bwrtn/s
デバイスに対し1秒間に書き込まれた総ブロック数。


-B
ページングに関する統計を出力する。下記の指標のうちいくつかはカーネル2.5以降にのみ存在する。下記の値が表示される:

pgpin/s
システムがディスクからページインした、1秒あたり総キロバイト数。注意:古いカーネル(2.2.x)では、1秒あたりブロック数(キロバイトではない)である。

pgpout/s
システムがディスクへページアウトした、1秒あたり総キロバイト数。注意:古いカーネル(2.2.x)では、1秒あたりブロック数(キロバイトではない)である。

fault/s
1秒あたりのページフォールト数(メジャー、マイナーの合計)。一部のページフォールトはI/Oなしに解決可能であるため、これはI/Oが発生したページフォールト数ではない。

majflt/s
システムに発生した、ディスクからメモリページのロードが必要な1秒あたりのメジャーフォールト数。

pgfree/s
システムがフリーリストへ登録した1秒あたりのページ数。

pgscank/s
kswapdデーモンによりスキャンされた1秒あたりのページ数。

pgscand/s
直接スキャンされた1秒あたりのページ数。

pgsteal/s
メモリ要求を満たすためキャッシュ(ページキャッシュおよびスワップキャッシュ)から回収したページ数。

%vmeff
pgsteal / pgscanとして計算された数で、ページ回収の効率性を示す。100%に近い場合、ほぼ全ての非活動リストの末尾から来るページが回収された事を意味する。低すぎる場合(30%以下)、仮想メモリは何らかの問題を有している。出力対象の期間の間にページのスキャンが行われない場合は、このフィールドはゼロを示す。


-C
ファイルから読んで実行している場合、sadcにより挿入されたコメントsarに出力するよう指示する。

-d
各ブロックデバイスのアクティビティを出力する(カーネル2.4以降のみ)。出力時には、デバイス名にm-nの書式が使われる(DEVカラム)。mはデバイスのメジャー番号である。最近のカーネル(2.5以降)では、nはデバイスのマイナー番号であるが、2.5より前のカーネルでは、順番に番号が振られるのみである。-pオプションデバイス名を整形する事も可能である(下記参照)。Avgqu-sz、 await、 svctm、および%utilの値は2.4カーネルの一部では意味をなさないため0.00となっている。

tps
デバイスに対し行われた1秒あたりの転送数。複数の論理リクエストは結合してデバイスに対して1つのリクエストとして発行される場合がある。各転送のサイズは不定である。

rd_sec/s
デバイスから読み取ったセクタ数。セクタのサイズは512バイトである。

wr_sec/s
デバイスに書き込んだセクタ数。セクタのサイズは512バイトである。

avgrq-sq
デバイスに対し発行されたデバイスの平均サイズ(セクタ数)。

await
デバイスに対し発行されたI/Oリクエストの平均所要時間(ミリ秒)。この数値はリクエストがキュー上にある時間と処理を実行している時間を含む。

svctm
デバイスに対し発行されたI/Oリクエストが実際に処理する平均時間(ミリ秒)。

%util
CPU時間のうち、デバイスに対するI/O処理に使われた時間(デバイスの帯域利用)。この値が100%に近づくと、デバイスの飽和が発生している。


-e [ hh:mm:ss ]
レポートの終了時間を指定する。デフォルトの終了時間は18:00:00である。時間は24時間表記で指定する必要がある。このオプションはデータがファイルから読まれる際、もしくは書き込む際に使用できる(-fもしくは-oオプション)。

-f [ filename ]
(-o filenameフラグで作成したファイルについて)指定したファイル名のファイルからレコードを取得する。Filenameパラメータのデフォルト値は、当日の日次ファイル/var/log/sa/saddファイルである。-fオプションと-oオプションは排他的である。

-I { irq | SUM | ALL | XALL }
指定した割り込みに対する統計を出力する。パラメータirqは割り込み番号である。複数の割り込み番号を指定した場合、それら複数の割り込みを個別に参照する。SUMキーワードは1秒あたり受信割り込み数を表示する要指定する。ALLキーワードは最初の16の割り込みについての統計を表示し、XALLキーワードはAPIC割り込みの発生源を含め、全ての割り込みの統計を表示する。

-n { DEV | EDEV | NFS | NFSD | SOCK | ALL }
ネットワーク統計を出力する。

DEVキーワードは、ネットワークデバイスから得られる下記の統計を出力する。

IFACE
統計を出力するネットワークインターフェース名。

rxpck/s
1秒あたり総受信パケット数。

txpck/s
1秒あたり総送信パケット数。

rxkB/s
1秒あたり総受信キロバイト数。

txkB/s
1秒あたり総送信キロバイト数。

rxcmp/s
1秒あたり総受信圧縮パケット数(cslip等)。

txcmp/s
1秒あたり総送信圧縮パケット数(cslip等)。

rxmcst/s
1秒あたり総受信マルチキャストパケット数。


EDEVキーワードは、ネットワークデバイスから得られる失敗(エラー)に関する下記の統計を出力する。

IFACE
統計を出力するネットワークインターフェース名。

rxerr/s
1秒あたり総受信不良パケット数。

txerr/s
パケット送信時に発生した1秒あたりエラー発生数。

coll/s
パケット送信時に発生した1秒あたりパケット衝突数。

rxdrop/s
Linuxバッファ上の領域不足によって発生した、1秒あたりの受信パケットのドロップ数。

txdrop/s
Linuxバッファ上の領域不足によって発生した、1秒あたりの送信パケットのドロップ数。

txcarr/s
パケット送信時に発生した1秒あたりのキャリアエラー数。

rxfram/s
パケット受信時に発生した、1秒あたりフレーム・アラインメント・エラー数

rxfifo/s
1秒あたりの受信パケットのFIFOオーバーラン・エラー数

txfifo/s
1秒あたりの送信パケットのFIFOオーバーラン・エラー数


NFSキーワードは、下記のNFSクライアント・アクティビティについて出力する。

call/s
1秒あたりのRPCリクエスト数。

retrans/s
1秒あたりの(サーバータイムアウト等による)再送信が必要であったRPCリクエスト数。

read/s
1秒間に発生した'read'RPCコール数。

write/s
1秒間に発生した'write'RPCコール数。

access/s
1秒間に発生した'access'RPCコール数。

getatt/s
1秒間に発生した'getattr'RPCコール数。


NFSDキーワードは、下記のNFSサーバー・アクティビティについて出力する。

scall/s
1秒あたりの受信RPCリクエスト数。

badcall/s
1秒あたりの処理時にエラーが発生した不良RPCリクエスト数。

packet/s
1秒あたりの受信パケット数。

udp/s
1秒あたりの受信UDPパケット数。

tcp/s
1秒あたりの受信TCPパケット数。

hit/s
1秒あたりの応答キャッシュ・ヒット数。

miss/s
1秒あたりの応答キャッシュ・ミス数。

sread/s
1秒あたりの受信'read' RPCコール数。

swrite/s
1秒あたりの受信'write' RPCコール数。

saccess/s
1秒あたりの受信'access' RPCコール数。

sgetatt/s
1秒あたりの受信'getattr' RPCコール数。


SOCKキーワードは、下記の使用ソケットについての統計を出力する。

totsck
システムが使用した総ソケット数。

tcpsck
現在使用中のTCPソケット数。

udpsck
現在使用中のUDPソケット数。

rawsck
現在使用中のRAWソケット数。

ip-frag
現在使用中のIPフラグメント数。

tcp-tw
TIME_WAITステータスにあるTCPソケット数。


ALLキーワードは上記全てを指定するのと同等で、ネットワーク・アクティビティの全てを出力する。

-o [ filename ]
バイナリ形式で読み取り内容をファイルに保存する。各読み取りは別個のレコードになる。Filenameパラメータのデフォルト値は当日の日次データファイル/var/log/sa/saddである。-oオプションと-fオプションは互いに排他的である。

-P { cpu | ALL }
指定した単体のプロセッサ、もしくは複数のプロセッサ別の出力をする。ALLキーワードを指定した場合は、全プロセッサについて個別の統計を出力する。プロセッサ0が一つ目のプロセッサである事に注意。

-p
デバイス名を整形して表示する。-dオプションと共に使用する。デフォルトではデバイス名はdev m-n形式で表示されるが、当オプションを使用する事により、/dev下に表示されるのと同じ名前で表示されるようになる。名前のマッピング情報は、/etc/sys-stat/sysstat.ioconfによって管理されている。

-q
キューの長さとロードアベレージを出力する。

runq-sz
実行キューの長さ(実行時間待ちのタスク数)。

plist-sz
タスクリスト中のタスク数。

ldavg-1
直前1分間のシステムのロードアベレージ。ロードアベレージは、指定期間中の実行可能、実行中(ステート=R)、および割り込み不可のスリープ状態(ステート=D)のプロセス数として計算される。

ldavg-5
直前5分間のシステムのロードアベレージ。

ldavg-15
直前15分間のシステムのロードアベレージ。


-r
メモリ利用状況について下記の統計を出力。

kbmemfree
キロバイト単位での空きメモリ容量。

kbmemused
キロバイト単位での使用中メモリ容量。カーネル自身によって使用されるメモリについては対象外。

%memused
メモリの使用率。

kbbuffers
カーネルによってバッファとして使用されたメモリ容量(キロバイト)。

kbcached
カーネルによってデータをキャッシュするために使用されたメモリ容量(キロバイト)。

kbcommit
現在のワークロードに必要なメモリ容量(キロバイト)。メモリ不足が発生しない事を保証するために必要なRAM/スワップの量の見積である。

%commit
総メモリ容量(RAM+スワップ)に対する、現在のワークロードに必要なメモリ容量(キロバイト)。通常カーネルはメモリをオーバーコミットするため、この数値は100%を超える場合がある。


-R
メモリに関する下記の統計を出力する。

frmpg/s
システムにより解放された1秒あたりのメモリページ数。負の数はシステムにより確保されたページ数を示す。ページサイズはマシン・アーキテクチャにより、4KBか8KBのいずれかである事に注意。

bufpg/s
システムによりバッファとして使用された1秒あたりの追加メモリページ数。負の数はシステムがより少ないページ数をバッファとして使用している事を意味する。

campg/s
システムによりキャッシュされた1秒あたりの追加メモリページ数。負の数はシステムがより少ないページ数をキャッシュしている事を意味する。


-s [ hh:mm:ss ]
データの開始時間を指定し、sarコマンドに指定時間以降のレポートのみ出力させる。デフォルトの開始時間は08:00:00である。時間は24時間表記で指定する必要がある。このオプションはデータがファイルから読まれる際に使用できる(-fオプション)。

-S
スワップスペース利用状況について、下記の統計を出力する。

kbswpfree
空きスワップスペース容量(キロバイト)。

kbswpused
使用中のスワップスペース容量(キロバイト)。

%swpused
使用中のスワップスペースの割合。

kbswpcad
キャッシュされたスワップメモリの容量(キロバイト)。この数値は一度スワップアウトされたメモリのうち、スワップインしたがスワップエリアに残っているメモリである(メモリが必要な際に、既にスワップエリアにあるため再度スワップアウトする必要がなくなり、I/Oを減らせられる。)

%swpcad
使用されたスワップスペースに対する、キャッシュされたスワップメモリの割合。


-t
日次データファイルからデータを読む際、sarに元のデータファイル作成時のロケールに応じたタイムスタンプを表示させる。このオプションがない場合、現ユーザーのロケール時間に応じた出力がされる。

-u [ ALL ]
CPUの利用状況を出力する。ALLキーワードは全てのCPUに関する情報の出力を行うよう指定する。下記の情報が出力される。

%user
ユーザーレベル(アプリケーション)の実行によるCPU利用の割合。
このフィールドは仮想プロセッサ上で実行された時間も含む事に注意。

%usr
ユーザーレベル(アプリケーション)の実行によるCPU利用時間の割合。
このフィールドは仮想プロセッサで実行された時間を含まない事に注意。

%nice
Niceプライオリティで実行された、ユーザーレベルのCPU利用時間の割合。

%system
システムレベル(カーネル)の実行によるCPU利用時間の割合。
このフィールドは割り込みやソフト割り込みの処理に使われた時間も含まれる事に注意。

%sys
システムレベル(カーネル)の実行によるCPU利用時間の割合。
このフィールドは割り込みやソフト割り込みの処理に使われた時間を含まない事に注意。

%iowait
システムがI/Oリクエストの処理のためCPUがアイドルになった時間の割合。

%steal
ハイパーバイザーが他の仮想プロセッサを処理している間の仮想CPUの非自発的な待ち時間の割合。

%irq
割り込みを処理するために使われたCPU時間の割合。

%soft
ソフト割り込みを処理するために使われたCPU時間の割合。

%guest
仮想プロセッサを実行するのに使われたCPU時間の割合

%idle
CPUがアイドルで、かつI/Oリクエストの処理完了を待っていない時間の割合。

注意:SMPマシンでは、アクティビティの全く発生していない(全項目が0.00)プロセッサは、無効化されたプロセッサである。

-v
inode、ファイルやその他カーネルテーブルの状態を出力する。下記の情報が出力される。

dentunusd
ディクショナリー・キャッシュのうち未使用のキャッシュ・エントリーの数。

file-nr
システムにより使用されているファイルハンドルの数。

inode-nr
システムにより使用されているinodeハンドルの数。

pty-nr
システムにより使用されている疑似端末の数。


-V
バージョン番号を表示して終了する。

-w
タスクの生成とシステム切り替えのアクティビティについて出力する。

proc/s
1秒あたり生成されたタスクの数。

cswch/s
1秒あたり実行されたコンテキスト・スイッチの回数。


-W
スワッピングに関する統計の出力。下記の情報が出力される。

pswpin/s
1秒あたりにシステムが取り込んだスワップページ数。

pswpout/s
1秒あたりにシステムが書き出したスワップページ数。


-y
TTYデバイスのアクティビティについて出力。下記の値が表示される。

rcvin/s
現在のシリアル・ラインについて、1秒間に受け取った割り込みの数。シリアル・ラインの番号はTTYカラムに与えられる。

xmtin/s
現在のシリアル・ラインに対して、1秒間に発生した送信割り込み。

framerr/s
現在のシリアル・ラインに対して、1秒間に発生したフレームエラー。

prtyerr/s
現在のシリアル・ラインに対して、1秒間に発生したパリティエラー。

brk/s
現在のシリアル・ラインに対して、1秒間に発生したブレーク数。

ovrun/s
現在のシリアル・ラインに対して、1秒間に発生したオーバーランエラー数。

カーネル2.6では、これら統計はrootのみ取得可能である。


環境変数


sarコマンドは下記の環境変数を実行時に使用する。

S_TIME_FORMAT
この環境変数が存在し、かつ値がISOである場合は、日付をレポートのヘッダに出力する際に現在のロケールは無視される。sarコマンドは代わりにISO 8601フォーマット(YYYY-MM-DD)を使用する。

S_TIME_DEF_TIME
この環境変数が存在し、かつ値がUTCである場合は、sarはデータをUTC時間で保存する(出力は変わらずローカル時のまま)。sarは/var/log/saディレクトリから日次ファイルを選ぶ際にもUTC時間を使用する。この変数は複数のタイムゾーンにユーザがいるようなシステムで有用である。





sar -u 2 5
2秒ごとのCPU利用状況のレポートを出力する。5行出力される。

sar -I 14 -o int14.file 2 10
IRQ 14についての2秒ごとの統計を出力する。10行出力される。データはint14.fileという名前でファイルに保存される。

sar -r -n DEV -f /var/log/sa/sa16
sa16という日次ファイルに保存されたメモリとネットワークに関しての統計を出力する。

sar -A
日次データファイルに保存された統計の全てを出力する。


バグ


sarコマンドが機能するためには、/procファイルシステムがマウントされている必要がある。

カーネルのバージョンによっては、全ての統計値が提供されるわけではない。

ファイル



/var/log/sa/sadd
ddパラメータが当月の日付を意味する、日次データファイル。


/procはシステム統計値のための様々なファイルを有する。

著者


Sebastien Godard (sysstat orange.fr)

参照


sadc(8), sa1(8), sa2(8), sadf(10< isag(1), pidstat(1), mpstat(1), iostat(1), vmstat(8)

 
スポンサーサイト
【 2014/05/22 (Thu) 】 OS Linuxコマンド(管理用) | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

Ed U Song

Author:Ed U Song
社内ノマドなエンジニア。
仕事で触れる機会のないものを自宅環境作って実験。

スポンサーリンク
最新コメント
最新トラックバック
検索フォーム


                                         
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。