GNU/Linux >> Linux の 問題 >  >> Linux

vmstat、sar、iostat、および mpstat を使用して基本的なシステム パフォーマンスを分析する方法

この投稿では、ほとんどの Linux システムにデフォルトで含まれているいくつかの基本的なプロファイリング ツールについて説明します。この記事で紹介した vmstat、sar、iostat、mpstat などのツールは比較的シンプルですが、システムのパフォーマンスを分析する際に非常に役立つ基本的なデータを提供します。ほとんどの例では、CentOS 8 マシンを使用します。

vmstat:仮想メモリ統計

メモリ関連のパフォーマンスの問題をトラブルシューティングする際に最も役立つツールの 1 つは、vmstat です。 vmstat コマンドは procps-ng の一部です このパッケージには、free や top などの他の便利なパフォーマンス分析コマンドが含まれています。

引数を指定しない場合、vmstat コマンドは、ブート以降のさまざまなシステム統計の平均を出力します。 vmstat コマンドは 2 つの引数を受け入れます。 1 つ目は 遅延 です 、2 番目は count です .遅延は、出力間の秒単位の値です。 count は、報告する統計の反復回数です。カウントが指定されていない場合、vmstat は継続的に統計を報告します。

メモリ統計は KiB で報告されます デフォルトで。 —S オプションを使用すると、-S k を使用してこれを KB、MB、または MiB で報告するように変更できます 、-S m 、および -S M 、それぞれ。

vmstat 出力の最初の行は、ブート以降の平均であるため、メトリックを収集するときは、最初の行を削除して、後続の行を使用します。出力の最初の 2 行はヘッダー情報で、3 行目は稼働時間の平均です。次の例は、出力の 4 行目から始まる vmstat の出力を示しています。

# vmstat 10 | tail -n +4
 1  0      0 479748   1044 570784    0    0     0     5   90  132  0  0 100  0  0
 0  0      0 475952   1044 570912    0    0     0     0   81  130  0  0 100  0  0
 0  0      0 479456   1044 570856    0    0     0    52   87  137  0  0 100  0  0
...

vmstat 列の概要

vmstat の例

1. vmstat コマンドは、引数が指定されていない場合、ブート以降のさまざまなシステム統計の平均を出力します:

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 424444   1044 615940    0    0    89    14   58   78  1  0 98  1  0

2. 以下は、vmstat が中断されるまで 10 秒ごとに統計を出力する例です:

# vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 426440   1044 615872    0    0    88    14   58   78  1  0 98  1  0
 0  0      0 426072   1044 615872    0    0     0     1   92  137  0  0 100  0  0
 0  0      0 426072   1044 615872    0    0     0     5   74  116  0  0 100  0  0
 ...

3. 4 つのレポートを出力した後に vmstat を終了させたい場合は、count 引数を追加します:

# vmstat 10 4
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 425236   1044 616252    0    0    86    13   58   78  1  0 98  1  0
 0  0      0 424936   1044 616252    0    0     0     1   85  129  0  0 100  0  0
 0  0      0 424876   1044 616252    0    0     0    15   70  111  0  0 100  0  0
 0  0      0 423360   1044 616252    0    0     0     1   89  130  0  0 100  0  0

sar:システム アクティビティ レポーター

sar コマンドは、sysstat パッケージの一部である多目的分析ツールです。 2 つのモードで動作します。 cron ジョブによって収集されたデータを 10 分ごとに読み取ることも、システムの状態に関する瞬間的なデータを収集するために使用することもできます。

注意 :cron ジョブは /etc/cron.d/sysstat としてインストールされます 、/usr/lib64/sa/sadc および sar を使用してデータを収集する /usr/lib64/sa/sa1 および /usr/lib64/sa/sa2 コマンドを実行します。このデータは /var/log/sa/sadd に保存されます。dd は 2 桁の日です。 :vmstat コマンドと同様に、sar は delay および count 引数を指定して実行し、特定の反復回数の統計を報告し、各反復間の遅延量を指定することができます。

開始する前に、sar がインストールされていることを確認してください。インストールされていない場合は、yum を使用してインストールします:

# yum install sysstat

インストールしたら、5 分間隔でデータを収集するように sar を構成します。

# vim /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/5 * * * * root /usr/lib64/sa/sa1 1 1

sar を使用する際に最良の結果を得るには、LANG でロケールを設定してください。 24 時間サポートを提供する環境変数。たとえば、最初の列 (時間列) で sar データを並べ替える場合、en_US.UTF-8 locale は 01:00:00 PM を 02:00:00 AM の前に配置します。これにより、データ ポイントが歪められ、グラフが価値のないものになる可能性があります。 c ロケールは、このソート要件を満たすロケールです。 sar データを扱うときは、次のようにロケールをオーバーライドします:

# LANG=C sar -q
Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 	02/09/21 	_x86_64_	(2 CPU)

00:00:01       runq-sz   plist-sz    ldavg-l    ldavg-S    1davg-15     blocked
00:10:01             0        317       0.20       0.17        0.18           0
00:20:01             0        317       0.00       0.07        0.13           0
... Output Truncated ...

実際、単に sar のエイリアスを作成することもできます。次の行を /etc/bashrc に追加します または ~/.bashrc :

alias sar='LANG=C sar'

sar は、-f オプションを使用して、ログ ファイルの 1 つ (または一般的な任意の sar データ ファイル) を読み取るために使用できます。

# sar -q -f /var/log/sa/sa09
Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 	02/09/2021 	_x86_64_	(2 CPU)

00:00:01       runq-sz   plist-sz    ldavg-l    ldavg-S    1davg-15     blocked
00:10:01             0        317       0.20       0.17        0.18           0
00:20:01             0        317       0.00       0.07        0.13           0
... Output Truncated ...

/etc/sysconfig/sysstat で一部の設定を行うことができます ファイル。たとえば、HISTORY を変更します sar のアーカイブを保持する日数を設定する変数。

sar の例

1. sar が 24 時間制を使用してレポートするように強制する、sar のシステム全体のエイリアスを作成します。これを現在のシェルにソースします。

# echo "alias sar='LANG=c sar'" >> /etc/bashrc
# source /etc/bashrc

2. 28 日間ではなく 60 日間のアーカイブを保持します。/etc/sysconfig/sysstat の HISTORY 変数を変更します。

# vim /etc/sysconfig/sysstat
HISTORY=60

3. I/O および転送速度の統計を報告します。

# sar -b
Linux 5.4.10-x86_64-linode132 (mylabserver.com) 	02/09/2021 	_x86_64_	(1 CPU)

12:00:02 AM       tps      rtps      wtps   bread/s   bwrtn/s
12:10:01 AM     38.16     31.03      7.14   1655.33    390.20
12:20:01 AM     12.11      5.81      6.30    280.99    239.08
12:30:01 AM      8.40      2.34      6.06    105.99    229.95
12:40:01 AM      7.38      1.62      5.76     23.48    211.41
12:50:01 AM      8.69      2.64      6.04    125.33    230.58
01:00:01 AM      8.09      2.26      5.83     77.72    227.70
01:10:02 AM     12.25      6.10      6.15    215.14    235.73
...
Average:        12.81      6.41      6.40    343.31    255.49

4. CPU0 の使用率を報告します:

# sar -P 0
Linux 5.4.10-x86_64-linode132 (web.thegeekdiary.com) 	02/09/2021 	_x86_64_	(1 CPU)

12:00:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM       0     11.69      0.00      2.96      0.28      0.06     85.01
12:20:01 AM       0      9.87      0.00      2.53      0.12      0.04     87.44
12:30:01 AM       0      9.96      0.00      2.48      0.09      0.04     87.43
12:40:01 AM       0      9.59      0.00      2.43      0.06      0.04     87.88
12:50:01 AM       0      9.80      0.00      2.46      0.09      0.05     87.59
...
Average:          0     10.00      0.02      2.60      0.14      0.15     87.08

5. 現在のログ ファイルからネットワーク デバイスの統計情報を報告します。

# sar -n DEV
Linux 5.4.10-x86_64-linode132 (mylabserver.com) 	02/09/2021 	_x86_64_	(1 CPU)

12:00:02 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM    dummy0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM     tunl0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM   ip_vti0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM   ip6gre0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM     teql0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
12:10:01 AM      sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
...
Average:       dummy0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        tunl0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      ip_vti0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      ip6gre0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        teql0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         sit0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
...

6. ディスク データに加えて電力使用量データを収集する追加の cron ジョブを構成します。以下を /etc/sysconfig/sysstat ファイルに変更します:

SADC_OPTIONS="-S POWER"

iostat と mpstat

sar と同様に、iostat と mpstat も sysstat パッケージの一部です。 iostat と mpstat は両方とも、vmstat コマンドと同様に delay および count 引数をサポートします。 iostat は、デバイスの CPU および I/O 統計を報告します。パーティション、およびネットワーク ファイル システム (NFS)。

mpstat コマンドは、CPU 関連の統計を報告します。 sar と同様に、LANG を 24 時間制に設定する必要がある場合があります。

iostat と mpstat の例

1. /dev/sda の拡張出力を表示します。

# iostat -x sda
Linux 5.4.10-x86_64-linode132 (mylabserver.com) 	02/09/2021 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.12    0.08    2.85    0.09    0.24   88.63

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               1.76     7.13    3.55    4.17   122.57    93.88    56.07     0.00    0.83    0.71    0.93   0.88   0.68

2. CPU0 の CPU 統計を表示:

# LANG=C mpstat -P 0
Linux 5.4.10-x86_64-linode132 (mywebserver.com) 	02/09/21 	_x86_64_	(1 CPU)

06:32:13     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
06:32:13       0    8.12    0.08    2.37    0.09    0.22    0.25    0.24    0.00    0.00   88.63


Linux
  1. OSとLinuxのバージョンを確認する方法

  2. Container-diffを使用してコンテナイメージを分析および比較する方法

  3. sar、ps、および free を使用して Linux でメモリ使用量を計算する方法

  1. 新しくインストールしたLinuxシステムでMackupを使用してアプリケーション設定をバックアップおよび復元する方法

  2. 変数と整数を使用した基本的な除算?

  3. 24 Linux パフォーマンス監視の iostat、vmstat、および mpstat の例

  1. Linux端末の機能とパフォーマンスのバランスをとる方法

  2. Metricbeatを使用してシステムとアプリケーションのメトリックを収集する方法

  3. iostat を使用して Linux でシステム パフォーマンスを監視する (例を含む)