简介
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。
sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。
语法
sar(选项)(参数)
选项
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
参数
- 间隔时间:每次报告的间隔时间(秒);
- 次数:显示报告的次数。
实操
[root@VM-0-15-centos ~]# sar -n DEV 1
-bash: sar: command not found
[root@VM-0-15-centos ~]# yum install sysstat
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
os | 3.6 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/5): extras/7/x86_64/primary_db | 222 kB 00:00:00
(2/5): epel/7/x86_64/updateinfo | 1.0 MB 00:00:00
(3/5): updates/7/x86_64/primary_db | 3.7 MB 00:00:01
(4/5): os/7/x86_64/primary_db | 6.1 MB 00:00:01
(5/5): epel/7/x86_64/primary_db | 6.9 MB 00:00:01
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:10.1.5-19.el7 will be installed
--> Processing Dependency: libsensors.so.4()(64bit) for package: sysstat-10.1.5-19.el7.x86_64
--> Running transaction check
---> Package lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=========================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================
Installing:
sysstat x86_64 10.1.5-19.el7 os 315 k
Installing for dependencies:
lm_sensors-libs x86_64 3.4.0-8.20160601gitf9185e5.el7 os 42 k
Transaction Summary
=========================================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 357 k
Installed size: 1.2 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm | 42 kB 00:00:00
(2/2): sysstat-10.1.5-19.el7.x86_64.rpm | 315 kB 00:00:00
-------------------------------------------------------------------------------------------------------------------------
Total 798 kB/s | 357 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64 1/2
Installing : sysstat-10.1.5-19.el7.x86_64 2/2
Verifying : sysstat-10.1.5-19.el7.x86_64 1/2
Verifying : lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64 2/2
Installed:
sysstat.x86_64 0:10.1.5-19.el7
Dependency Installed:
lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7
Complete!
[root@VM-0-15-centos ~]# sar -n DEV 1
Linux 3.10.0-862.el7.x86_64 (VM-0-15-centos) 12/11/2020 _x86_64_ (1 CPU)
11:53:58 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11:53:59 PM eth0 2.02 2.02 0.09 0.26 0.00 0.00 0.00
11:53:59 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:53:59 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11:54:00 PM eth0 10.00 10.00 0.84 1.54 0.00 0.00 0.00
11:54:00 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
监控网络流量
sar -n DEV (查看全天)
sar -n DEV 1 2 (1:每隔一秒,2:写入2次)
sar -n DEV 1 一秒一次 输出网络设备状态的统计信息
sar -n DEV 2 两秒一次 输出网络设备状态的统计信息
输出项 | 详细说明 |
---|---|
IFACE | 就是网络设备的名称。 |
rxpck/s | 每秒钟接收到的包数目。 |
txpck/s | 每秒钟发送出去的包数目。 |
rxkB/s | 每秒钟接收到的字节数。 |
txkB/s | 每秒钟发送出去的字节数。 |
rxcmp/s | 每秒钟接收到的压缩包数目。 |
txcmp/s | 每秒钟发送出去的压缩包数目。 |
rxmcst/s | 每秒钟接收到的多播包的包数目 |
其中重点关注rxKB/s以及txKB/s。
千兆网络,这两个值分别最大不应该超过120MB/s,换算成KB/s,则是120000kb/s
其他
free
linux系统上运行一下top 命令或者free命令,都能够看到buffers和cached相关的数据。需要注意的是通常我们看到的监控数据 空闲内存百分比,并非是下面显示的free/total,而是(free+buffers+cached)/total。
buffers在Linux系统中通常被作为与块存储的IO缓存使用。所谓块存储可简单理解为将数据直接写到裸磁盘。而cached则一般会用于文件系统的IO缓存。比如page cache这种内存换页功能。
听不明白也没关系,因为事实上它们两个经常配合使用。比如与磁盘交换数据、进行网络通信时都会用。buffers和cached是实实在在被操作系统的系统进程在使用的,但是如果用户进程需要可以很快释放。所以通常会将它算到剩余可用内存里。
但是这个也要注意了。比如在IO密集型的系统,如果buffers/cached被大幅占用,会降低IO速度,进而降低系统吞吐。甚至有可能一个请求几秒才能到达应用程序,造成请求超时。
iostat -x 3 2
iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
[root@VM-0-15-centos ~]# iostat -x 3 2
Linux 3.10.0-862.el7.x86_64 (VM-0-15-centos) 12/12/2020 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.59 0.00 0.51 0.09 0.00 98.81
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.01 2.47 0.05 4.56 3.95 35.06 16.92 0.02 4.68 20.72 4.49 0.30 0.14
scd0 0.00 0.00 0.00 0.00 0.01 0.00 66.93 0.00 0.42 0.42 0.00 0.32 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
1.01 0.00 0.00 0.00 0.00 98.99
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
[root@VM-0-15-centos ~]#
vmstat 3
vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
[root@VM-0-15-centos ~]# vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
4 0 0 172228 138984 1308516 0 0 4 35 2 11 1 1 99 0 0
0 0 0 173456 138988 1308512 0 0 0 57 488 586 1 0 99 0 0
1 0 0 173472 138988 1308512 0 0 0 23 428 501 0 1 99 0 0
0 0 0 173456 138988 1308516 0 0 0 0 421 482 1 0 99 0 0
^C
mpstat
mpstat命令指令主要用于多CPU环境下,它显示各个可用CPU的状态
[root@VM-0-15-centos ~]# mpstat
Linux 3.10.0-862.el7.x86_64 (VM-0-15-centos) 12/12/2020 _x86_64_ (1 CPU)
12:24:07 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:24:07 AM all 0.59 0.00 0.51 0.09 0.00 0.00 0.00 0.00 0.00 98.81
dstat
dstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入dstat 3即每三秒收集一次,但最新的数据都会每秒刷新显示。和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat -c即显示CPU的使用情况。
下载安装
[root@VM-0-15-centos ~]# dstat
-bash: dstat: command not found
[root@VM-0-15-centos ~]# yum install -y dstat
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package dstat.noarch 0:0.7.2-12.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=========================================================================================================================
Package Arch Version Repository Size
=========================================================================================================================
Installing:
dstat noarch 0.7.2-12.el7 os 163 k
Transaction Summary
=========================================================================================================================
Install 1 Package
Total download size: 163 k
Installed size: 752 k
Downloading packages:
dstat-0.7.2-12.el7.noarch.rpm | 163 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : dstat-0.7.2-12.el7.noarch 1/1
Verifying : dstat-0.7.2-12.el7.noarch 1/1
Installed:
dstat.noarch 0:0.7.2-12.el7
Complete!
摘自:https://man.linuxde.net/sar