Linux|centos7|奇怪的知识|perf命令,系统运行瓶颈分析工具

news2024/9/21 20:38:07

前言:

Linux perf 是 Linux 2.6+ 后内置于内核源码树中的性能剖析(profiling)工具,它基于事件采样,以性能事件为基础,针对 CPU 相关性能指标与操作系统相关性能指标进行性能剖析,可用于性能瓶颈查找与热点代码的定位。包含在 Linux 内核 tools/perf 下,通过命令 perf 实现一组子命令:stat , record , report ,[…],通俗点说也就是Linux都自带这个工具,但最小化安装不包含此工具,需要单独安装,在centos7下,安装此工具的命令是:

yum install perf -y


具体来说,perf 就是是由 Linux 官方提供的系统性能分析工具,perf 包含两部分:perf 命令:用户空间应用程序;perf_events:Linux 内核子系统,主要分析服务器的cpu性能

与其他性能分析工具相比,perf 特别适合 CPU 分析,它能对运行在 CPU 上代码调用栈(stack traces)进行采样,以确定程序在 CPU 上的运行情况,识别和优化代码中的热点。这种 CPU Profiling 能力是基于硬件计数器 (performance monitoring counters,PMC) 实现的,而 PMC 被内核子系统 perf_events 包装成了 Hardware Event。

欧克,简单的用通俗易懂的话来说,如果你有一个新的服务器,比如异构的aarch64服务器,而你对此服务器是否能够正常运行数据库存疑,此时,perf工具会帮助你分析cpu是否可靠,cpu的性能是否能满足你的需求

下面就介绍如何使用perf这个工具来对服务器的cpu做一个体检,以及早发现服务器得cpu运行瓶颈

一、

perf的简易报告模式

简易模式是最常用的一种方式,如果需要在其它服务器上分析本机的cpu性能,只需要把data文件传送到远端就可以了,非常的方便

首先需要记录一段时间内的cpu运行情况,参数是record,会自动在当前目录生成一个数据文件,然后,通过report参数生成cpu运行的报告

此时命令将会hang住,如果服务器比较繁忙,data文件将会增长的比较快,CTRL+c退出记录,并在当前目录下生成perf.data 这个文件,多次执行,会覆盖原文件,但保留一个上次的文件,重命令为perf.data.old 文件

[root@centos2 ~]# perf record
^C[ perf record: Woken up 52 times to write data ]
[ perf record: Captured and wrote 13.518 MB perf.data (285121 samples) ]

生成perf报告:

perf report

由于我这个是虚拟机,没有运行什么服务,因此,cpu负载是非常低的,实际使用中,只需要关注前面几行,当然,在压测的时候,我们也只是关注前面几行就可以了

可以看到,这个服务器只跑了一个postgresql数据库,还有一个vmtool,swap虚拟内存其实是关闭的,但不知道为什么这个perf会显示swap,这就很无语

二、

perf的cpu实时监控模式

cpu实时监控比较多的用在系统出现瓶颈的时候,此时结合此工具可以比较快速的查询出瓶颈原因,该命令类似top命令

perf top -a

输出如下:

可以看到有很多类库占用cpu,因此,如果在系统有瓶颈的时候,看前面几列,看哪个类库占用比较高,自然就是该系统的瓶颈了

不太常用的

perf script

使用 perf script 命令可以打印收集在 perf.data 中的每个样本:

.

剩下的一些参数,基本都用不到,对实际的调试工作并没有多大意义,本文也就不多做介绍了~!!!~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

http/sse/websocket 三大协议演化历史以及 sse协议下 node.js express 服务实现打字机案例 负载均衡下的广播实现机制

背景 自从2022年底chatgpt上线后,sse就进入了大众的视野,之前是谁知道这玩意是什么?但是打字机的效果看起来是真的很不错,一度吸引了很多人的趋之若鹜,当然了这个东西的确挺好用,而且实现很简单&#xff0…

Linux环境本地搭建开发工具箱It-Tools并实现公网环境远程使用

文章目录 前言1. 安装Docker2.本地安装部署it-tools3. it-tools工具箱功能—生成docker-compose文件4. 安装cpolar内网穿透5. 固定it-tools公网地址 前言 本篇文章,我们将以Docker方式将IT-Tools部署至本地Linux系统个人服务器,并且结合cpolar内网穿透工…

【无标题】mysql读写分离架构+MyCAT实现读写分离

1、读写分离的目的 数据库负载均衡: 当数据库请求增多时,单例数据库不能够满足业务 需求。需要进行数据库实例的扩容。多台数据库同时相 应请求。也就是说需要对数据库的请求,进行负载均衡 但是由于数据库服务特殊原因,数据库…

安卓用户专属福利:OfficeSuite中文高级版,让你的工作更轻松!

OfficeSuite – 世界顶级移动办公软件!Google Play商店下载最多的办公软件应用,迄今为止,智能手机平台上,功能最强大、兼容性最好的移动Office办公套件。创建,查看和编辑Word,Excel和PowerPoint文档&#x…

mysql主从数据库(5.7版本)与python的交互及mycat

mysql数据库基本操作: [rootm ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 解压压缩包 [rootm ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64 mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootm ~]# cp -r mysql-5.7.44-linu…

Ubuntu 批量杀死进程

ps -ef|grep python|grep server|grep -v grep|cut -c 9-16|xargs kill -9这个命令序列是一个在Linux或类Unix系统中使用的脚本片段,用于批量终止(强制杀死)所有与特定条件(这里是包含"python"和"wanghao"的&…

推荐浏览器爬虫插件:Instant Data Scraper 无需写一行代码

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

云计算29-------mysql主从数据库(5.7版本)与python的交互及mycat

mysql数据库基本操作: [rootm ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 解压压缩包 [rootm ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64 mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootm ~]# cp -r mysql-5.7.44-lin…

如何判断树上一个点是否在直径上

# 旅游规划 ## 题目描述 W市的交通规划出现了重大问题,市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流。但由于人员不足,W市市长决定只在最需要安排人员的路口安排人员。 具体来说,W市的交通网络十分简单,由n个…

【Android Git】Mac配置支持 Gitlab、Gitee和阿里云效多平台

前言 在开发过程中,会遇到多平台项目管理问题,需要进行配置支持,常用的平台有Gitlab、Gitee、阿里云效等,本篇文章记录下使用同一邮箱配置支持的过程。 说明 首先认识下id_ras,一个用于SSH(安全外壳协议)…

java判断字符串某字符是否为大写/小写/数字?

Character类提供了很多静态方法,用于处理Unicode字符,如下: 也可以将字符转化成小写字母或大写字母。运用如下: 1是数字返回true a不是大写返回false a是小写返回true a转化成大写字母后为A A转化成小写字母后为a

备战金三银四、金九银十、软件测试面试问答

1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理库里面进行备案。 然后,要获取判断的依据和标准: 根据需求说明书、产品说明、设计…

压缩软件里的文件名编码

由于默认编码环境不同,打包时正常的文件和目录,在解包时就是乱码了。就拿winrar来说,windows中文版下,默认的编码是GBK 你将一堆文件打包给mac用户或者linux用户,那边的默认编码是UTF8,解压出来文件内容没有…

前端进阶——浏览器篇

浏览器如何工作(一)进程架构 浏览器的工作过程复杂而高效,其核心在于其进程架构的设计。以下是对浏览器进程架构的详细解析: 一、浏览器的主要进程 现代浏览器大多采用多进程多线程的架构,以Chrome浏览器为例&…

你会读财务报表吗?快来看看如何正确解读

在现代商业的复杂网络中,每一家公司都像是一个精密运行的钟表,其运转的顺畅程度取决于各个齿轮的完美契合与精准配合。而财务报表,就像是是这钟表的指针,实时展现着公司运转的状态和效率,帮助管理者把握全局&#xff0…

用python实现视频中插入各种形式的文本,包括普通文本、数学公式、项目符号列表和标题

tex_mobject 模块提供了一系列可以使用 LaTeX 渲染文本的类。通过这个模块,你能够在视频中插入各种形式的文本,包括普通文本、数学公式、项目符号列表和标题等。具体类的功能如下: BulletedList:用于创建带项目符号的列表。MathT…

关于utf-8编码规范练习题

目录 一、代码内容 二、MySQL内容 三、代码遇到的问题 遭遇: 解决思路: 四、出现问题1 断点调试,分析问题 发现问题点: 问题解决 五、出现问题2 原因: 举例: 举例总结: 一、代码内容…

数学建模--浅谈多波束测线问题

目录 1.问题说明 2.问题分析 3.代码分析 1.问题说明 这个是国赛的真题,我们这个里面只是浅谈,就是对于这个里面运用的过程仿真的思路进行说明,这个探测的波束问题实际上也是一个简单的过程仿真问题,也是需要去进行作图的&#…

游戏管理系统

目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 (1)用户及管理员登录流程图 (2)信息添加流程 &#x…

Java语言程序设计——篇十三(3)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…