前提条件:
このガイドで説明されている手順を実行するには、次のコンポーネントが必要です。
- 適切に構成された Linux システム。テスト目的のため、 Linux VM の使用を検討してください 。
- へのアクセス sudo 権限を持つ非 root ユーザー
- コマンドラインインターフェイスの基本的な理解
Linux の仮想メモリ
物理メモリ (RAM とも呼ばれます) の量は有限です。カーネルは、このスペースを実行中のすべてのプログラムに分配する責任があります。実行中のすべてのプログラム (OS を含む) は RAM に常駐します。
ただし、メモリの需要が利用可能なメモリよりも高い場合は、システムがクラッシュするだけです (そうでない場合、プログラムはより多くのメモリ領域を要求します)。ほとんどの状況では、それは望ましくない結果になります。ここで仮想メモリが登場します。
仮想メモリとは、悲惨な状況で追加メモリとして機能する HDD/SSD 上の専用のディスク領域を指します。これは RAM スペースとして機能するため (実際にはそうではありません)、「仮想」とみなされます。 UNIX/Linux システムでは、これらのスペースはスワップ スペースと呼ばれます。
Linux カーネルは、メモリのブロックをスワップ領域に移動し、必要に応じて RAM に戻します。
仮想メモリのパフォーマンスは物理メモリよりも明らかに遅く、ストレージ デバイスのパフォーマンスに直接比例します。ただし、特定のハードウェア構成 (NVMe SSD などを使用) では、パフォーマンスが RAM と同等になる場合があります。
Vmstat コマンド
「vmstat」コマンドは、仮想メモリに関するさまざまな情報をレポートする監視ツールです。これは、「sysstat」パッケージの一部としてすべての Linux システムで利用できます。
「vmstat」のコマンド構成は以下のとおりです。
$ vmstat < オプション > < 遅れ > < カウント >基本的な使い方
パラメータを指定せずに実行すると、「vmstat」は最後の起動以降のシステム情報を出力します。
$ vmstat
出力は 6 つのセグメントに分かれています。
- プロセス : 現在実行中のプロセスの統計
- r : アクティブなプロセスの数
- b : スリープ中のプロセス数
- メモリ : メモリ使用量の統計
- swpd :仮想メモリ(スワップ領域)の総量
- 無料 : 利用可能なスワップ領域
- バフ : 一時バッファメモリとして使用されているスワップ領域の量
- キャッシュ : 総キャッシュメモリ
- スワップ : スワップ領域に関する統計
- うん : スワップイン率
- それで : スワップアウト率
- これ : I/O統計
- とともに : ブロックデバイスから受信したブロック数
- なれ : ブロックデバイスに送信されたブロックの数
- システム : スケジュールに関する統計
- で : システム割り込み数
- cs : コンテキストスイッチの割合
- CPU : さまざまな CPU 統計
- 私たち : CPU がカーネル以外のプロセスに時間を費やす
- そして : CPU がカーネル プロセスに時間を費やしている
- ID : CPU のアイドリング時間
- の : I/O 操作の完了を待機する CPU の時間
- セント : 仮想マシンが使用した CPU 時間
表示単位を変更する
デフォルトでは、「vmstat」はメモリ値をキロバイト単位で報告します。単位を変更するには、「 -S ' フラグ:
$ vmstat -S < 口論 >
ここで、「vmstat」は値をメガバイト単位で出力します。
使用可能なメモリ ユニットがいくつかあります。
- M : 1048576 バイト (2^20 バイト)
- メートル :1000000バイト(1000キロバイト)
- K :1024バイト(1メガバイト)
- k :1000バイト(1キロバイト)
継続的な統計の更新
デフォルトでは、「vmstat」はレポートを 1 回印刷します。ただし、「vmstat」に、指定した時間間隔 (秒単位) で継続的なレポートを提供するように指示できます。
コマンド構造は次のとおりです。
$ vmstat < 遅れ >たとえば、2 秒ごとに更新された統計を取得するには、コマンドは次のとおりです。
$ vmstat 2
「Ctrl + C」を使用して手動で終了しない限り、出力は停止しません。
あるいは、「vmstat」を指定して、特定の回数の統計を提供することもできます。
$ vmstat < 遅れ > < カウント >たとえば、更新された統計を 2 秒ごとに 5 回取得するには、コマンドは次のようになります。
$ vmstat 2 5
アクティブなメモリと非アクティブなメモリ
アクティブ メモリとは、プロセスによって現在使用されているメモリ空間を指します。一方、非アクティブなメモリとは、実行されなくなったプロセスに割り当てられたメモリ空間を指します。
「vmstat」を使用すると、使用されているアクティブなメモリと非アクティブなメモリの量を確認できます。
$ vmstat -a
ここで、「buff」列と「cache」列は、それぞれ「inact」列と「active」列に置き換えられます。
メモリとスケジューリング
メモリとスケジュールに関するより詳細なレポートを取得するには、次のコマンドを使用します。
$ vmstat -s
ここ:
- セクション 1: このセクションでは、合計物理メモリ、アクティブ/非アクティブ メモリ、空き/バッファ/キャッシュ メモリなどの基本的なシステム情報を扱います。
- セクション 2: さまざまな CPU 統計
- 非良好な CPU ティック : 優先度の高いプロセスが CPU を使用した回数。
- 素晴らしい CPU ティック : 優先度の低いプロセスが CPU を使用した回数。
- システム CPU ティック数 : カーネルプロセスが CPU を使用した回数。
- アイドル状態の CPU ティック : CPU がアイドル状態になった回数。
- IO待機CPUティック : CPU が I/O 管理を待機する回数。
- IRQ : CPUが割り込み要求を受信した回数。
- ソフトイラク :CPUがソフトウェア割り込み要求を受信した回数。
- 盗まれたCPUティック : VM が CPU 時間を盗んだ回数。
- セクション 3: メモリ ページングの統計
- セクション 4: イベントカウンター
ブート以降のフォーク
フォークとは、既存のプロセスによって生成されたプロセスを指します。フォーク数の統計を取得するには、次のコマンドを実行します。
$ vmstat -f
ディスクとパーティションの統計
「vmstat」コマンドは、ディスクアクティビティに関する情報も提供します。ディスクアクティビティの簡単な概要を取得するには、次のコマンドを実行します。
$ vmstat -D
より詳細なディスク アクティビティ レポート (読み取り/書き込み統計を含む) を取得するには、代わりに次のコマンドを使用します。
$ vmstat -d
ここ:
- 読み取り
- 合計 : ディスク読み取り総数
- 合併した : グループ読み取りの合計数
- セクター : 読み取られた総セクタ数
- MS : ディスクからのデータの読み取りにかかった合計時間 (ミリ秒単位)
- 書き込みます
- 合計 : ディスク書き込み総数
- 合併した : グループ書き込みの合計数
- セクター : 書き込まれたセクタの総数
- MS : ディスクへの書き込みにかかった合計時間 (ミリ秒単位)
- IO
- 置く : 現在のディスク読み取り/書き込みの合計
- 秒 : 進行中の読み取り/書き込み操作に費やされた時間 (秒単位)
「vmstat」コマンドは、特定のディスク パーティションに関するレポートを生成することもできます。パーティション レポートを取得するには、次のコマンド構造を使用します。
$ vmstat -p < パーティション識別子 >
スラブ統計
スラブ割り当ては、オブジェクトのメモリ割り当ての効率的なメカニズムとなるように設計されています。以前のメカニズムと比較して、スラブ割り当てでは、(メモリの割り当てと割り当て解除によって引き起こされる) メモリの断片化が軽減されます。
システムのスラブ統計を確認するには、次の「vmstat」コマンドを使用します。
$ 須藤 vmstat -m
統計を表示するには root 権限が必要であることに注意してください。
ここ:
- キャッシュ : キャッシュされたデータの名前
- 1つで : Num キャッシュ内でアクティブなオブジェクトの数
- 合計 : 特定のキャッシュ内のオブジェクトの合計数
- サイズ : キャッシュされたオブジェクトのサイズ
- ページ : キャッシュされたオブジェクトを含むメモリ ページの数
結論
このガイドでは、「vmstat」コマンドのさまざまな使用方法を紹介しました。仮想メモリに加えて、「vmstat」はディスク統計、フォーク、スラブなどについてもレポートできます。
他のシステム監視ツールについて知りたいですか?詳しくはこちら hトップ 、 殺す 、 ps 、など。
快適なコンピューティングを!