官方文档
http://sebastien.godard.pagesperso-orange.fr/documentation.html
sysstat安装
1.下载源码
https://github.com/sysstat/sysstat
2.编译安装
tar xvf sysstat-xxx.tar.gz
./configure
make -j 16
make install
3.测试
iostat
sysstat使用
sysstat 包包含许多商业单位共有的各种实用程序,用于监控系统性能和使用活动:
- iostat报告设备、分区和网络文件系统的CPU统计和硬盘吞吐效率的数据。
- mpstat报告单个或组合处理器相关的统计数据。
- pidstat报告Linux任务 (进程) 的统计信息: I/O、CPU、内存等。
- tapestat报告连接到系统的磁带驱动器的统计信息。
- cifsiostat报告CIFS统计。
- sysstat只是sysstat配置文件的手动页面,给出了sysstat命令使用的环境变量的含义。
sysstat还包含您可以通过 cron 或 systemd 计划收集和记录性能和活动数据的工具:
- sar收集、报告和保存系统活动信息 (CPU、内存、磁盘、中断、网络接口、TTY、内核表等)。 # 数据统计核心工具
- sadc是系统活动数据收集器,用作sar的后端。
- sa1在系统活动每日数据文件中收集并存储二进制数据。它是sadc的前端,设计为从cron或systemd运行。
- sa2撰写每日活动总结报告。它是从cron或systemd运行的sar的前端。
- sadf以多种格式 (CSV、XML、JSON等) 显示由sar收集的数据,并可用于与其他程序的数据交换。该命令还可用于为sar使用SVG (可伸缩矢量图形) 格式收集的各种活动绘制图形。
性能及运行状况监控
1.iostat
iostat报告中央处理单元 (CPU) 统计信息以及设备和分区的输入/输出统计信息。 iostat命令用于通过观察设备活动时间与其平均传输速率的关系来监视系统输入/输出设备负载。iostat命令生成的报告可用于更改系统配置,以更好地平衡物理磁盘之间的输入/输出负载。
每一秒钟打印一次CPU状态,打印3次:
iostat -c 1 3
显示详细信息:
fakerth@fakerth:~$ iostat -x
Linux 4.19.0 (fakerth) 08/07/23 _x86_64_ (8 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.32 0.04 3.22 0.32 0.00 96.11Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
loop0 0.07 1.20 0.00 0.00 15.05 18.31 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 0.00 0.00 0.07
loop1 0.00 0.00 0.00 0.00 8.75 1.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 0.00 0.00 0.00 0.00
loop10 19.77 20.10 0.00 0.00 5.45 1.02 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 0.00 0.10 0.49
loop11 0.05 0.39 0.00 0.00 12.98 7.43 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 0.00 0.00 0.06
loop12 0.07 1.20 0.00 0.00 18.78 16.28 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 0.00 0.00 0.07
loop13 0.05 0.38 0.00 0.00 7.93 7.66 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 0.00 0.00 0.04
loop14 0.01 0.01 0.00 0.00 6.60 1.60 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 0.00 0.00 0.00
loop2 0.07 1.22 0.00 0.00 15.81 17.35 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 0.00 0.00 0.07
loop3 0.07 1.19 0.00 0.00 14.56 17.31 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 0.00 0.00 0.06
loop4 0.05 0.38 0.00 0.00 12.20 7.37 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 0.00 0.00 0.06
loop5 0.06 0.39 0.00 0.00 42.72 6.92 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 0.00 0.00 0.16
loop6 0.06 0.39 0.00 0.00 9.05 6.23 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 0.00 0.00 0.05
loop7 0.07 1.21 0.00 0.00 17.89 17.29 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 0.00 0.00 0.08
loop8 0.07 1.21 0.00 0.00 29.28 18.38 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 0.00 0.00 0.11
loop9 0.07 1.22 0.00 0.00 18.62 17.67 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 0.00 0.00 0.08
sda 21.94 897.87 3.34 13.20 5.71 40.93 5.32 40.23 1.37 20.45 4.42 7.57 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.13 5.44
sdb 0.11 2.37 0.00 0.00 9.35 21.21 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 0.00 0.00 0.09
sr0 0.03 0.10 0.00 0.00 25.93 3.26 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 0.00 0.00 0.07
iostat命令生成的第一个报告是 CPU 利用率报告。对于多处理器系统,CPU 值是所有处理器的全局平均值。该报告具有以下格式:
- %user :显示在用户级别(应用程序)执行时发生的 CPU 利用率百分比。
- %nice :显示在具有良好优先级的用户级别执行时发生的 CPU 利用率百分比。
- %system :显示在系统级别(内核)执行时发生的 CPU 利用率百分比。
- %iowait :显示系统有未完成的磁盘 I/O 请求期间一个或多个 CPU 空闲的时间百分比。
- %steal :显示虚拟机管理程序为另一个虚拟处理器提供服务时,一个或多个虚拟 CPU 花费在非自愿等待上的时间百分比
- %idle :显示一个或多个 CPU 空闲且系统没有未完成的磁盘 I/O 请求的时间百分比。
iostat命令生成的第二个报告是设备利用率报告。设备报告提供每个物理设备或分区的统计信息。可以在命令行上输入要显示统计信息的块设备和分区。如果没有输入设备或分区,则显示系统使用的每个设备的统计信息,并假设内核为其维护统计信息。如果全部在命令行中给出关键字,然后显示系统定义的每个设备的统计信息,包括那些从未使用过的设备。默认情况下,传输速率以 1K 块显示,除非设置了环境变量 POSIXLY_CORRECT,在这种情况下使用 512 字节块。该报告可能会显示以下字段,具体取决于所使用的标志(例如-x、-s和-k或-m):
Device:此列提供 /dev 目录中列出的设备(或分区)名称。
tps:指示每秒向设备发出的传输数。传输是对设备的 I/O 请求。多个逻辑请求可以组合成对设备的单个 I/O 请求。传输的大小不确定。
Blk_read/s (kB_read/s, MB_read/s):指示每秒从设备读取的数据量,以块数(千字节、兆字节)表示。块相当于扇区,因此大小为 512 字节。
Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s):指示每秒写入设备的数据量,以块数(千字节、兆字节)表示。
Blk_dscd/s (kB_dscd/s, MB_dscd/s):指示设备丢弃的数据量,以每秒块数(千字节、兆字节)表示。
Blk_w+d/s (kB_w+d/s, MB_w+d/s):指示设备每秒写入或丢弃的数据量,以块数(千字节、兆字节)表示。
Blk_read (kB_read, MB_read):读取的块总数(千字节、兆字节)。
Blk_wrtn (kB_wrtn, MB_wrtn):写入的块总数(千字节、兆字节)。
Blk_dscd (kB_dscd, MB_dscd):丢弃的块总数(千字节、兆字节)。
Blk_w+d (kB_w+d, MB_w+d):写入或丢弃的块总数(千字节、兆字节)。
r/s:设备每秒完成的读取请求数(合并后)。
w/s:设备每秒完成的写入请求数(合并后)。
d/s:设备每秒完成的丢弃请求数(合并后)。
f/s:设备每秒完成的刷新请求数(合并后)。这对磁盘执行的刷新请求进行计数。不跟踪分区的刷新请求。在合并之前,刷新操作被计为写入。
sec/s (kB/s, MB/s):设备每秒读取、写入或丢弃的扇区数(千字节、兆字节)。
rsec/s (rkB/s, rMB/s):每秒从设备读取的扇区数(千字节、兆字节)。
wsec/s (wkB/s, wMB/s):每秒写入设备的扇区数(千字节、兆字节)。
dsec/s (dkB/s, dMB/s):设备每秒丢弃的扇区数(千字节、兆字节)。
rqm/s:每秒合并并排队到设备的 I/O 请求数。
rrqm/s:每秒合并并排队到设备的读取请求数。
wrqm/s:每秒合并并排队到设备的写入请求数。
drqm/s:每秒合并并排队到设备的丢弃请求数。
%rrqm:在发送到设备之前合并在一起的读取请求的百分比。
%wrqm:在发送到设备之前合并在一起的写入请求的百分比。
%drqm:在发送到设备之前合并在一起的丢弃请求的百分比。
areq-sz:向设备发出的请求的平均大小(以千字节为单位)。
rareq-sz:向设备发出的读取请求的平均大小(以千字节为单位)。
wareq-sz:向设备发出的写入请求的平均大小(以千字节为单位)。
dareq-sz:向设备发出的丢弃请求的平均大小(以千字节为单位)。
await:向要服务的设备发出 I/O 请求的平均时间(以毫秒为单位)。这包括请求在队列中花费的时间以及为它们提供服务所花费的时间。
r_await:向要服务的设备发出读取请求的平均时间(以毫秒为单位)。这包括请求在队列中花费的时间以及为它们提供服务所花费的时间。
w_await:向要服务的设备发出写入请求的平均时间(以毫秒为单位)。这包括请求在队列中花费的时间以及为它们提供服务所花费的时间。
d_await:向要服务的设备发出丢弃请求的平均时间(以毫秒为单位)。这包括请求在队列中花费的时间以及为它们提供服务所花费的时间。
f_await:向要服务的设备发出刷新请求的平均时间(以毫秒为单位)。块层结合刷新请求,一次最多执行一个。因此,刷新操作的时间可能会延长一倍:等待当前的刷新请求,然后执行它,然后等待下一个。
aqu-sz:向设备发出的请求的平均队列长度。
%util:向设备发出 I/O 请求所用时间的百分比(设备的带宽利用率)。对于串行服务请求的设备,当该值接近 100% 时,就会发生设备饱和。但对于并行处理请求的设备(例如 RAID 阵列和现代 SSD),该数字并不反映其性能限制。
2.mpstat
mpstat报告处理器相关统计信息。mpstat命令写入每个可用处理器的标准输出活动,处理器 0 是第一个。还报告了所有处理器的平均活动。
以两秒的间隔显示所有处理器中的五个全局统计信息报告:
mpstat 2 5
以两秒的间隔显示所有处理器的五个统计信息报告:
mpstat -P all 2 5
3.pidstat
pidstat命令用于监视当前由 Linux 内核管理的各个任务。
以两秒的间隔显示PID 2512 的五个 CPU 统计信息报告。
pidstat -p 2512 2 5
数据收集及统计
sar
sar收集、报告或保存系统活动信息。sar命令将操作系统中选定的累积活动计数器的内容写入标准输出。
每 2 秒报告 IRQ 14 的统计信息。显示 10 行。数据存储在名为 int14.file 的文件中:
sar -I --int=14 -o int14.file 2 10