Red Hat Enterprise Linux作動環境下でハンド幅とCPU使用を監視するということは、 章2章で説明しているツールを使用することになります。 従って、これ以降を読み進める前に章2章を読んでいない方は そちらを先にお読みください。
項2.4.2で示すように、 バンド幅の使用を直接監視するのは困難です。 ただし、デバイスレベルの統計を調べることにより、 システム上でバンド幅の不足が問題となっているかのおおよその測定をすることができます。
vmstatを使い、biフィールドと boフィールドを調べると 全体的なデバイスのアクティビティが過剰になっていないかを確認できます。 また、siフィールドとsoフィールドを書き留めておくと、 swap関連I/Oに対して行われるべきディスクアクティビティがどのくらいあるか 詳細がわかります。
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 0 248088 158636 480804 0 0 2 6 120 120 10 3 87 |
この例では、biフィールドは ブロックデバイスに毎秒2ブロックが書き込まれていることを表し(主としてディスクドライブ)、 bo フィールドは ブロックデバイスから毎秒6ブロック読み読み込まれていることを表しています。 siフィールドと soフィールドが毎秒swap関連I/O率ゼロ(0)キロバイトを 表しているので、このアクティビティにスワップすべきものはないことがわかります。
iostatを使うとディスク関連アクティビティの詳細を 表示することができます。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 avg-cpu: %user %nice %sys %idle 5.34 4.60 2.83 87.24 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn dev8-0 1.10 6.21 25.08 961342 3881610 dev8-1 0.00 0.00 0.00 16 0 |
この出力ではメジャー番号が8のデバイス(1番目のSCSIディスクの /dev/sda)が 1 入出力処理より若干多い秒平均値になっていることを示しています(tsp フィールド)。このデバイスの入出力アクティビティのほとんどが書き込みであり (Blk_wrtnフィールド)、毎秒25ブロック余りの書き込みになっています (Blk_wrtn/sフィールド)。
これよりさらに詳しい詳細が必要な場合は、iostatの -xオプションを使います。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 avg-cpu: %user %nice %sys %idle 5.37 4.54 2.81 87.27 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz /dev/sda 13.57 2.86 0.36 0.77 32.20 29.05 16.10 14.53 54.52 /dev/sda1 0.17 0.00 0.00 0.00 0.34 0.00 0.17 0.00 133.40 /dev/sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.56 /dev/sda3 0.31 2.11 0.29 0.62 4.74 21.80 2.37 10.90 29.42 /dev/sda4 0.09 0.75 0.04 0.15 1.06 7.24 0.53 3.62 43.01 |
フィールドの数が増えて行が長くなっている他にも、 まずこのiostat出力はパーティションごとのレベルで 統計を表示していることに注意してください。 デバイス名をマウントポイントと関連づけるためにdfを使うと、 例えば、/home/を含むパーティションが過剰な負荷になっている場合、 このレポートを使用して確認することができます。
実際、iostat -xからの出力の各行は長くこれよりも多くの情報が 含まれています。各行のリマインダです(読みやすいようデバイスの欄が付け加えられています)。
Device: avgqu-sz await svctm %util /dev/sda 0.24 20.86 3.80 0.43 /dev/sda1 0.00 141.18 122.73 0.03 /dev/sda2 0.00 6.00 6.00 0.00 /dev/sda3 0.12 12.84 2.68 0.24 /dev/sda4 0.11 57.47 8.94 0.17 |
この例では、/dev/sda2がシステムのswapパーティションである のがわかります。このパーティションの多くのフィールドが0.00 と表示されていて、このシステムでのswapに問題がないことがわかります。
また、/dev/sda1にも注意してください。 このパーティションの統計は異常です。全体的なアクティビティは低いのに、 平均I/O要求サイズ(avgrq-szフィールド)、 平均待機時間(awaitフィールド)、 平均サービス時間(svctmフィールド)が 他のパーティションに比べてかなり大きくなっているのはなぜでしょうか。 これは、このパーティションが/boot/ディレクトリを含んでおり、 そこにカーネルと初期 ramdiskが保存されているからです。 システムがブートすると、ブートプロセス中に使用される読み込みI/Oはかなりの大きさの ブロックになり、相対的にiostat表示の 待機時間とサービス時間が長くなります (rsec/sフィールドと rkB/sフィールドだけは0ではないことに 注意してください。ここでは定期的な書き込みは行われていません)。
I/O統計の長期的な概要を表示するのにsarを使うことができます。 例えば、sar -bでは全般的なI/Oレポートを表示します。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 12:00:00 AM tps rtps wtps bread/s bwrtn/s 12:10:00 AM 0.51 0.01 0.50 0.25 14.32 12:20:01 AM 0.48 0.00 0.48 0.00 13.32 … 06:00:02 PM 1.24 0.00 1.24 0.01 36.23 Average: 1.11 0.31 0.80 68.14 34.79 |
ここでは、iostatの最初の表示と同様、 統計はすべてのブロックデバイスに対してグループ化されています。
sar -dを使うと別のI/O関連レポートが生成されます。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003 12:00:00 AM DEV tps sect/s 12:10:00 AM dev8-0 0.51 14.57 12:10:00 AM dev8-1 0.00 0.00 12:20:01 AM dev8-0 0.48 13.32 12:20:01 AM dev8-1 0.00 0.00 … 06:00:02 PM dev8-0 1.24 36.25 06:00:02 PM dev8-1 0.00 0.00 Average: dev8-0 1.11 102.93 Average: dev8-1 0.00 0.00 |
このレポートではデバイスごとの情報が表示されますが、詳細はほとんどありません。
特定のバスやデータパスのバンド幅使用を表示する明確な統計はありませんが、 少なくとも動作していてアクティビティを使用しているデバイスを確認して、 間接的にバスの負荷を確定することができます。
バンド幅とは異なり、CPU使用を監視するのはずっと簡単です。 GNOME システムモニタの単純なCPU使用率から sarによる詳細な統計まで、 何によってどのくらいCPU処理能力が消費されているのかを正確に確認することができます。
GNOME System Monitor以外に、 リソース監視ツールとしてtopが章2章で解説されており、CPU使用に関する表示について詳しく述べられています。 次はデュアルプロセッサワークステーションからのtopのレポートです。
9:44pm up 2 days, 2 min, 1 user, load average: 0.14, 0.12, 0.09 90 processes: 82 sleeping, 1 running, 7 zombie, 0 stopped CPU0 states: 0.4% user, 1.1% system, 0.0% nice, 97.4% idle CPU1 states: 0.5% user, 1.3% system, 0.0% nice, 97.1% idle Mem: 1288720K av, 1056260K used, 232460K free, 0K shrd, 145644K buff Swap: 522104K av, 0K used, 522104K free 469764K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 30997 ed 16 0 1100 1100 840 R 1.7 0.0 0:00 top 1120 root 5 -10 249M 174M 71508 S < 0.9 13.8 254:59 X 1260 ed 15 0 54408 53M 6864 S 0.7 4.2 12:09 gnome-terminal 888 root 15 0 2428 2428 1796 S 0.1 0.1 0:06 sendmail 1264 ed 15 0 16336 15M 9480 S 0.1 1.2 1:58 rhn-applet-gui 1 root 15 0 476 476 424 S 0.0 0.0 0:05 init 2 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU0 3 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU1 4 root 15 0 0 0 0 SW 0.0 0.0 0:01 keventd 5 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0 6 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU1 7 root 15 0 0 0 0 SW 0.0 0.0 0:05 kswapd 8 root 15 0 0 0 0 SW 0.0 0.0 0:00 bdflush 9 root 15 0 0 0 0 SW 0.0 0.0 0:01 kupdated 10 root 25 0 0 0 0 SW 0.0 0.0 0:00 mdrecoveryd |
最初の CPU 関連情報が先頭行に記されています、平均負荷です。平均負荷は、システム上の runnable プロセスの平均数に相当します。平均負荷は 3 つの数字の組合わせで表記されることが多く (topで表記)、それぞれ過去 1 分間、5 分間、15 分間の平均負荷を表します。この例ではシステムにそれほど負荷はかかっていなかったことを示しています。
次の行は、CPU使用には厳密には関連しませんが、 間接的に関連しており、runnableプロセスの数を表示します (ここでは、1つのみ -- この例では特殊な意味を持ちますので この数値を覚えておいてください)。 runnableプロセスの数はシステムのCPU拘束度を測定するのに便利です。
次の 2 行はシステムにある 2 つの CPU それぞれの現在の使用状況を表示しています。使用統計は、CPU サイクルがユーザーレベルの処理に使用されたのかシステムレベルの処理なのかを表示しています。また、変更されたスケジュールプライオリティを持つ プロセスによって使用された CPU 時間量を表示する統計も含んでいます。 最後に、アイドル時間の統計があります。
表示されているプロセス関連のセクションに下がっていくと、ほとんどの CPU 処理能力を使っているプロセスは top 自身であることがわかります。つまり、この普段はアイドル状態になっている実行可能なプロセスは topであり、自身の状態を表示していたことになります。
![]() | ヒント |
---|---|
システムモニターを実行する動作が、 受け取るリソース使用統計に影響することを忘れないようにしてください。 ソフトウェアベースのモニターはすべてある程度こうした影響を受けます。 |
CPU使用に関するより詳細な情報を得るにはツールを変更しなければなりません。 vmstatからの出力を調べると、 サンプルのシステムに関して幾分異なる方向から理解することができます。
procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 0 233276 146636 469808 0 0 7 7 14 27 10 3 87 0 0 0 0 233276 146636 469808 0 0 0 0 523 138 3 0 96 0 0 0 0 233276 146636 469808 0 0 0 0 557 385 2 1 97 0 0 0 0 233276 146636 469808 0 0 0 0 544 343 2 0 97 0 0 0 0 233276 146636 469808 0 0 0 0 517 89 2 0 98 0 0 0 0 233276 146636 469808 0 0 0 32 518 102 2 0 98 0 0 0 0 233276 146636 469808 0 0 0 0 516 91 2 1 98 0 0 0 0 233276 146636 469808 0 0 0 0 516 72 2 0 98 0 0 0 0 233276 146636 469808 0 0 0 0 516 88 2 0 97 0 0 0 0 233276 146636 469808 0 0 0 0 516 81 2 0 97 |
ここでは1秒ごとに見本を10回取るために、vmstat 1 10コマンド を使用しました。最初に、CPU関連の統計(us、 sy、id の各フィールド)はtopが表示したのと同じように見えます、 また、表示している詳細が若干少ないかもしれません。 ただし、topとは異なり、 CPUがどのように使用されているかの詳細を見ることもできます。
systemフィールドをよく見ると、 CPUが平均で毎秒約500の割り込みを処理していて、 毎秒80回から400回近くをプロセス間で切り替えていることがわかります。 かなりの量のアクティビティのようだと思われる場合は、もう少し考えてみてください。 システムレベルの処理(syフィールド)が 通常は1%以下であるのに対して、ユーザーレベルの処理が (usフィールド)平均でたったの2%です。 これはアイドル状態のシステムです。
Sysstatが提供しているツールを検討してみると、 iostat とmpstatでは、topと vmstatですでに見てきたような補足情報をほとんど提供していません。 ただし、CPU使用の監視をするときに便利な数多くのレポートをsarで 生成します。
最初のレポートはsar -qコマンドで得ることができ、 実行キューの長さ、プロセスの合計、過去1分間と5分間の平均負荷を表示します。 例をあげます。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 12:10:00 AM 3 122 0.07 0.28 12:20:01 AM 5 123 0.00 0.03 … 09:50:00 AM 5 124 0.67 0.65 Average: 4 123 0.26 0.26 |
この例では、システムは常にビジー状態ですが(いずれの特定時間においても 複数のrunnableプロセスが与えられている)、 過剰にロードしているわけではりません (この特定システムには複数のプロセッサがあるため)。
次のCPU関連sarレポートは、 sar -uコマンドで生成します。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM CPU %user %nice %system %idle 12:10:00 AM all 3.69 20.10 1.06 75.15 12:20:01 AM all 1.73 0.22 0.80 97.25 … 10:00:00 AM all 35.17 0.83 1.06 62.93 Average: all 7.47 4.85 3.87 83.81 |
このレポートに含まれる統計は他のツールで生成されるものと同じです。最大の利点は、sar なら進行ベースでデータを作成するため、長期的な平均やCPU使用グラフを生成するのに役に立ちます。
マルチプロセッサのシステムでは、sar -Uコマンドでプロセッサ個別の統計や全プロセッサの統計を生成できます。次は、sar -U ALLからの出力例です。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM CPU %user %nice %system %idle 12:10:00 AM 0 3.46 21.47 1.09 73.98 12:10:00 AM 1 3.91 18.73 1.03 76.33 12:20:01 AM 0 1.63 0.25 0.78 97.34 12:20:01 AM 1 1.82 0.20 0.81 97.17 … 10:00:00 AM 0 39.12 0.75 1.04 59.09 10:00:00 AM 1 31.22 0.92 1.09 66.77 Average: 0 7.61 4.91 3.86 83.61 Average: 1 7.33 4.78 3.88 84.02 |
sar -w コマンドは 1 秒ごとのコンテキストスイッチの数を報告するので、CPU サイクルが消費されている詳細情報がわかります。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM cswch/s 12:10:00 AM 537.97 12:20:01 AM 339.43 … 10:10:00 AM 319.42 Average: 1158.25 |
割り込みに関する2種類のsarレポートを生成することもできます。 "1秒ごとの割り込み"統計のみを表示するレポート (sar -I SUMコマンドを使って生成)は次のようになります。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003 12:00:01 AM INTR intr/s 12:10:00 AM sum 539.15 12:20:01 AM sum 539.49 … 10:40:01 AM sum 539.10 Average: sum 541.00 |
sar -I PROCコマンドを使うと、 割り込み状況をプロセッサごと(マルチプロセッサシステム)、 及び割り込みレベル(0から15)ごとに 分類して表示することができます。
Linux 2.4.21-1.1931.2.349.2.2.entsmp (pigdog.example.com) 07/21/2003 12:00:00 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s 12:10:01 AM 0 512.01 0.00 0.00 0.00 3.44 0.00 0.00 12:10:01 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s 12:20:01 AM 0 512.00 0.00 0.00 0.00 3.73 0.00 0.00 … 10:30:01 AM CPU i000/s i001/s i002/s i003/s i008/s i009/s i010/s 10:40:02 AM 0 512.00 1.67 0.00 0.00 0.00 15.08 0.00 Average: 0 512.00 0.42 0.00 N/A 0.00 6.03 N/A |
このレポート(ページに合わせて横に切り詰めている) には各割り込みレベルごとにコラムが1つあります (例えば、i002/sフィールドは割り込みレベル2の割合を示している)。 これがマルチプロセッサシステムなら、各CPUのサンプル期間ごとに1行表示されるでしょう。
このレポートでもう1つ重要なことは、 sarは特定の割り込みフィールドに対してデータが収集されない場合、 そのフィールドを追加または削除します。 上記のレポートの例では、レポートの最後にサンプル期間の開始時にはなかった 割り込みレベル(3と10)を含んでいます。
![]() | 注記 | ||
---|---|---|---|
他に割り込み関連のsarレポートが2種類あります — sar -I ALLとsar -I XALLです。 ただし、sadcデータ収集ユーティリティのデフォルト設定では こうしたレポートに必要な情報を収集しません。 /etc/cron.d/sysstatファイルを編集して これを変更することができます。次の行がデフォルトです。
次のように変更します。
この変更は補足情報がsadcによって収集されるようになるため、 データファイルのサイズが大きくなるので注意してください。 従って、必ず、この追加となる容量をサポートできるようシステムの設定を確認してください。 |