linux:使用sar诊断问题
使用sar诊断问题
- 1. CPU 使用情况
- 2. 内存与交换
- 3. 磁盘 I/O 活动
- 4. 网络 I/O 活动
- 5. 进程与上下文切换
- 6. 系统调用与文件活动
- 7. 电源管理
- 8. 延迟分析
- 9. 系统全局统计
- 10. 查看历史记录
- 11. 特定时间段
- 12. 自动定时采样
- 其他参数:
- 使用实例:
sar
(System Activity Reporter)是 sysstat
工具包中的命令,用于收集、报告和保存各种系统活动的统计信息。它可以监控 CPU、内存、磁盘 I/O、网络等多种资源的使用情况。你可以通过不同的参数来获取不同类型的系统活动统计。
以下是 sar
命令的常见参数及其详细解释:
1. CPU 使用情况
sar -u
:报告 CPU 的整体使用情况,包括用户、系统、空闲等时间的百分比。sar -u [间隔] [次数]
:每隔一段时间采集一次 CPU 使用数据并报告多次。sar -P
:报告每个 CPU 的使用情况。sar -P ALL
:报告所有 CPU 的使用情况。sar -P <CPU>
:报告指定 CPU 的使用情况。
sar -u
输出内容解释:
[baichao@localhost linux-5.6]$ sar -u 1 3
Linux 3.10.0-1160.102.1.el7.x86_64 (localhost.localdomain) 10/11/2024 _x86_64_ (8 CPU)03:32:22 AM CPU %user %nice %system %iowait %steal %idle
03:32:23 AM all 99.43 0.00 0.57 0.00 0.00 0.00
03:32:24 AM all 99.42 0.00 0.58 0.00 0.00 0.00
03:32:25 AM all 99.41 0.00 0.59 0.00 0.00 0.00
Average: all 99.42 0.00 0.58 0.00 0.00 0.00
参数解释:
sar -u 1 3
:表示每秒采样一次 CPU 数据,并输出 3 次。
各列的含义:
- %user:用户空间进程的 CPU 使用率(执行应用程序的时间占用率)。
- %nice:带有正优先级(
nice
值)的用户进程的 CPU 使用率。 - %system:内核空间(系统级)进程的 CPU 使用率(执行系统调用和内核操作的时间占用率)。
- %iowait:等待 I/O 操作完成的时间占 CPU 总时间的百分比。值越高,说明系统可能有 I/O 瓶颈。
- %steal:虚拟机管理程序(hypervisor)从该虚拟机“窃取”的 CPU 时间。
- %idle:空闲时间,即 CPU 无事可做的时间。如果系统在繁忙的情况下有较高的
idle
值,可能有资源调度或系统瓶颈问题。
通过 sar -u
,可以分析系统的 CPU 性能,了解 CPU 是处于忙碌状态还是有足够的空闲资源,以及是否有 I/O 或 CPU 相关的瓶颈。
2. 内存与交换
-
sar -r
:报告内存的使用情况,包括物理内存和交换空间的统计数据。- 包括
kbmemfree
(空闲物理内存)、kbmemused
(已用物理内存)、%memused
(已用内存百分比)、kbswpfree
(空闲交换空间)等。
- 包括
-
sar -S
:报告交换空间的活动情况,包括交换入和交换出的数据量。- 包括
pswpin/s
(每秒交换到内存中的页数)、pswpout/s
(每秒交换到磁盘中的页数)。
- 包括
你运行的 sar -r
命令用于显示 Linux 系统中的内存使用情况。它生成了一段时间内的内存使用统计,包括空闲内存、已使用内存、缓存和缓冲区等信息。
[baichao@localhost linux-5.6]$ sar -r
Linux 3.10.0-1160.102.1.el7.x86_64 (localhost.localdomain) 10/11/2024 _x86_64_ (8 CPU)03:30:02 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
03:40:01 AM 11165664 5081720 31.28 2108 2923356 2114924 8.63 3930476 587340 0
03:50:01 AM 11160444 5086940 31.31 2108 2923364 2181620 8.90 3933536 587348 0
04:00:02 AM 11156368 5091016 31.33 2108 2923372 2181004 8.90 3936384 586940 4
Average: 11160825 5086559 31.31 2108 2923364 2159183 8.81 3933465 587209 104:00:40 AM LINUX RESTART
各列的含义:
kbmemfree
:系统中空闲的内存,以 KB 为单位。kbmemused
:系统中已使用的内存,以 KB 为单位。%memused
:已使用内存占总内存的百分比。kbbuffers
:用于存储硬盘数据的缓冲区大小(以 KB 为单位),这部分内存将用于硬盘 I/O 操作。kbcached
:文件系统缓存的大小(以 KB 为单位),这部分内存用于缓存常用的文件数据,以提高访问速度。kbcommit
:已提交的内存大小(以 KB 为单位),表示需要保证的内存大小,即使系统过度使用交换空间。这个数值包括所有正在使用或即将被使用的内存。%commit
:已提交内存占系统内存的百分比。kbactive
:处于活动状态的内存(以 KB 为单位),这些内存正在被频繁访问。kbinact
:处于非活动状态的内存(以 KB 为单位),这些内存包含不经常使用的数据,但仍然保留在内存中以便快速访问。kbdirty
:当前等待写入到磁盘的脏页(以 KB 为单位),表示修改过但尚未写入磁盘的数据。
第一行的数据可以理解为:
- **03:30:02 AM** 时间点:
- 系统有 **11165664 KB** 的空闲内存,已使用内存为 **5081720 KB**,已使用内存占 **31.28%**。
- 缓冲区大小为 **2108 KB**,文件缓存大小为 **2923356 KB**。
- 已提交的内存为 **2114924 KB**,提交率为 **8.63%**。
- 活动内存为 **3930476 KB**,非活动内存为 **587340 KB**,脏数据为 **0 KB**。
重新启动信息
04:00:40 AM LINUX RESTART
这个表示系统或 sysstat
服务在 04:00:40 AM
重新启动,所有统计从这个时间开始重新计算。
总结:
- 该输出显示系统从 03:30 到 04:00 的内存使用情况。
- 系统平均使用了大约 31.31% 的物理内存,空闲内存大约是 11160825 KB,文件缓存和缓冲区数据量稳定。
- 系统的内存使用相对较低,
kbdirty
数据很少,表示几乎没有脏数据等待写入磁盘。 - 最后,系统在
04:00:40
进行了重启,可能是计划任务或手动重启的结果。
3. 磁盘 I/O 活动
-
sar -b
:报告块设备的 I/O 传输情况。- 包括
tps
(每秒传输数)、rtps
(每秒读请求数)、wtps
(每秒写请求数)、bread/s
(每秒从设备读取的块数)等。
- 包括
-
sar -d
:报告每个设备的 I/O 活动情况(需要启用sadf
)。- 包括
tps
、rd_sec/s
、wr_sec/s
等设备读写统计。
- 包括
[baichao@localhost linux-5.6]$ sar -b
Linux 3.10.0-1160.102.1.el7.x86_64 (localhost.localdomain) 10/11/2024 _x86_64_ (8 CPU)03:30:02 AM tps rtps wtps bread/s bwrtn/s
03:40:01 AM 3.24 1.49 1.75 102.16 125.10
03:50:01 AM 0.10 0.00 0.10 0.00 0.88
04:00:02 AM 0.08 0.00 0.08 0.00 0.64
Average: 1.14 0.50 0.64 34.00 42.1504:00:40 AM LINUX RESTART04:10:01 AM tps rtps wtps bread/s bwrtn/s
04:20:01 AM 0.21 0.00 0.21 0.03 2.81
Average: 0.21 0.00 0.21 0.03 2.81
每一列代表不同的块设备 I/O 指标:
tps
:每秒传输的块数(transactions per second),表示每秒进行的读写请求的总数。3.24,表示每秒进行约 3.24 次读写请求。rtps
:每秒读取的块数(reads per second),表示每秒进行的读取请求的数量。1.49,表示每秒进行约 1.49 次读取请求。wtps
:每秒写入的块数(writes per second),表示每秒进行的写入请求的数量。1.75,表示每秒进行约 1.75 次写入请求。bread/s
:每秒读取的块数(bytes read per second),表示每秒从块设备读取的数据量,以字节为单位。 102.16,表示每秒读取的数据量约为 102.16 字节。bwrtn/s
:每秒写入的块数(bytes written per second),表示每秒写入到块设备的数据量,以字节为单位。125.10,表示每秒写入的数据量约为 125.10 字节。
4. 网络 I/O 活动
sar -n
:报告网络活动。sar -n DEV
:显示网络接口的统计数据,包括传输和接收的字节数、数据包数等。sar -n EDEV
:显示带有错误的网络设备统计信息。sar -n SOCK
:显示 TCP/IP 套接字的统计数据。sar -n IP
:显示 IP 协议的统计数据,如发送、接收、转发的 IP 数据包。sar -n TCP
:显示 TCP 连接的统计数据。sar -n UDP
:显示 UDP 统计数据。
sar -n DEV -f /var/log/sa/sa01:查看本月 1 号的网卡流量情况
sar -n SOCK -f /var/log/sa/sa01:查看本月 1 号的网络连接情况
5. 进程与上下文切换
-
sar -w
:报告进程上下文切换的统计信息。- 包括
proc/s
(每秒创建的进程数)、cswch/s
(每秒上下文切换次数)。
- 包括
-
sar -q
:报告系统负载(包括运行队列和等待队列长度)。
6. 系统调用与文件活动
-
sar -v
:报告文件表、inode 表、缓冲区和内核内部的相关信息。- 包括
dentunusd
(未使用的目录项)、file-nr
(文件表中的打开文件数量)等。
- 包括
-
sar -y
:报告 TTY 设备活动(终端设备)。
7. 电源管理
sar -m
:报告电源状态统计信息,适用于带有电池的设备。sar -m POWER
:显示电源的消耗状态。
8. 延迟分析
sar -B
:报告分页活动的统计信息。- 包括
pgpgin/s
(每秒交换到内存中的页数)、pgpgout/s
(每秒交换到磁盘中的页数)。
- 包括
9. 系统全局统计
sar -A
:报告所有可用的系统活动统计信息的综合报告。- 通常是最全面的报告方式,适合需要了解系统整体性能的情况。
10. 查看历史记录
sar -f <文件>
:从指定的文件中读取历史数据(通常是/var/log/sa/
目录下的文件)。- 可用于查看过去的性能数据。
11. 特定时间段
sar -s <起始时间> -e <结束时间>
:报告在特定时间段内的数据。- 格式为
HH:MM:SS
,例如:sar -s 08:00:00 -e 12:00:00
会报告从 08:00 到 12:00 之间的系统活动。
- 格式为
12. 自动定时采样
crontab
配置:sar
通常结合crond
,通过定时任务自动采集系统性能数据,配置文件一般在/etc/cron.d/sysstat
。
其他参数:
-h
:生成更易读的格式(例如将 kB 格式化为 MB)。-o <文件>
:将报告输出到指定的文件中,供以后分析。-i <间隔>
:设置采样间隔时间(单位:秒)。
使用实例:
- 查看实时 CPU 使用率:
sar -u 1 5
(每秒采集一次,共采集 5 次) - 查看过去的网络流量情况:
sar -n DEV -f /var/log/sa/sa10
相关文章:
linux:使用sar诊断问题
使用sar诊断问题 1. CPU 使用情况2. 内存与交换3. 磁盘 I/O 活动4. 网络 I/O 活动5. 进程与上下文切换6. 系统调用与文件活动7. 电源管理8. 延迟分析9. 系统全局统计10. 查看历史记录11. 特定时间段12. 自动定时采样其他参数:使用实例: sar(S…...
CUDA编程技巧(不断搜集更新)
1 使用位运算替换部分乘法或除法 位移操作主要适用于无符号整数,对于带符号数的位移,特别是负数,可能会导致问题,如果你需要对负数执行除法或者乘法,最好谨慎使用位移运算。 1.1 替换除法 当需要将一个数除以 2、4、…...

云计算(第二阶段):mysql后的shell
第一章:变量 前言 什么是shell Shell 是一种提供用户与操作系统内核交互的工具,它接受用户输入的命令,解释后交给操作系统去执行。它不仅可以作为命令解释器,还可以通过脚本完成一系列自动化任务。 shell的特点 跨平台:…...

Debian12离线部署Mysql全网最详细教程
一、下载安装所需要的库 1、所需要的库 # 所需要的库有 libc6_2.36-9deb12u8_amd64.deb libgcc-s1_12.2.0-14_amd64.deb libstdc6_12.2.0-14_amd64.deb gcc-12-base_12.2.0-14_amd64.deb psmisc_23.6-1_amd64.deb libnuma1_2.0.18-1_amd64.deb libmecab2_0.996-14b14_amd64.d…...
文本生成视频技术:艺术与科学的交汇点
在人工智能技术的飞速发展下,文本生成视频(Text-to-Video)技术已经成为现实。这项技术能够根据文本描述生成相应的视频内容,极大地拓展了内容创作的边界。本文将从三个主要方面对文本生成视频技术进行深入探讨:技术能达…...

【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动(方便)
下载WinSW 项目地址: GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license. 下载地址: https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe 参考配置模…...

OpenAI董事会主席Bret Taylor的Agent公司Sierra:专注于赋能下一代企业用户体验
本文由readlecture.cn转录总结。ReadLecture专注于音、视频转录与总结,2小时视频,5分钟阅读,加速内容学习与传播。 视频来源 youtube: https://www.youtube.com/watch?vriWB5nPNZEM&t47s 大纲 介绍 欢迎与介绍 介绍Bret Taylor&#x…...

【linux】信号(下)
8. 阻塞信号 (一)信号其他相关常见概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)进程可以选择阻塞 (Block )某个信号被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作(即被阻塞的信…...
Notepad++ 初学者指南
引言 对于初学者来说,选择合适的编程工具很重要,特别是考虑到易用性和计算机资源的需求。 虽然集成开发环境(IDE)如 Eclipse、IntelliJ IDEA 和 Visual Studio 提供了许多强大的功能,但对于刚开始学习编程的人来说&a…...

Web Socket 使用详解
在信息爆炸的时代,用户对网页的期待早已超越了静态内容的展示。实时聊天、股票报价、协同编辑等功能的实现,都离不开服务器与客户端之间持续、高效的数据交互。传统的HTTP请求-响应模型难以满足这种需求,而WebSocket的出现,为构建…...

【Python Web开发】Python Web开发知识全解析
Python Web开发知识全解析 Python 是一种强大的编程语言,以其简洁和高效而闻名,尤其在 Web 开发领域,它有着广泛的应用。Python 提供了许多功能强大且灵活的 Web 框架,如 Flask、Django、FastAPI 等,使得构建现代 Web…...

Android开发展开收起功能
Android开发展开收起功能 文字过长展开收起功能很普通,也很需要。 一、思路: 自定义控件MoreTextView 二、效果图: 三、关键代码: public class MoreTextView2 extends LinearLayout {/*** TextView的实际高度*/private int …...

Sealos Devbox 发布,珍爱生命,远离 CI/CD
水滴攻击太阳系用的是最原始的攻击方式:撞击!却又如此有效率。 当我们搞了一堆容器、编排、CI/CD、DevOps,发明了一大堆没什么用的名词之后,最终发现这些操作都是花里胡哨,让开发者越陷越深。 最终你会发现一个真理&…...

数据结构——遍历二叉树
目录 什么是遍历二叉树 根据遍历序列确定二叉树 例题(根据先序中序以及后序中序求二叉树) 遍历的算法实现 先序遍历 中序遍历 后序遍历 遍历算法的分析 二叉树的层次遍历 二叉树遍历算法的应用 二叉树的建立 复制二叉树 计算二叉树深度 计算二…...

【Ubuntu】在Ubuntu上安装IDEA
【Ubuntu】在Ubuntu上安装IDEA 零、前言 最近换了Ubuntu系统,但是还得是要写代码,这样就不可避免地用到IDEA,接下来介绍一下如何在Ubuntu上安装IDEA。 壹、下载 这一步应该很容易的,直接打开IDEA的下载页面,点击下…...

解决:gpg: 从公钥服务器接收失败:服务器故障
当你添加密钥时报错,可以按照下面的步骤,依次输入。 # 停止 Network Manager 服务 sudo service network-manager stop# 删除 Network Manager 的状态文件 sudo rm /var/lib/NetworkManager/NetworkManager.state# 重新启动 Network Manager 服务 sudo …...

支持向量机SVM
目录 1 SVM直觉理解2. 软硬间隔3. 升维转换及核技巧入门 参考资料 1 SVM直觉理解 通过一条直线将两类数据分开,并且当有新的数据加入时,通过该条直线就能判别其属于哪一类 为了区分两类数据,N为数据的样本数,M为维度数…...
斯坦福UE4 C++课学习补充25:AI感知组件
文章目录 一、引入感知组件并绑定委托二、优化角色旋转 一、引入感知组件并绑定委托 PawnSensingComponent是UE中用于感知其他 Pawn(或 Actor)存在的一个组件,常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力ÿ…...
大模型 memory 记忆 缓存的应用
在探讨大模型的“memory”(记忆)功能时,我们通常会涉及缓存、存储以及如何有效管理和利用这些记忆来增强模型的性能。以下是对大模型memory记忆、缓存及相关概念的详细分析: 一、大模型的记忆功能 大模型,特别是大型…...
perl 给特定文件加上特定内容
perl 给特定文件加上特定内容 给所有的输入文件,加上特定的内容 本例中,给所有的输入文件内加入## Copyright xxx 如果检测到已经有## Copyright字样的行,那么不添加,具体代码如下。 可以使用该脚本,给所有的verilog文…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...