当前位置: 首页 > 编程日记 > 正文

Linux系统火焰图

CentOS7.8

安装perf

#yum install perf

执行perf

执行perf record 命令,记录该PID的行为
#perf record -a -g -p 14851 -- sleep 30  --30秒后退出

需要注意后面生成svg图片的所有命令要和当前perf在同一目录,不然会报错。


#perf report

安装git

#yum -y install git

下载FlameGraph

#git clone https://github.com/brendangregg/FlameGraph.git

生成火焰图

//生成脚本文件
#perf script -i perf.data &> perf.unfold

#./FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded 
             
//执行完成后生成perf.svg图片,可以下载到本地,用浏览器打开 perf.svg
#./FlameGraph/flamegraph.pl perf.folded > perf.svg

火焰图是基于 stack 信息生成的 SVG 图片, 用来展示 CPU 的调用栈。

y 轴表示调用栈, 每一层都是一个函数. 调用栈越深, 火焰就越高, 顶部就是正在执行的函数, 下方都是它的父函数.

x 轴表示抽样数, 如果一个函数在 x 轴占据的宽度越宽, 就表示它被抽到的次数多, 即执行的时间长. 注意, x 轴不代表时间, 而是所有的调用栈合并后, 按字母顺序排列的.

火焰图就是看顶层的哪个函数占据的宽度最大. 只要有 “平顶”(plateaus), 就表示该函数可能存在性能问题。

颜色没有特殊含义, 因为火焰图表示的是 CPU 的繁忙程度, 所以一般选择暖色调.

参考:火焰图(Flame Graphs)的安装和基本用法 - 寒冰宇若 - 博客园

相关文章:

深圳杯---垃圾焚烧厂的经济补偿问题

垃圾围城是世界性难题,在今天的中国显得尤为突出。2012年全国城市生活垃圾清运量达到1.71亿吨,比2010年增长了1300万吨。数据显示,目前全国三分之二以上的城市面临垃圾围城问题,垃圾堆放累计侵占土地75万亩。因此,垃圾…

make -j8以及linux下查看cpu的核数

# 总核数 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu …

IDEA2021.3.2拉取maven报错maven-default-http-blocker解决方法

因为IDEA2021.3.2 的Maven是3.8.1后,mvn编译的时候总是提示拉不到依赖,报错如下: Could not validate integrity of download from http://0.0.0.0/... 因为使用HTTP协议下载依赖,可能会导致中间人攻击。 所以Maven 3.8.1就禁止…

2013高教社杯---B碎纸片的拼接复原

破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上,拼接复原工作需由人工完成,准确率较高,但效率很低。特别是当碎片数量巨大,人工拼接很难在短时间内完成任务。随着计算机技术的发展&a…

oracle--with as

with as把一段查询结果放在临时表,后面的查询中可多次使用 语法: with 别名 as(select * from table) 或 with 别名1 as(select * from table1), ............. 别名n as(select * from tablen) 示例: with 别名 as(select * from table wher…

Flask上下文管理源码分析

略略略...转载于:https://www.cnblogs.com/dzf123456/p/9446220.html

IDEA函数调用关系图插件

Call Graph是一款IDEA插件,用于可视化基于IntelliJ平台的IDE的函数调用图。 这个插件的目标是让代码更容易理解,有助于读懂和调试代码。 安装插件 安装后,通过View - Tool Windows - Call Graph ,激活窗口 激活后,需要…

[Notice]博客地址转移 vitostack.com

个人博客地址转移至vitostack.com 这里可能不会经常更新。 欢迎访问新地址。 转载于:https://www.cnblogs.com/Vito2008/p/5595430.html

【MATLAB】find 函数 总结

【MATLAB版本为2014a】 MATLAB中函数find函数的作用是进行矩阵元素的查找,它通常与关系函数和逻辑运算相结合。 indfind(X,...):该函数查找矩阵中的非零元素,函数返回这些元素的双下标[row,col]find(X,...):该函数查找矩阵X中的…

与HTTP关系密切的协议:IP、TCP、DNS

TCP/IP协议族的协议挺多的,我们精力有限,不可能一个个都了如指掌,那就挑一些与HTTP协议关系了解吧~ 负责传输的IP协议 按层次分,IP协议位于网络层。 IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里&#xff0…

C#精髓 第四讲 GridView 72般绝技

说明:准备出一个系列,所谓精髓讲C#语言要点。这个系列没有先后顺序,不过尽量做到精。可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注。 C#精髓 第四讲 GridView 72般绝技 作者:清清月儿 主页:ht…

Android layer-list(3)

Android layer-list(3) 在附录文章3、4的基础上,就Android layer-list再写一个较为复杂的应用。 先写布局文件,该布局涉及到LinearLayoutCompat,关于LinearLayoutCompat参看附录文章5。 布局文…

【MATLAB】二维矩阵可视化 MATLAB绘图

基本绘图函数 1、plot(y) 如果y是向量,则采用向量的索引值作为横坐标值,以向量元素的值作为纵坐标值。 如果y是实数矩阵,则相当于对y的每一列进行二维绘图。 如果y是复数组成的向量,则相当于plot(real(y),imag(y))。 2、plot…

phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php)

phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php) 一、总结 一句话总结:把原生php的网站直接放到thinkphp5的public目录下可以解决以stem.aaaa.hk\**方式访问原生网站会被当成thinkphp子模块的问题 最后的解决方法&a…

bzoj3442 学习小组

目前处于迷之TLE状态 -----6.21更新 已AC 3442: 学习小组 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 200 Solved: 87Description 【背景】坑校准备鼓励学生参加学习小组。【描述】共有n个学生,m个学习小组,每个学生有一定的喜好,只愿…

C语言经典著作导读

本人不是卖书的,我也不会给出任何购书链接,只是给C语言学习者推荐一条学习的方向。如果你喜欢看电子书网上很多,如果你喜欢纸质那么就买吧,经典的书值得收藏,是对版权的尊重! 基础篇 1.《写给大家看的C语言…

针对2013年B题碎纸片拼接问题(附件一、附件二)

题目链接:https://blog.csdn.net/CSDN___CSDN/article/details/82051821 http://www.shumo.com/wiki/doku.php?id2013_%E5%B9%B4%E5%85%A8%E5%9B%BD%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E7%AB%9E%E8%B5%9B_cumcm_%E8%AF%95%E9%A2%98…

什么是类型别名?什么是潜在类型?

2019独角兽企业重金招聘Python工程师标准>>> 别名类型 在Go语言里,可以用type声明自定义的各种类型。在这些自定义的类型中,有一种被叫做别名类型。 举个例子: type MyString string这句代码的意思是:MyString是strin…

Linux网络编程必看书籍推荐

首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。 《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机…

5个最佳的Android测试框架

2019独角兽企业重金招聘Python工程师标准>>> 谷歌的Android生态系统正在不断地迅速扩张。有证据表明,新的移动OEM正在攻陷世界的每一个角落,不同的屏幕尺寸、ROM /固件、芯片组以及等等等等,层出不穷。于是乎,对于Andr…

【CTF】实验吧 凯撒变异

通过分析可以知道前四个“afZ_”四个的ASCII码值与“flag”的ASCII码值依次相差5&#xff0c;6&#xff0c;7&#xff0c;8。 #include <stdio.h> #include <string.h> int main () {char str[40]"afZ_r9VYfScOeO_UL^RWUc";int i0,j5;while(i<strlen…

ant design pro (八)构建和发布

一、概述 原文地址&#xff1a;https://pro.ant.design/docs/deploy-cn 二、详细 2.1、构建 当项目开发完毕&#xff0c;只需要运行一行命令就可以打包你的应用&#xff1a; npm run build 由于 Ant Design Pro 底层使用的 roadhog 工具&#xff0c;已经将复杂的流程封装完毕&a…

Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

Linux进程间通信--进程&#xff0c;信号&#xff0c;管道&#xff0c;消息队列&#xff0c;信号量&#xff0c;共享内存 参考&#xff1a;《linux编程从入门到精通》,《Linux C程序设计大全》,《unix环境高级编程》 参考&#xff1a;C和指针学习 说明&#xff1a;本文非常的长…

PgSQL · 实战经验 · 如何预测Freeze IO风暴

背景和原理 有没有被突发的IO惊到过&#xff0c;有没有见到过大量的autovacuum for prevent wrap。 PostgreSQL 的版本冻结是一个比较蛋疼的事情&#xff0c;为什么要做版本冻结呢&#xff1f; 因为PG的版本号是uint32的&#xff0c;是重复使用的&#xff0c;所以每隔大约20亿…

【CTF】实验吧 传统知识+古典密码

对照顺序写下&#xff1a; 根据对应的干支得到 28 30 23 8 17 10 16 30 甲子 所有的数加60 得到 88 90 83 68 77 70 76 90 找到ASCII码对照表可得到XZSDMFLZ 题干中提到古典密码&#xff08;常用的就是栅栏密码和凯撒密码&#xff09; 栅栏密码&#xff08;两栏&#…

NSSize 尺寸

前言 结构体&#xff0c;这个结构体用来表示事物的宽度和高度。typedef CGSize NSSize;struct CGSize {CGFloat width;CGFloat height; };typedef struct CGSize CGSize; 1、NSSize 结构体变量的创建与调用 // NSSize 结构体变量的创建与赋值// 先定义变量&#xff0c;再赋值 N…

Android中对Log日志文件的分析[转]

一&#xff0c;Bug出现了&#xff0c; 需要“干掉”它 bug一听挺吓人的&#xff0c;但是只要你懂了&#xff0c;android里的bug是很好解决的&#xff0c;因为android里提供了LOG机制&#xff0c;具体的底层代码&#xff0c;以后在来分析&#xff0c;只要你会看bug&#xff0c;a…

Unix下C程序内存泄漏检测工具Valgrind安装与使用

Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。 Valgrind的最初作者是Julian Seward&#xff0c;他于2006年由于在开发Valgrind上的工作获得了第二届Google-OReilly开源代码奖。 Valgrind遵守GNU通用公共许可证条款&#xff0c;是一款自由软件。 官网…

【CTF】实验吧 robomunication

用audacity软件&#xff0c;猜测是摩斯密码 听到的都是“bi”或者“bu”&#xff0c;这里用b代表“bi”&#xff0c;“p”代表“bu” bbbb b bpbb bpbb ppp bpp bbbb bp p bb bbb p bbbb b pbp b pbpp bb p bb bbb (p b bb) ppp ppp bppb pbbb b b bppb 打括号那里显得较分散一…

Mac原生Terminal快速登录ssh

1. 创建rsa key 在终端中输入以下命令&#xff1a; ssh-keygen -t rsa完成之后可以在~/.ssh目录下找到公钥和私钥 如果你与我一样有使用gitlab&#xff0c;那么这个秘钥应该已经存在了&#xff0c;所以就不用重新建立了。 2.上传公钥到服务器 有教程会说&#xff0c;用scp或者类…