Sarコマンドは、CPU使用率、メモリ使用率、I / Oデバイス消費量、ネットワークモニター、スワップ、負荷平均など、さまざまなリソースに関する統計レポートを作成するために使用されます。
SARはSystemActivityReporterの略で、Linux管理者がシステムパフォーマンスを監視し、ボトルネックを調査するための非常に便利なツールです。このツールはsysstatパッケージによって提供されます。
このチュートリアルでは、sysstatパッケージをインストールし、Linuxでsarコマンドを使用する方法について説明します。
sysstatパッケージをインストールする
sysstatパッケージには、Linuxシステムのパフォーマンス監視ツールのコレクションである多くのユーティリティが含まれています。 Sarは、sysstatパッケージに属するツールです。
RHELおよびCentOSへのsysstatパッケージのインストール
$ sudo yum install sysstat
sysstatが正常にインストールされたら、次のコマンドでインストールを確認します。
$ which sar
/usr/bin/sar
デフォルトでは、sysstatはサーバー統計をファイル'/ var / log / sa / saDD'(DDは月の日です。例:/ var / log / sa / sa08)に保存し、データを28日間保持します。それ以上のデータを保持したい場合は、sysstat構成ファイル'/ etc / sysconfig/sysstat'を変更する必要があります。
$ sudo cat /etc/sysconfig/sysstat
HISTORY=28
HISTORY
の値を変更します ログを保持する日数を指定します。
UbuntuとDebianへのsysstatパッケージのインストール
$ sudo apt install sysstat
コマンドによるインストールの確認:
$ which sar
/usr/bin/sar
Ubuntuでは、CentOSが不要なときに有効にする必要があります。
お気に入りのエディター(vim、nano、gedit)を使用して、次のファイルを編集します:
$ sudo nano /etc/default/sysstat
そして、ENABLED
を設定します true
に :
ENABLED="true"
サービスを再開します
$ sudo service sysstat restart
Ubuntuでは、構成ファイルは「/ etc / sysstat / sysstat」であり、データはデフォルトで7日以内に保持されます。
$ cat /etc/sysstat/sysstat
HISTORY=7
Fedora 21から、sysstatがデフォルトで提供され、以下のコマンドを実行するだけで済みます。
$ sudo systemctl enable sysstat.service
$ sudo systemctl start sysstat.service
データを収集するために10分ごとに実行され、対応するファイル/ var / log / sa/saDDに保存されるsysstatのcronジョブがあります。このcron実行の間隔を変更する場合は、「/ etc / cron.d/sysstat」で変更できます。
systemdの場合、タイマーユニットファイルは10分ごとにsysstat-collect.service(/usr/lib/systemd/system/sysstat-collect.service)を呼び出して統計を収集します。
$ cat /etc/cron.d/sysstat
# Activity reports every 10 minutes everyday
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
# Additional run at 23:59 to rotate the statistics file
59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
Sarコマンドの使用法
sarコマンドの基本的な使用法は次のとおりです。
sar [option] [-o filename] [-f filename] [interval] [count]
場所:
間隔 :秒単位の期間。
カウント: 出力統計を作成する回数。
1。 CPUアクティビティの検索
デフォルトでは(他のオプションは指定されていません)、sarコマンドはサーバーのCPUアクティビティを報告します。また、オプション-u
CPU使用率レポートを取得するために使用できます。
2秒ごとに3回CPUアクティビティレポートを取得する場合は、次のsarコマンドを使用できます。
$ sar -u 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 09/06/2020 _x86_64_ (2 CPU)
22:26:54 CPU %user %nice %system %iowait %steal %idle
22:26:56 all 4,03 0,00 0,50 0,00 0,00 95,47
22:26:58 all 8,08 0,00 0,51 0,00 0,00 91,41
22:27:00 all 12,50 0,00 1,00 0,00 0,00 86,50
Average: all 8,21 0,00 0,67 0,00 0,00 91,11
場所:
%user ユーザーレベル(ユーザースペース)での実行中に発生したCPU使用率のパーセンテージを示します
%system システムレベル(カーネルスペース)での実行中に発生したCPU使用率のパーセンテージを示します
%idle 1つまたは複数のCPUがアイドル状態で、システムに未処理のディスクI/O要求がなかった時間の割合です。
バイナリ形式のファイルで出力を取得する場合は、-o
を追加する必要があります sarコマンドを使用したファイル名。例:
$ sar -u 2 3 -o log-file
また、特定の日のCPUアクティビティレポートを取得できます。たとえば、2020年6月9日です。次のように見つけることができます:
$ sudo sar -u -f /var/log/sa/sa09
2。各プロセッサのCPU使用率を確認する
-u
オプションは、すべてのプロセッサのCPU使用率を提供します。すべてのプロセッサのCPUアクティビティを個別に検索する場合は、-P
を使用する必要があります。 オプション。
$ sar -P ALL 1 1
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
05:38:18 CPU %user %nice %system %iowait %steal %idle
05:38:19 all 3,03 0,00 0,00 0,00 0,00 96,97
05:38:19 0 3,96 0,00 0,99 0,00 0,00 95,05
05:38:19 1 3,00 0,00 0,00 0,00 0,00 97,00
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 3,03 0,00 0,00 0,00 0,00 96,97
Average: 0 3,96 0,00 0,99 0,00 0,00 95,05
Average: 1 3,00 0,00 0,00 0,00 0,00 97,00
3。メモリ使用量を見つける
-r
を使用して、時間の経過に伴うメモリ使用量(サーバーの使用済みメモリと空きメモリ)を確認できます。 スイッチ。
$ sar -r 1 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
05:41:04 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
05:41:05 855300 3025220 77,96 0 1495276 2426864 30,55 1265008 1158172 100
05:41:06 854800 3025720 77,97 0 1495276 2426864 30,55 1265132 1158172 100
05:41:07 855032 3025488 77,97 0 1495276 2426864 30,55 1265012 1158172 100
Average: 855044 3025476 77,97 0 1495276 2426864 30,55 1265051 1158172 100
場所:
kbmemfree 使用可能な空きメモリの量をキロバイト単位で示します。
kbmemused 使用されているメモリの量をキロバイト単位で示します。これは、カーネル自体が使用するメモリを考慮していません。
特定の日のメモリ使用量を収集する場合は、次のように言います。9月5日、次のコマンドのように実行する必要があります:
$ sar -r -f /var/log/sa/sa05
4。スワッピングアクティビティを見つける
-W
を使用して、マシンのスワップ使用量を確認できます。 オプション。
$ sar -W 1 3
Linux 2.6.18-274.18.1.el5 (myserver) 09/06/2012
03:31:12 PM pswpin/s pswpout/s
03:31:13 PM 16.16 0.00
03:31:14 PM 16.00 0.00
03:31:15 PM 15.84 0.00
Average: 16.00 0.00
場所:
pswpin / s システムが1秒間に持ち込んだスワップページの総数を示します。
pswpout / s システムが1秒間に引き出すスワップページの総数を示します。
9月5日など、特定の日のスワップ使用量を収集する場合は、次のsarコマンドとして実行する必要があります。
$ sar -W -f /var/log/sa/sa05
5。時間の経過に伴う負荷の平均を求めます
-q
を使用して、時間の経過に伴う負荷平均を見つけることができます オプション。
$ sar -q 1 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:16:13 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
06:16:14 0 329 0,00 0,04 0,09 0
06:16:15 0 329 0,00 0,04 0,09 0
06:16:16 0 329 0,00 0,04 0,09 0
Average: 0 329 0,00 0,04 0,09 0
場所:
runq-sz :実行キューの長さ(実行時間を待機しているタスクの数)を示します。
plist-sz :タスクリスト内のタスクの数を示します。
ldavg-1/5/15 :最後の1分間/過去5分間/過去15分間のシステム負荷の平均。
特定の日の負荷平均、たとえば9月5日を収集する場合は、sarコマンドに従って実行する必要があります。
$ sar -q -f /var/log/sa/sa05
6。マウントされたファイルシステムのレポート
-F
を使用して、現在のファイルシステムの統計を取得できます。 オプション
$ sar -F 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:30:18 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:20 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:20 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
06:30:20 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:22 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:22 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
06:30:22 MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
06:30:24 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
06:30:24 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
Summary: MBfsfree MBfsused %fsused %ufsused Ifree Iused %Iused FILESYSTEM
Summary 30410 5532 15,39 15,39 18245113 166407 0,90 /dev/mapper/centos-root
Summary 796 218 21,52 21,52 523947 341 0,07 /dev/sda1
特定の日にマウントされたファイルシステムを収集する場合は、6月10日と言います。
$ sar -F -f /var/log/sa/sa10
7。 iノード、カーネルテーブル、ファイルテーブルの詳細を報告する
-v
でsarコマンドを使用すると、システムで使用されるiノード、プロセス、カーネルスレッド、およびファイルテーブルの詳細を取得できます。 オプション。
$ sar -v 2 3
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
06:57:23 dentunusd file-nr inode-nr pty-nr
06:57:25 160833 2400 132081 3
06:57:27 160833 2400 132081 3
06:57:29 160833 2400 132081 3
Average: 160833 2400 132081 3
場所:
dentunusd :ディレクトリキャッシュ内の未使用のキャッシュエントリの数
file-nr: 使用中のファイルハンドルの数
iノード-nr: iノードハンドラー
pty-nr :疑似端末
8。 CPUのボトルネックを確認する
sarコマンドを使用して、CPUボトルネックの原因となる可能性のある割り込み番号を見つけることができます。
以下の例では、#9
システム割り込み#0
を除いて最高でした 。
$ sar -I XALL 2 10
02:07:10 AM INTR intr/s
02:07:12 AM 0 992.57
02:07:12 AM 1 0.00
02:07:12 AM 2 0.00
02:07:12 AM 3 0.00
02:07:12 AM 4 0.00
02:07:12 AM 5 0.00
02:07:12 AM 6 0.00
02:07:12 AM 7 0.00
02:07:12 AM 8 0.00
02:07:12 AM 9 350.50
'/ proc/interrupts'ファイルの詳細も役立ちます。割り込みは、I / Oまたはその他の操作が発生する可能性があるように、処理を一時的に停止します。特定の操作が行われた後、処理が再開されます。したがって、マシンにインストールされている各デバイスには、ハードウェアやその他の周辺機器で使用されている設定と競合しない割り込み設定を提供する必要があることが非常に重要です。
$ sudo cat /proc/interrupts
CPU0 CPU1
0: 48 0 IO-APIC-edge timer
1: 54 0 IO-APIC-edge i8042
8: 1 0 IO-APIC-edge rtc0
9: 0 0 IO-APIC-fasteoi acpi
12: 35 116 IO-APIC-edge i8042
14: 0 0 IO-APIC-edge ata_piix
15: 0 0 IO-APIC-edge ata_piix
16: 118 2513 IO-APIC-fasteoi vmwgfx
24: 0 0 PCI-MSI-edge PCIe PME, pciehp
25: 0 0 PCI-MSI-edge PCIe PME, pciehp
26: 0 0 PCI-MSI-edge PCIe PME, pciehp
27: 0 0 PCI-MSI-edge PCIe PME, pciehp
NMI: 0 0 Non-maskable interrupts
LOC: 35392807 14792833 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
IWI: 2677624 215297 IRQ work interrupts
...
最初の列はIRQ番号を示しています。次の列は割り込みのタイプを報告し、最後の列にはIRQに配置されているデバイスの名前が含まれています。
9。ネットワーク統計を報告する
ネットワーク統計のレポートを取得するには、-n
を指定してsarコマンドを使用します。 オプション。例:
$ sar -n DEV
Linux 3.10.0-1127.10.1.el7.x86_64 (localhost.localdomain) 10/06/2020 _x86_64_ (2 CPU)
19:20:23 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
19:20:24 ens192 11,00 4,00 1,80 2,75 0,00 0,00 0,00
19:20:24 lo 79,00 79,00 43,62 43,62 0,00 0,00 0,00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: ens192 11,00 4,00 1,80 2,75 0,00 0,00 0,00
Average: lo 79,00 79,00 43,62 43,62 0,00 0,00 0,00
場所:
DEV :ネットワークデバイスからの統計が報告されます
IFACE :インターフェースの名前(上記の例では:ens192)
rxpck / s / txpck / s :1秒あたりに受信/送信されたパケットの総数
DEV以外にも、次のようなオプションがあります。
NFS :NFSクライアントアクティビティを表示する
靴下 :使用中のソケットを示します
TCP :TCPv4ネットワークトラフィックを示します
UDP :UDPv4ネットワークトラフィックを示します
6月9日などの特定の日のネットワーク統計を収集する場合は、次のように実行する必要があります。
$ sar -n DEV -f /var/log/sa/sa09
Sarグラフ
上記のセクションでは、ターミナルからsarを使用する方法について説明しました。 kSarは、sarデータを視覚化するJavaベースのGUIアプリケーションです。
ksarのインストール:
$ sudo apt install openjdk-11-jdk
$ sudo yum install epel-release
$ sudo yum install java-openjdk
ksarをダウンロードして解凍します:
$ wget https://sourceforge.net/projects/ksar/files/latest/download
$ mv download kSar.zip
$ unzip kSar.zip
次に、dirにcdします
$ cd kSar-*
次に、run.shファイルを実行可能にして、rootとして実行します。
$ chmod +x run.sh
$ sudo su
./run.sh
これで、ローカルコマンドを実行してテストできます。 Data > Run Local Command
に移動します そこで、デフォルトのコマンドを使用できます。
次に、左側のパネルをクリックして右側に表示されたグラフを見ると、グラフを見ることができます。
ファイルからグラフをロードすることも可能です。まず、sarを実行する必要があります:
LC_ALL=C sar -A > /tmp/sar.data.txt
次に、メニューでData > Load
を選択します テキストファイルから、/tmp
でファイルを見つけます または保存した場所ならどこでも。
結論
このチュートリアルでは、sarコマンドを使用して、システムリソースの使用状況に気づき、オペレーティングシステムでの作業中にパフォーマンスを向上させる方法を学びました。
sarの例から、システムアクティビティ情報を収集、報告、または保存するための優れたツールであることは明らかです。
読んでいただきありがとうございます。以下のコメントセクションに提案を残してください。
Related Read: 10 Linux iostat Command to Report CPU and I/O Statistics