ノート:

Oracle Linuxのシステム・リソースの監視

イントロダクション

このチュートリアルでは、Oracle Linux vmstatmpstatおよびtopを使用して、システム・リソースの使用状況をモニターします。システム・リソースの使用状況を監視することは、システムのパフォーマンスに悪影響を及ぼす可能性のある問題を検出する際に役立ちます。

バックグラウンド

Oracle Linuxには、システム・リソースの使用状況をモニターおよび分析するためのツール、および複数のプロセスと関連スレッドのパフォーマンス問題を診断するためのトレース・ツールが用意されています。

目的

必要事項

Oracle Linux 8以降がインストールされているクライアントシステム。

ノート:無料の演習環境を使用する場合は、接続やその他の使用方法の手順について、Oracle Linuxの演習の基本を参照してください。

vmstatコマンド・オプションの確認および使用

vmstatは、仮想メモリーの量と空き容量を示します。このコマンドはページング・アクティビティも表示します。ページインとページアウトは、システムで発生したときに確認できます。

イメージに示すように、タスク・バーにある「ステップの非表示」および「全画面」コントロールを使用して、表示領域を最大化することを検討できます。

ステップの非表示 ステップの非表示

vmstatの概要は、次のビデオをご覧ください。

  1. オプションを指定せずにvmstatコマンドを実行します。

    vmstat
    

    このコマンドは単一のレポートを生成します。出力は、procsmemoryswapiosystemおよびcpuの6つのセクションに分かれています。

    • 最初の2つの列には、プロセスに関する情報が表示されます。

      • rは、待機状態にあるプロセスの数です。これらは、アイドル状態で実行を待機しているプロセスです。

      • bは、スリープ・モードであり、最後の更新以降に中断されたプロセスの数です。

    • 次の4つの列には、メモリーに関する情報が表示されます。

      • swpdは、使用されている仮想メモリーの容量です。

      • freeは、アイドル・メモリーの量です。

      • buffは、バッファとして使用されるメモリーの量です。

      • cacheは、キャッシュとして使用されるメモリーの量です。

    • 次の2つの列には、スワップに関する情報が表示されます。

      • siは、ディスクからスワップ・インされたメモリーの量(1秒当たり)です。

      • soは、ディスクにスワップ・アウトされたメモリーの量(1秒当たり)です。

        0以外の siおよび so番号は、十分な物理メモリーがないため、カーネルはメモリーをディスクにスワップします。

    • 次の2列は、入出力を報告します。

      • biは、ブロック・デバイスから受信した1秒当たりのブロック数です。

      • boは、ブロック・デバイスに送信された1秒当たりのブロック数です。

    • 次の2つの列には、次のシステム情報が表示されます。

      • inは、1秒当たりの割込み数(クロックを含む)です。

      • csは、1秒当たりのコンテキスト・スイッチ数です。

    • 最後の5つの列には、合計CPU時間の割合が表示されます。

      • usは、ユーザー・プロセスに費やされたCPUサイクルの割合です。

      • syは、システム(カーネル)・プロセスに費やされたCPUサイクルの割合です。

      • idは、アイドル状態で費やされたCPUサイクルの割合です。

      • waは、I/Oの待機に費やされたCPUサイクルの割合です。

      • stは、仮想マシンから盗まれたCPUサイクルの割合です。

  2. コマンドvmstat 1 (小文字lではなく数値1)を実行して、毎秒の継続レポートを表示します。

    vmstat 1
    
    • 終了するには、Ctrl+Cを押します。
  3. コマンドvmstat 7 4を実行して、4つのレポートを7秒離して実行します。

    vmstat 7 4
    

    カウント・オプションは、vmstatに実行するレポートの数(4)を示し、遅延オプション(7)は各レポート間の時間間隔です。

  4. vmstat -sコマンドを実行して、様々なイベント・カウンタおよびメモリー統計の表を表示します。

    vmstat -s
    
  5. コマンドvmstat -aを実行して、アクティブおよび非アクティブなメモリーを表示します。

    vmstat -a
    

    -aオプションは、出力の memoryセクションに activeおよびアクティブでない(inact)メモリーの量を表示します。

  6. コマンドvmstat -fを実行して、最後の起動以降のフォーク数を表示します。

    vmstat -f
    
  7. コマンドvmstat -tを実行して、出力にタイムスタンプを追加します。

    vmstat -t
    
  8. コマンドvmstat -dを実行して、システム上のディスク使用状況統計を表示します。

    vmstat -d
    
  9. コマンドvmstat -p sda1を実行して、特定のディスク・パーティションにレポートを作成します。

    vmstat -p sda1
    

    出力には、数または読み取りと書き込みを含むパーティションのサマリーが表示されます。

mpstatコマンド・オプションの確認および使用

mpstatコマンドは、システム内のすべての論理CPUのパフォーマンス統計を収集して表示するために使用します。CPUがプロセスによって占有されている場合、ほかの要求を処理することはできません。これらのほかのプロセスは、CPUが解放されるまで待機する必要があります。

mpstatの概要は、次のビデオをご覧ください。

  1. オプションを指定せずにコマンドmpstatを実行します。

    mpstat
    

    最初の行には、システム上の Linuxカーネルバージョン、ホスト名、現在の日付、アーキテクチャー、およびCPUの数が表示されます。

    次の行の最初の列にはタイムスタンプが表示され、残りの列は次のように定義されます。

    • CPUは、0で始まる数値またはキーワードallで指定されたプロセッサで、統計がすべてのプロセッサの平均として計算されることを示します。

    • %userは、ユーザー・レベルでアプリケーションを実行する際に使用されるCPUの割合です。

    • %niceは、ユーザー・レベルでnice優先度で実行中に使用されるCPUの割合です。

    • %sysは、システム(カーネル)レベルで実行中に使用されるCPUの割合です。

      mpstatコマンドには、ハードウェアおよびソフトウェア割込みの処理に費やされた時間は含まれません。

    • %iowaitは、システムのディスクI/Oリクエストが未処理である間にCPUがアイドルだった時間の割合です。

    • %irqは、CPUがハードウェア割込みに費やした時間の割合です。

    • %softは、CPUがソフトウェア割込みに費やした時間の割合です。

    • %stealは、ハイパーバイザが別の仮想プロセッサのサービス中に仮想CPUが非自発的な待機に費やした時間の割合です。

    • %guestは、CPUが仮想プロセッサの実行に費やした時間の割合です。

    • %gniceは、ネステッド・ゲストを実行するためにCPUが費やす時間の割合です。

    • %idleは、CPUが(またはCPUが)アイドル状態で、システムに未処理ディスクI/Oリクエストがなかった時間の割合です。

  2. mpstat 2 5コマンドを実行して、2秒ごとにCPUアクティビティを表示し、すべてのCPUについて合計5つのレポートを表示します。

    mpstat 2 5
    

    出力では、1行の情報が合計5回出力され、平均も出力されます。

  3. コマンドmpstat -P ALLを実行して、各CPUのCPU使用率を報告します。

    mpstat -P ALL
    

    この出力は、すべてのCPUおよびCPUごとに1行のアクティビティーを出力します。ノート: mpstatは、指定した期間の平均CPU使用率も出力します。

  4. コマンドmpstat -P ALL 2 5を実行して、CPU上の2秒ごとにCPUアクティビティを表示します。

    mpstat -P ALL 2 5
    

    この出力では、CPU使用率統計が2秒間隔で5回出力されます。ノート: mpstatは、指定した期間の平均CPU使用率も出力します。

  5. コマンドmpstat -Aを実行して、CPU使用率と中断統計を同じコマンド出力で出力します。

    mpstat -A
    

topコマンドの確認

topコマンドは、プロセッサ・アクティビティをリアルタイムで継続的に調査します。topは、システムのCPU負荷の高いプロセスまたはタスクのリストを表示し、プロセスを操作するための限定的な対話型インタフェースを提供します。

topの概要は、次のビデオをご覧ください。

  1. CPUアクティビティのポイントインタイム・ビューのオプションを指定せずにtopコマンドを実行します。

    top
    

    出力はデフォルトで3秒ごとにリフレッシュされ、2つのメイン・セクションに分割されます。

    上のセクションには、最後の1、5および15分間のロード平均、実行中およびスリープ中のタスクの数、全体的なCPU使用率とメモリー使用率などの一般情報が表示されます。

    • 上部セクションに表示される出力をオンまたはオフに切り替えるには、次を使用します。

      • 小文字l (数値1以外)を入力して、ロード平均および稼働時間のオフとオンを切り替えます。

      • メモリーとスワップの使用のオフとオンを切り替えるには、mと入力します。

      • メモリーとスワップの使用のオフとオンを切り替えるには、tと入力します。

    下部のセクションには、プロセス(通常はCPU使用率)のソートされたリストと、そのプロセスID番号(PID)、およびプロセスを所有するユーザーが表示されます。さらに、出力には、プロセスで使用される実行時間およびメモリーが表示されます。

    下部のセクションの列は、次のとおりです。

    • PIDは、タスクの一意のプロセスIDです。

    • USERは、タスクの所有者の有効なユーザー名です。

    • PRは、タスクの実際の優先度です。

    • NIは、ユーザー領域内のタスクのnice値です。

      負の値は優先度が高いことを意味し、正の値は優先度が低いことを意味します。ゼロの値は、タスクの優先度が実行時に有効にならないことを意味します。

    • VIRTは、タスクで使用される仮想メモリーの合計容量です。

      この値には、すべてのコード、データおよび共有ライブラリに加え、スワップアウトされたページが含まれます。

    • RESは、タスクが使用しているスワップされていない物理メモリーまたは常駐サイズです。

    • SHRは、タスクが使用している共有メモリー量です。

      このメモリーは、ほかのプロセスと共有される可能性があります。

    • Sは、タスクのステータスです。次の5つの状態があります。

      • D無停滞スリープ

      • R実行中

      • Sスリープ中

      • Tトレースまたは停止

      • Zゾンビ

    • %CPUは、最後の画面更新以降の経過CPU時間またはCPU使用率のタスクの共有であり、合計CPU時間の割合で表されます。

    • %MEMは、使用可能な物理メモリーまたはメモリー使用量のタスクの現在使用されている共有です。

    • TIME+は、タスクが開始してから使用した合計CPU時間です。

    • COMMANDは、タスクの開始に使用されるコマンドラインまたはプログラム名です。

  2. Crtl+Cと入力してtopを終了します。

vmstatmpstatおよびtopからのコマンド出力の比較

この演習では、様々なstressテストを実行してラボ・システムの様々な負荷をエミュレートし、vmstatmpstatおよびtopコマンドを使用して、様々なタイプの負荷についてレポートする内容を決定します。

テストをバックグラウンド・プロセスとして実行しても、比較のために追加の端末ウィンドウを開くことを検討してください。

各追加ウィンドウで、sshを使用して演習インスタンスにoracle@<IP_ADDRESS_OF_COMPUTE_INSTANCE>にログインする必要があります。ここで、<IP_ADDRESS_OF_COMPUTE_INSTANCE>は、Oracle CloudコンソールからコピーされたIPアドレスです。

  1. stressツールをインストールします。

    1. dnf repolistコマンドを使用して、ol8_developer_EPELリポジトリのステータスを確認します。

      dnf repolist ol8_developer_EPEL
      
      • ステータスがenabledの場合は、stressツール・パッケージのインストールに進みます。それ以外の場合は、リポジトリの有効化を続行します。

      • dnf conifg-managerコマンドを使用して、ステータスがdisabledの場合はリポジトリを有効にします。

        dnf config-manager --enable ol8_developer_EPEL
        
  2. dnf installコマンドを実行して、stressツール・パッケージをインストールします。

    dnf install stress -y
    
  3. コマンド構文の例を表示するには、コマンドstress --dry-runを実行します。少し時間をかけて、例のオプションとリストされているその他のコマンドオプションを確認します。

    stress --dry-run
    
  4. vmstat 4 4およびmpstat 4 4コマンドを実行して、システム・アクティビティのベースラインを表示します。具体的には、ユーザーおよびシステム(カーネル)・プロセスに割り当てられるCPUの割合を確認します。これらの列は、ゼロの0に近い必要があります。空きメモリーの量にも注意してください。

    vmstat 4 4
    mpstat 4 4
    
  5. コマンドstress --cpuを実行してコンピュートバウンド・プログラムをエミュレートし、コマンドをバックグラウンドで実行します。このコマンドは、8つのコンピュートバウンドプロセスを生成します。

    stress --cpu 8 &
    
    • returnを押してプロンプトに戻ります。

    • ps -efコマンドを実行して、実行中のstressプロセスを表示します。出力をgrep stressにパイプします。

      ps -ef | grep stress
      
  6. vmstat 4 10コマンドを実行して、CPU使用率に関連付けられた列でレポートされた値を書き留めます。

    vmstat 4 10
    

    しばらくすると、us列の下に、stressによって生成された負荷が反映されます。

  7. コマンドmpstat 4 10を実行して、すべてのCPUの使用率を評価します。

    mpstat 4 10
    
  8. コマンドmpstat -P ALL 4 10を実行して、各CPUの使用率を評価します。

    mpstat -P ALL 4 10
    
  9. topコマンドを実行して、stressプロセスによってCPU使用率を確認します。

    top
    

    数分後、stressプロセスが最も高い優先度で実行されていることを確認します。Ctrl+Cを入力して、topを終了します。

  10. pkillコマンドを実行して、stressプロセスを終了します。

    pkill stress
    
  11. vmstat 4 4およびmpstat 4 4コマンドを再実行し、システム・アクティビティのベースラインを表示します。

  12. 新しいstressコマンドを実行し、--vmおよび--vm-bytesオプションを追加して、システム上のメモリー・アクティビティを生成します。

    stress --cpu 8 --vm 8 --vm-bytes 512M &
    
  13. vmstat 4 10mpstat -P ALL 4 10およびtopを実行して、CPUおよびメモリー・アクティビティを評価します。

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • Crtl+Cと入力してtopを終了します。
  14. pkillコマンドを使用して、stressプロセスを終了します。

    pkill stress 
    
  15. vmstat 4 4およびmpstat 4 4コマンドを再実行し、システム・アクティビティのベースラインを表示します。

  16. 新しいstressコマンドを実行し、--ioオプションを追加して、システムの入出力アクティビティを生成します。

    stress --cpu 8 --vm 8 --vm-bytes 512M --io 8 &
    
  17. vmstat 4 10mpstat -P ALL 4 10およびtopを実行して、CPU、メモリー、入出力アクティビティを評価します。

    vmstat 4 10
    mpstat -P ALL 4 10
    top
    
    • Crtl+Cと入力してtopを終了します。

    • pkillを使用して、stressを終了します。

その他の学習リソース

docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルでさらに無料の学習コンテンツにアクセスします。さらに、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerにします。

製品ドキュメントは、Oracleヘルプ・センターを参照してください。