当前位置: 首页 > news >正文

Linux命令-sar

sar 命令是一个强大的系统性能监控工具,用于收集和报告各种系统资源的使用情况。
sar 命令的完整参数列表及说明,按功能分类整理:
1.数据源相关
-f [文件]:读取历史数据文件,用于分析过去某段时间的性能数据。
-s [HH:MM:SS]:设置报告的起始时间。
-e [HH:MM:SS]:设置报告的结束时间。
2.监控项目相关
-u:显示 CPU 使用情况,包括用户态、内核态和空闲态的 CPU 时间比例。
-P [CPU|ALL]:监控指定 CPU 核心的使用情况,-P ALL 用于多核系统。
-r:显示内存和交换空间的使用情况。
-S:显示 Swap 空间的利用率。
-d:显示磁盘 I/O 使用情况,包括读写速度和 I/O 队列长度。
-b:显示 I/O 传输速率,包括每秒读写块数。
-n [DEV|EDEV|TCP|ETCP]:监控网络设备或 TCP 协议层的统计信息。
-q:显示系统负载情况,包括运行队列长度和负载平均值。

-w:显示进程上下文切换的统计信息。
-v:显示 inode、文件句柄和其他内核表的状态。
-B:显示换页活动的统计信息。
-H:监控大页面(Huge Pages)的使用情况。
-I [中断号|SUM]:监控特定中断或总中断情况。
-m [ALL|关键词]:监控电源管理指标(需内核 ≥ 3.4)。
3. 输出控制相关
-o [文件]:将监控数据以二进制格式保存到文件中,方便后续分析。
-A:显示所有报告信息,等效于启用多个常用选项的组合。
-p:以友好格式显示设备名(如 /dev/sda)。
4. 时间控制相关
-i [秒]:设置数据采集间隔时间(需结合 -o 使用)。
[间隔] [次数]:指定采样间隔(秒)和采样次数。
5. 特殊模式相关
-x [进程ID]:显示指定进程的详细状态。

常用示例
查看 CPU 使用率:

sar -u 1 5

-u 选项用于报告 CPU 使用情况。
1 表示采样间隔为 1 秒。
5 表示总共 采集5 次数据。
在这里插入图片描述
输出内容解释
系统信息部分
Linux 3.10.0 - 693.2.2.el7.x86_64 (containerserver) 04/23/2025 x86_64 (2 CPU) 表示运行的系统是 Linux,内核版本是 3.10.0 - 693.2.2.el7.x86_64,主机名为 containerserver,日期是 2025 年 4 月 23 日,是 x86_64 架构,并且有 2 个 CPU。

表头部分
08:17:35 PM 是采样开始的时间。
CPU 表示 CPU 的相关指标。
%user:显示用户空间(即应用程序)进程使用的 CPU 时间百分比。例如在 08:17:3 PM6 这一行,0.51 表示在这一秒内,用户空间进程占用了 0.51% 的 CPU 时间。
%nice:显示用户进程空间内改变过优先级的进程所占用的 CPU 时间百分比。这里一直为 0.00,说明没有用户主动调整过进程优先级来占用 CPU 的情况。
%system:显示内核空间(系统进程)使用的 CPU 时间百分比。如 08:17:39 PM 这一行是 0.51,表示这一秒内系统进程占用了 0.51% 的 CPU 时间。
%iowait:显示等待 I/O(输入 / 输出操作)完成所占用的 CPU 时间百分比。例如 08:17:40 PM 这一行是 0.51,意味着这一秒 CPU 有 0.51% 的时间在等待 I/O 操作完成。
%steal:显示虚拟机监控程序(如在云计算环境中)为其他虚拟机夺走的 CPU 时间百分比。这里一直为 0.00,说明没有这种情况。
%idle:显示 CPU 的空闲时间百分比。数值越高,表示 CPU 越空闲。例如在 08:17:38 PM 这一行是 100.00,表示这一秒 CPU 完全处于空闲状态。

数据部分
每一行代表一个采样时间点的 CPU 使用情况,从 08:17:36 PM 到 08:17:40 PM,每隔一秒采集一次数据。
最后一行 Average: all 是所有采样数据的平均值汇总。0.30 的 %user 表示在总共采样的 5 次(5 秒)过程中,平均有 0.30% 的 CPU 时间被用户空间进程占用,0.10 的 %system 表示平均有 0.10% 的时间用于系统进程,0.10 的 %iowait 表示平均有 0.10% 的时间在等待 I/O,99.49 的 %idle 表示平均有 99.49% 的 CPU 时间处于空闲状态,说明整个系统的 CPU 使用率很低。

查看内存使用情况:

sar -r 2 3

在这里插入图片描述
sar -r 2 3 中,-r 选项用于报告内存使用情况。
2 表示采样间隔为 2 秒。
3 表示总共采集 3 次数据。

输出内容解释
系统信息部分
Linux 3.10.0 - 693.2.2.el7.x86_64 (containerserver) 04/23/2025 x86_64 (2 CPU) 表示运行的系统是 Linux,内核版本是 3.10.0 - 693.2.2.el7.x86_64,主机名为 containerserver,日期是 2025 年 4 月 23 日,是 x86_64 架构,并且有 2 个 CPU。
表头部分
09:40:02 PM 是采样开始的时间。
kbmemfree:以千字节(KB)为单位显示空闲内存的大小。例如在 09:40:04 PM 这一行是 269076,表示此时有 269076KB 的内存空闲。
kbmemused:以千字节(KB)为单位显示已用内存的大小。如 09:40:04 PM 这一行是 1531144,表示已用内存为 1531144KB。
%memused:显示内存使用率,即已用内存占总内存的百分比。09:40:04 PM 这一行是 85.05%,说明内存的 85.05% 已被使用。
kbbuffers:以千字节(KB)为单位显示用于缓冲区的内存量。缓冲区用于临时存储从存储设备(如磁盘)读取的数据,以提高系统性能。在 09:40:04 PM 这一行是 153364KB。
kbcached:以千字节(KB)为单位显示用于缓存的内存量。缓存用于存储最近频繁访问的数据,以便快速访问。09:40:04 PM 这一行是 1059200KB。
kbcommit:以千字节(KB)为单位显示系统所承诺的最大内存使用量。这是系统为了保证进程运行而预留的内存量。09:40:04 PM 这一行是 821308KB。
%commit:显示承诺使用内存占总内存的百分比。09:40:04 PM 这一行是 45.62%,表示承诺使用的内存占总内存的 45.62%。
kbactive:以千字节(KB)为单位显示活动内存的大小。活动内存是指最近被访问过的内存,09:40:04 PM 这一行是 781044KB。
kbinact:以千字节(KB)为单位显示不活动内存的大小。不活动内存是指最近没有被访问过的内存,09:40:04 PM 这一行是 601296KB。
kbdirty:以千字节(KB)为单位显示脏内存的大小。脏内存是指已经被修改但还未写回磁盘的内存,09:40:04 PM 这一行是 284KB。
数据部分
每一行代表一个采样时间点的内存使用情况,从 09:40:04 PM 到 09:40:08 PM,每隔 2 秒采集一次数据。
最后一行 Average 是所有采样数据的平均值汇总。例如,平均的 %memused 是 85.05%,表示在总共采样的 3 次(6 秒)过程中,平均有 85.05% 的内存被使用,kbdirty 平均是 291KB,说明平均有 291KB 的脏内存。

查看磁盘 I/O 情况:

sar -d 1 2

在这里插入图片描述

查看网络流量:

sar -n DEV 1 3

sar -d 1 2 中,-d 选项用于报告磁盘 I/O 活动情况。
1 表示采样间隔为 1 秒。
2 表示总共采集 2 次数据。

输出内容解释
系统信息部分
Linux 3.10.0 - 693.2.2.el7.x86_64 (containerserver) 04/23/2025 x86_64 (2 CPU) 表示运行的系统是 Linux,内核版本是 3.10.0 - 693.2.2.el7.x86_64,主机名为 containerserver,日期是 2025 年 4 月 23 日,是 x86_64 架构,并且有 2 个 CPU。
表头部分
09:43:54 PM 是采样开始的时间。
DEV 表示设备名称,例如 dev253-0 表示设备的标识(这通常对应于系统中某个磁盘设备,如 LVM 逻辑卷等)。
**tps:每秒传输的 I/O 请求数量。**它表示磁盘每秒处理的 I/O 操作次数。例如,如果磁盘每秒处理 100 次读写操作,tps 值就是 100。
rd_sec/s:每秒读取的扇区数量。扇区是磁盘读写的基本单位,通常一个扇区是 512 字节。例如,rd_sec/s 为 100 表示每秒从磁盘读取 100 个扇区。
wr_sec/s:每秒写入的扇区数量。类似的,wr_sec/s 为 200 表示每秒向磁盘写入 200 个扇区。
avgrq-sz:平均每次设备 I/O 操作的数据量(以扇区为单位)。这个值可以帮助了解 I/O 操作的大小情况。例如,avgrq - sz 为 10 表示平均每次 I/O 操作处理 10 个扇区。
avgqu-sz:平均请求队列长度。它表示等待在磁盘设备队列中的请求数量。例如,avgqu - sz 为 2 表示平均有 2 个请求在等待磁盘处理。
await:平均每次设备 I/O 操作的等待时间(以毫秒为单位)。这个时间包括等待请求在队列中以及实际执行 I/O 操作的时间。例如,await 为 10ms 表示平均每次 I/O 操作需要等待 10 毫秒才能完成。
svctm:平均每次设备 I/O 操作的服务时间(以毫秒为单位)。它表示磁盘实际处理 I/O 操作所花费的时间。例如,svctm 为 5ms 表示磁盘处理一个 I/O 操作平均需要 5 毫秒。
%util:设备利用率。它表示磁盘设备的忙闲程度,即磁盘设备处理 I/O 请求的时间占总采样时间的百分比。例如,%util 为 80% 表示磁盘设备在采样期间 80% 的时间都在处理 I/O 请求。
数据部分
从 09:43:55 PM 到 09:43:56 PM,每隔 1 秒采集一次数据。在这两次采样中,所有指标的值都是 0.00,这表明在这两次采样期间,磁盘设备(dev253 - 0)没有任何 I/O 活动。最后的 Average 行显示所有采样的平均值,同样所有指标都是 0.00,说明在总共采样的 2 次(2 秒)过程中,磁盘设备一直处于空闲状态,没有进行读写操作。

查看系统负载情况,包括运行队列长度和负载平均值。

 sar -q 1 1

在这里插入图片描述
sar -q 1 1 中,-q 选项用于报告进程队列相关的信息。
1 表示采样间隔为 1 秒。
1 表示总共采集 1 次数据。

输出内容解释
系统信息部分
Linux 3.10.0 - 693.2.2.el7.x86_64 (containerserver) 04/23/2025 x86_64 (2 CPU) 表示运行的系统是 Linux,内核版本是 3.10.0 - 693.2.2.el7.x86_64,主机名为 containerserver,日期是 2025 年 4 月 23 日,是 x86_64 架构,并且有 2 个 CPU。
表头部分
09:47:03 PM 是采样开始的时间。
runq - sz:运行队列长度。它表示等待在 CPU 调度队列中的进程数量。例如,如果值为 5,表示有 5 个进程在等待 CPU 的调度。
plist - sz:进程列表大小。它表示当前系统中存在的所有进程(包括正在运行的、睡眠的等状态)的总数。例如,值为 200 表示系统中一共有 200 个进程。
ldavg - 1:过去 1 分钟的系统负载平均值。**系统负载是指等待 CPU 和正在运行的进程数之和。**例如,值为 1.0 表示过去 1 分钟平均有 1 个进程在等待或使用 CPU。
ldavg - 5:过去 5 分钟的系统负载平均值。
ldavg - 15:过去 15 分钟的系统负载平均值。
blocked:被阻塞的进程数。这些进程正在等待某种资源(如 I/O 操作完成)而无法运行。
数据部分
在 09:47:04 PM 这一行,runq - sz 为 0,表示没有进程在等待 CPU 调度。plist - sz 为 218,表示系统中存在 218 个进程。ldavg - 1、ldavg - 5 和 ldavg - 15 分别为 0.00、0.01 和 0.05,说明在过去 1 分钟、5 分钟和 15 分钟内系统负载都很低。blocked 为 0,表示没有进程被阻塞。最后的 Average 行显示所有采样的平均值,由于只采集了一次数据,所以平均值与该次采样数据相同。

查看 I/O 传输速率,包括每秒读写块数。

sar -b 1 2
[root@containerserver ~]# sar -b 1 2

在这里插入图片描述
输出字段解释
Time :采样时间。
tps :每秒设备 I/O 传输次数。
rtps :每秒读操作的 I/O 传输次数。
wtps :每秒写操作的 I/O 传输次数。
bread/s :每秒读取的块数。
bwrtn/s :每秒写入的块数。

输出结果
09:48:08 PM :第一次采样时间点。
0.00 :在该时间点,tps、rtps、wtps、bread/s、bwrtn/s均为 0.00,表示在该秒内系统没有磁盘 I/O 操作。
09:48:09 PM :第二次采样时间点,所有指标均为 0.00,同样表示在该秒内系统没有磁盘 I/O 操作。
09:48:10 PM :第三次采样时间点,所有指标均为 0.00,仍表示系统在这段时间内没有磁盘 I/O 活动。
Average :平均值,计算所有采样数据的平均结果,这里也显示所有指标为 0.00,说明在整个监控期间,系统磁盘 I/O 活动极少或未进行磁盘读写操作。

保存监控数据到文件:

sar -o /tmp/monitor.log 5 10

每 5 秒采集一次数据,共采集 10 次,并保存到 /tmp/monitor.log

查看历史数据:

sar -f /var/log/sysstat/sa15

查看 15 号的性能数据

相关文章:

  • Python内置函数---bytearray()
  • 【Java设计模式及实践学习-第4章节-结构型模式】
  • 一对多的数据结构(树)的基本概念
  • spring-session-data-redis使用
  • 困局与破局:当传统校园能源管理遭遇“散沙式“能耗困局
  • opencv--图像滤波
  • 【ASR学习笔记】常见VAD模型识别语音活动的方式对比
  • Spring Boot 中处理 JSON 数值溢出问题:从报错到优雅解决
  • rk3588 驱动开发(二)第四章嵌入式 Linux LED 驱动开发实验
  • 图像预处理-模板匹配
  • Linux:42线程控制lesson30
  • org.springframework.core.env.PropertiesPropertySource 类详解
  • LISN的使用
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(9): 意向形
  • 强化学习算法笔记【AMP】
  • 进程(Process)详解
  • c++ 互斥锁
  • c++学习流程
  • Python高级爬虫之JS逆向+安卓逆向1.6节: 函数基础
  • 动态规划(一)【背包】
  • 沂水县委书记陈士贤,跨市履新泰安市委常委、组织部部长
  • 河南省鹤壁市人大常委会副主任李杰接受审查调查
  • 央行研究局局长答澎湃:持续优化跨境金融服务政策工具箱,有效支持企业走出去
  • 2025年度“沪惠保”今日开售:保费维持129元/人,进一步扩增国内外特药种类
  • 宁波一季度GDP为4420.5亿元,同比增长5.6%
  • 遭遇FIFA三个转会窗禁令,申花有苦难言将选择赔偿