Linux でパフォーマンスを監視するために一般的に使用されるコマンドは次のとおりです。
sar : CPU の平均情報を表示できます。また、指定した CPU の情報も表示できます。mpstat と比較して、sar は CPU 履歴情報を表示できます
mpstat : すべての CPU の平均情報を表示できます。また、指定した CPU の情報も表示できます。sar と比較して、mpstat は CPU パフォーマンスのリアルタイムのステータスを監視します。
vmstat : 各プロセスの CPU 使用率とメモリ使用量だけを確認するのではなく、サーバー全体の CPU、メモリ、IO 使用率を監視します (使用シナリオは異なります)。
iostat : 主にシステム機器の IO 負荷を監視するために使用されます
1、サール
sar (System Activity Reporter システム アクティビティ レポート) は、現在 Linux 上で最も包括的なシステム パフォーマンス分析ツールの 1 つで、ファイルの読み取りと書き込み、システム コールの使用状況、ディスク I/O、CPU など、さまざまな側面からシステム アクティビティをレポートできます。効率、メモリ使用量、プロセス アクティビティ、IPC 関連アクティビティなどを確認するため、sar コマンドは sysstat インストール パッケージによってインストールされます。
sar コマンドで使用されるパラメータの詳細は、sar --help を使用して表示できます。
共通パラメータ
-o : 監視情報をバイナリ形式でファイルに保存します
-f : 指定されたファイルからレポートを読み取ります
-P: 各CPUのステータスをレポートします。
-b: I/O および転送速度の統計を表示します。
-R:: メモリのステータスを表示
-w:: スワップ パーティションのステータスを表示
-q: 平均負荷を表示します。
-d: ディスク使用量の統計
sar //パラメータがないインターフェース状況
フィールドの意味
%user 内部期間のユーザー状態の CPU 時間 (%)、負の nice 値を持つプロセスを除く (usr/合計)*100 %nice
内部期間の CPU 時間 (%)負の nice 値を持つプロセス (nice/合計)*100
%system 内部期間では、カーネル時間 (%) (システム/合計)*100
%iowait 内部期間では、ハードディスク IO 待ち時間 (% ) (iowait/合計)*100
%steal
%idle 内部期間中、CPU はディスク IO 操作の待機以外の何らかの理由でアイドル状態です。 アイドル時間 (%) (アイドル/合計)*100
sar -o cpulog 1 4 //CPU 情報を 1 秒ごとに 4 回連続してサンプリングし、サンプリングされた情報をバイナリ形式でカレント ディレクトリのファイル cpulog に保存します。4 を削除すると、次のコマンドは常に 1 になります。毎秒
sar -f cpulog //上記のコマンドを使用してファイルを保存し、cat、head などのコマンドを使用してファイルを表示します。ファイルは文字化けしています。表示するには sar -f {filename} を使用する必要があります。
すべての CPU 情報を表示 0 は CPU コア番号を示し、ALL の場合はすべてのコア番号の情報を返します 1 はリフレッシュ頻度を示します 2 はリフレッシュ数を示します # sar -P 0 1 2
sar -q キューの長さ (実行を待機しているプロセスの数) と負荷のステータスを表示します。
sar -r でメモリ使用量を表示
sar -w システムのスワップ パーティションの統計を表示します。
sar -b I/O 転送速度情報を表示します
sar -d ディスク使用量の統計
2、mpstat
mpstat は Multiprocessor Statistics の略称です。CPU の統計情報を報告するリアルタイム監視ツールです。これらの情報は /proc/stat ファイルに保存されます。マルチ CPU システムでは、すべてのCPUの平均的なステータス情報だけでなく、特定のCPUの情報を表示することも可能です mpstatの最大の特徴は、マルチコアCPUの各計算コアの統計情報を表示できることです。
# mpstat 1 5 //CPU 情報を 1 秒間隔で連続 5 回サンプリングします
フィールドの意味
%user 内部期間のユーザー状態の CPU 時間 (%)、負の nice 値を持つプロセスを除く (usr/合計)*100 %nice
内部期間の CPU 時間 (%)負の nice 値を持つプロセス (nice/合計)*100
%sys 内部期間では、カーネル時間 (%) (システム/合計)*100
%iowait 内部期間では、ハードディスク IO 待ち時間 (% ) (iowait/total)*100
% irq 内部期間のハード割り込み時間 (%) (irq/total)*100
%soft 内部期間のソフト割り込み時間 (%) (softirq/total)*100
%idle 内部期間における、ディスク IO 操作の待機以外の理由による CPU アイドル時間 アイドル時間 (%) (アイドル/合計)*100
# すべての CPU 個別情報を表示 mpstat -P ALL 1 1
3、vmstat
vmstat は、サーバーの CPU 使用率、メモリ使用量、仮想メモリ スワップ、IO 読み取りおよび書き込みステータスなどのサーバーのステータス値を指定した時間間隔で表示できます。
#連続4回、各1秒間隔のサンプリング情報 vmstat 1 4
煩雑すぎると思われる場合は、次のコマンドを使用してください
vmstat 1 4 | 列 -t
1. Procs(プロセス)
r: 実行キュー (つまり、CPU に実際に割り当てられているプロセスの数) を示します。
- CPU の数が長時間、またはそれを超えた場合、CPU を待っているプロセスが多数あるため、CPU を増設する必要があります。
- システムで使用可能な CPU 数の 4 倍を超える場合、システムは CPU 不足に直面するか、CPU 速度が低すぎることになります。
- r と b は 5 倍を超えることはできません。r が 4 倍を超えることが多く、id が 40 未満であることが多い場合は、CPU 負荷が高いことを意味します。
b: この列は、I/O 待ちやメモリ交換など、リソースを待っているプロセスの数を示します。
2. 記憶
swpd: 使用される仮想メモリのサイズ (k で示されます)。
- 0 より大きい場合は、マシンの物理メモリが不足していることを意味します。
- swpd の値が 0 でない場合、または 100m を超えるなど比較的大きい場合でも、si などの値が長時間 0 である限り、システムのパフォーマンスは正常です。
free: 空き物理メモリのサイズ
buff: ブロックデバイスへの読み書き用のキャッシュ (システムキャッシュ)
キャッシュ: 通常、ファイル システム キャッシュとして使用されます。
- キャッシュが大きい場合は、キャッシュ内でより多くのファイルが使用されていることを意味し、このとき IO の bi が比較的小さい場合は、ファイル システムの効率が良いことを意味します。
3.スワップ
si: 1 秒あたりにディスクから読み取られる仮想メモリのサイズ この値が 0 より大きい場合は、物理メモリが不足しているか、メモリリークが発生していることを意味します。メモリを消費しているプロセスを見つけて解決する必要があります。それ。
so: 1 秒あたりにディスクに書き込まれる仮想メモリのサイズ (この値が 0 より大きい場合、上記と同じ)
- si などの説明: メモリの需要が RAM の量より大きい場合、サーバーは仮想メモリ メカニズムを開始します。仮想メモリを通じて、RAM セグメントを SWAP DISK の特別なディスク セグメントに移動できるため、ページのエクスポートと仮想メモリのページ インポートが発生します。現象、ページ エクスポートでは RAM ボトルネックが説明されません。仮想メモリ システムはメモリ セグメントのページ エクスポートを頻繁に実行しますが、ページ インポート操作は、サーバーがより多くのメモリを必要としていることを示します。ページ インポートには、必要なメモリが必要です。メモリ セグメントを SWAP DISK から RAM にコピーして戻すと、サーバーの速度が低下します。CPU 使用率も確認する必要があります。
- メモリ使用量が比較的多くても、CPU 使用率が非常に低い場合は、メモリを占有していて解放していないアプリケーションが多数あると考えられます。
- ORACLE でこれが発生した場合:
1. 最も簡単な方法は、RAM を増やすことです。2. SGA のサイズを変更して、RAM の需要を削減します。3. RAM要件を減らす(例: PGAを減らす)
4.IO (現在の Linux バージョンのブロック サイズは 1kb)
bi: ブロック デバイスが 1 秒あたりに受信したブロックの数。ここでのブロック デバイスとは、システム上のすべてのディスクおよびその他のブロック デバイスを指します。デフォルトのブロック サイズは 1024 バイトです
bo: ブロック デバイスによって 1 秒あたりに送信されるブロックの数。たとえば、ファイルを読み取る場合、bo は 0 より大きくなければなりません。bi と bo は通常 0 に近く、それ以外の場合は IO の頻度が高すぎるため、調整する必要があります。
- ここでは、bi+bo の基準値を 1000 に設定します。1000 を超えて wa の値が大きい場合は、ディスク負荷のバランスを考慮する必要があり、iostat の出力と組み合わせて分析できます。
5.システム(システム)
in: 特定の時間間隔で観測された 1 秒あたりのデバイス割り込みの数を示します。
cs: 列は、1 秒あたりに生成されるコンテキスト スイッチの数を示します。VMSTAT\u547d\u4ee4 cs がディスク I/O およびネットワーク パケット レートよりもはるかに高い場合は、さらに調査する必要があります。
6. CPU (パーセンテージで表示)
us: ユーザー モードで費やされた CPU 時間の割合を示します。
- us の値が比較的高い場合は、ユーザー プロセスがより多くの CPU 時間を消費していることを意味しますが、長時間 50% を超える場合は、ユーザー プログラムの最適化を検討する必要があります。
sy: カーネル プロセスによって費やされた CPU 時間の割合を示します。
- ここで、us + sy の基準値は 80% ですが、us + sy が 80% を超えると CPU 不足の可能性があります。
id: CPU がアイドル状態である時間の割合
- vmstat の CPU 測定値はパーセンテージです。us+sy の値が 100 に近い場合、CPU が全負荷に近い状態で動作していることを意味します。ただし、CPU の全負荷は意味がないことに注意してください。UNIX は常に、タスクのスループットを最大化するために、CPU を可能な限りビジー状態に維持しようとします。CPU ボトルネックを判断できるのは、r (実行キュー) の値だけです。
- アイドル時間 (cpu id) が継続的に 0 で、システム時間 (cpu sy) がユーザー時間 (cpu us) の 2 倍である場合、システムは CPU リソースの不足に直面しています。
wa: IO 待機が占有する CPU 時間の割合を示します。
- ここでの wa の基準値は 30% です。wa が 30% を超える場合は、ディスクへの大量のランダム アクセスが原因であるか、帯域幅のボトルネックが原因である可能性があります。ディスクまたはディスク アクセス コントローラー (主にブロック操作)。
st: 仮想マシンから盗まれた CPU 時間の割合
4、イオスタット
iostat は主にシステム機器の io 負荷を監視するために使用されます. sostat を初めて実行すると, システムの起動以来さまざまな統計情報が表示されます. ユーザーは統計の回数と時間を指定することで必要な統計情報を取得できます
# iostat 1 1 # iostat -m 1 1 //-m 統計 (MB)
出力情報の意味
デバイス:ドライブキャラクタ
tps: デバイスの 1 秒あたりの転送数 (デバイスに発行された 1 秒あたりの転送数を示します)。「転送」とは「I/O リクエスト」を意味します。複数の論理リクエストを「1 つの I/O リクエスト」に組み合わせることができます。「1 回の転送」リクエストのサイズは不明です。
kB_read/s: 1 秒あたりにデバイスから読み取られたデータ量 (ドライブで表現)、
kB_wrtn/s: 1 秒あたりにデバイスに書き込まれたデータ量 (ドライブで表現)、
kB_read: 読み取られたデータの合計量、kB_wrtn: 書き込まれたデータの総量。単位はキロバイトです。
ソースコードおよびその他のデータ取得方法
ソースコードやその他のチュートリアル資料を入手したいお友達は、いいね + コメント + ブックマーク、トリプルしてください!
3回連続でコメント欄に個別メッセージを送ります〜