runacct シェルスクリプトは、呼び出されるたびに基本的な 5 種類のレポートを生成します。5 つの基本レポートは次のとおりです。
表 20–2 日次アカウンティングレポート
レポートの種類 |
説明 |
---|---|
tty 番号別の端末回線の利用状況を示す |
|
ユーザー別のシステム資源の利用状況を示す。ユーザー ID 順に表示される |
|
コマンド別のシステム資源の利用状況を示す。メモリー使用量が大きい順に表示される。つまり、メモリーを最も多く使用したコマンドから先に表示される。これと同じ情報が月次コマンド概要で該当月について報告される |
|
monacct プログラムの最新の実行から累積した日付を反映した累積概要 |
|
各ユーザーが最後にログインした日付を示す。日付順に表示される |
このレポートは、使用された各端末回線に関する情報を示します。次に日次レポートの例を示します。
Oct 16 02:30 2001 DAILY REPORT FOR venus Page 1 from Mon Oct 15 02:30:02 2001 to Tue Oct 16 02:30:01 2001 1 runacct 1 acctcon TOTAL DURATION IS 1440 MINUTES LINE MINUTES PERCENT # SESS # ON # OFF console 868 60 1 1 2 TOTALS 868 -- 1 1 2 |
from および to の行は、レポートに反映される時間帯を指定します。この時間帯とは、直前の日次レポートが生成された時間から現在の日次レポートが生成されるまでの時間のことです。次に、システムリブートのログ、シャットダウン、電源異常からの回復、acctwtmp プログラムによって /var/adm/wtmpx ファイルにダンプされたその他のレコードが続きます。詳細は、acct(1M) のマニュアルページを参照してください。
このレポートの第 2 部は回線利用状況の内訳です。TOTAL DURATION は、システムがどれだけの時間マルチユーザーモード (端末回線を通してアクセス可能です) であったかを示します。次の表は、日次レポートのデータを説明したものです。
表 20–3 日次レポート
マシンの稼動中は、/var/adm/wtmpx ファイルが接続アカウンティングの元になるため、このファイルを監視する必要があります。wtmpx ファイルが急速に大きくなる場合は、次のコマンドを実行して、どの tty 回線が最も使用頻度が高いかを調べてください。
# /usr/lib/acct/acctcon -l file < /var/adm/wtmpx |
割り込みが頻繁に発生する場合は、全般的なシステムのパフォーマンスが影響を受けることになります。さらに、wtmp ファイルが壊れることもあります。この問題を解決するには、壊れた wtmpx ファイルの修復方法を参照してください。
このレポートは、システム資源の利用状況のユーザー別の内訳を示します。このレポートの例は、次のとおりです。
Oct 16 02:30 2001 DAILY USAGE REPORT FOR skisun Page 1 LOGIN CPU (MINS) KCORE- MINS CONNECT (MINS) DISK # OF # OF # DISK FEE UID NAME PRIME NPRIME PRIME NPRIME PRIME NPRIME BLOCKS PROCS SESS SAMPLES 0 TOTAL 72 148 11006173 51168 26230634 57792 539 330 0 2150 1 0 root 32 76 11006164 33664 26230616 22784 0 0 0 127 0 4 adm 0 0 22 51 0 0 0 420 0 0 0 101 rimmer 39 72 894385 1766020 539 330 0 1603 1 0 0 |
次の表は、日次利用状況レポートのデータを説明したものです。
表 20–4 日次利用状況レポート
このレポートはコマンド別のシステム資源の利用状況を示します。このレポートでは、最も使用率の高いコマンドがわかり、それらコマンドがどのようにシステム資源を利用しているかに基づいて、どのようにしたらシステムの最適チューニングが可能かを知ることができます。
これらのレポートは TOTAL KCOREMIN によってソートされます。TOTAL KCOREMIN は任意の基準ですが、システムでのドレーンの計算にはすぐれた指標です。
日次コマンド要約の例を、次に示します。
TOTAL COMMAND SUMMARY COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ TOTALS 2150 1334999.75 219.59 724258.50 6079.48 0.10 0.00 397338982 419448 netscape 43 2456898.50 92.03 54503.12 26695.51 2.14 0.00 947774912 225568 adeptedi 7 88328.22 4.03 404.12 21914.95 0.58 0.01 93155160 8774 dtmail 1 54919.17 5.33 17716.57 10308.94 5.33 0.00 213843968 40192 acroread 8 31218.02 2.67 17744.57 11682.66 0.33 0.00 331454464 11260 dtwm 1 16252.93 2.53 17716.57 6416.05 2.53 0.00 158662656 12848 dtterm 5 4762.71 1.30 76300.29 3658.93 0.26 0.00 33828352 11604 dtaction 23 1389.72 0.33 0.60 4196.43 0.01 0.55 18653184 539 dtsessio 1 1174.87 0.24 17716.57 4932.97 0.24 0.00 23535616 5421 dtcm 1 866.30 0.18 17716.57 4826.21 0.18 0.00 3012096 6490 |
次の表は、日次コマンド要約のデータを説明したものです。
表 20–5 日次コマンド要約レポート
列 |
説明 |
---|---|
コマンド名。プロセスアカウンティングシステムではオブジェクトモジュールしか報告されないので、シェルプロシージャはすべて sh という名前で取り扱われる。a.out または core と呼ばれるプログラム、またはその他の、適切とは思われない名前のプログラムの使用頻度を監視すると良い。acctcom プログラムを使用して、名前に疑問があるコマンドを誰が実行したか、スーパーユーザー特権が使用されたかどうかを知ることができる |
|
NUMBER CMDS |
プライムタイム時間帯に、このコマンドが呼び出された回数 |
TOTAL KCOREMIN |
実行時の毎分当たりにプロセスが使用した K バイトメモリーセグメント数という計量値の累積合計 |
TOTAL CPU-MIN |
このプログラムのプライムタイム時間帯の累積合計処理時間 |
このプログラムのプライムタイム時間帯の累積合計実時間 (壁掛け時計)。分単位 |
|
MEAN SIZE-K |
NUMBER CMDS で表される呼び出し回数に対する TOTAL KCOREMIN の平均 |
MEAN CPU-MIN |
NUMBER CMDS に対する TOTAL CPU-MIN の平均 |
合計 CPU 時間を経過時間で割った値。システム利用可能時間とシステム使用時間との比であり、プロセスがその実行中に消費する合計利用可能 CPU 時間の相対値を示す |
|
読み取りおよび書き込みシステムコールによってプッシュされた文字の合計数。オーバフローのために負の値になることがある |
|
BLOCKS READ |
プロセスが実行した物理ブロックの読み取りおよび書き込みの合計数 |
日次コマンド要約と月次コマンド要約のレポート形式は、実際は同じものです。ただし、日次コマンド要約は現在のアカウンティング期間だけでレポートするのに対し、月次コマンド要約は会計期間の当初から現在の日付までをレポートします。つまり、月次レポートは、monacct プログラムが最後に実行されたときからの累積データの累積要約を表します。
Oct 16 02:30 2001 MONTHLY TOTAL COMMAND SUMMARY Page 1 TOTAL COMMAND SUMMARY COMMAND NUMBER TOTAL TOTAL TOTAL MEAN MEAN HOG CHARS BLOCKS NAME CMDS KCOREMIN CPU-MIN REAL-MIN SIZE-K CPU-MIN FACTOR TRNSFD READ TOTALS 42718 4398793.50 361.92 956039.00 12154.09 0.01 0.00 16100942848 825171 netscape 789 3110437.25 121.03 79101.12 25699.58 0.15 0.00 3930527232 302486 adeptedi 84 1214419.00 50.20 4174.65 24193.62 0.60 0.01 890216640 107237 acroread 145 165297.78 7.01 18180.74 23566.84 0.05 0.00 1900504064 26053 dtmail 2 64208.90 6.35 20557.14 10112.43 3.17 0.00 250445824 43280 dtaction 800 47602.28 11.26 15.37 4226.93 0.01 0.73 640057536 8095 soffice. 13 35506.79 0.97 9.23 36510.84 0.07 0.11 134754320 5712 dtwm 2 20350.98 3.17 20557.14 6419.87 1.59 0.00 190636032 14049 |
月次コマンド要約で提供されるデータの説明については、日次コマンド要約を参照してください。
このレポートは、特定のログインが最後に使用された日付を示します。この情報を使用して、使用されていないログインやログインディレクトリを見つけることができます。それらのログインやログインディレクトリは保存して削除できます。次に例を示します。
Oct 16 02:30 2001 LAST LOGIN Page 1 01-06-12 kryten 01-09-08 protoA 01-10-14 ripley 01-07-14 lister 01-09-08 protoB 01-10-15 scutter1 01-08-16 pmorph 01-10-12 rimmer 01-10-16 scutter2 |
/var/adm/pacctn ファイル、または acct.h 形式の任意のファイルの内容は、acctcom プログラムを使用していつでも調べることができます。このコマンドを実行するときに、ファイルも標準入力も指定しなければ、acctcom コマンドは pacct ファイルを読み取ります。acctcom コマンドで読み取られる各レコードは、終了したプロセスの情報を表します。アクティブなプロセスは、ps コマンドを実行して調べます。acctcom コマンドのデフォルト出力は次に示す情報を示します。
acctcom 出力ファイルを、次に示します。
# acctcom COMMAND START END REAL CPU MEAN NAME USER TTYNAME TIME TIME (SECS) (SECS) SIZE(K) #accton root ? 02:30:01 02:30:01 0.03 0.01 304.00 turnacct adm ? 02:30:01 02:30:01 0.42 0.01 320.00 mv adm ? 02:30:01 02:30:01 0.07 0.01 504.00 utmp_upd adm ? 02:30:01 02:30:01 0.03 0.01 712.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 824.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 912.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 920.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 1136.00 utmp_upd adm ? 02:30:01 02:30:01 0.01 0.01 576.00 closewtm adm ? 02:30:01 02:30:01 0.10 0.01 664.00 |
コマンド名 (# 記号はスーパーユーザー特権を使用して実行された場合)
ユーザ名
tty 名 (不明の場合は ? として表示)
コマンド開始時刻
コマンド終了時刻
実時間 (秒単位)
CPU 時間 (秒単位)
平均サイズ (K バイト単位)
acctcom オプションを使用すると、次の情報を得ることができます。
fork/exec フラグの状態 (exec を使用しない fork の場合は 1 )
システム終了状態
hog 係数
合計 kcore 分
CPU 係数
転送文字数
読み取りブロック数
表 20–6 で acctcom のオプションを説明します。
オプション |
説明 |
---|---|
-a |
選択したプロセスに関する特定の平均統計を表示する。統計は出力が記録された後に表示される |
-b
|
ファイルを逆読みし、最後のコマンドから先に表示する。標準入力の読み込みには関係しない |
-f |
fork/exec フラグおよびシステム終了状態カラムを出力する。出力は 8 進数 |
-h |
平均メモリーサイズの代わりに hog 係数を表示する。これは経過時間とプロセスが実行中に消費した合計 CPU 利用可能時間との比。hog 係数 = 合計 CPU 利用時間/経過時間 |
-i |
入出力カウントを含むカラムを出力する |
-k |
メモリーサイズの代わりに、キロバイト/分ごとのコアサイズの合計値を表示する |
-m |
平均コアサイズを表示する。これがデフォルト |
-q |
平均統計だけを出力する。出力レコードは出力しない |
-r |
CPU 係数 (システム使用時間 / (システム使用時間 + ユーザー使用時間)) を表示する |
-t |
システムおよびユーザー CPU 時間を表示する |
-v |
出力からカラム見出しを除外する |
-C sec |
合計 (システム + ユーザー) CPU 時間が sec 秒を超えたプロセスだけを表示する |
-e time |
time 以前に存在したプロセスを hr[:min[:sec]] の書式で表示する |
-E time |
time 以前に開始されたプロセスを hr[:min[:sec]] の書式で表示する。同じ time を -S と -E の両方に使用すれば、そのときに存在していたプロセスを表示する |
-g group |
group に属しているプロセスだけを表示する |
-H factor |
factor を超えるプロセスだけを表示する。ただし、factor は「hog 係数」(-h オプションを参照) |
-I chars |
chars によって指定されるカットオフ数を超える文字数を転送したプロセスだけを表示する |
-l line |
端末 /dev/line に属しているプロセスだけを表示する |
-n pattern |
pattern 「+」が 1 回以上現れることを意味する以外は、一般的な正規表現に一致するコマンドだけを表示する |
-o ofile |
レコードを出力しないで、レコードを acct.h 形式で ofile にコピーする |
-O sec |
CPU システム時間が sec 秒を超えるプロセスだけを表示する |
-s time |
time 以後に存在したプロセスを hr[:min[: sec]] の書式で表示する |
-S time |
time 以後に開始されたプロセスを hr[:min[: sec]] の書式で表示する |
-u user |
user に属しているプロセスだけを表示する |