この投稿では、ほとんどの 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