首页 > 其他分享 >perf笔记

perf笔记

时间:2024-09-18 14:36:10浏览次数:11  
标签:perf -- void 笔记 int install main

记录一下这个工具,感觉还挺好用的。参考:

如何读懂火焰图? - 阮一峰的网络日志 (ruanyifeng.com)

perf的基本使用方法-菜鸟笔记 (coonote.com)

使用 Perf 和火焰图分析 CPU 性能 | Senlin's Blog (senlinzhan.github.io)

 

安装:

# Ubuntu系统
sudo apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`
# Centos系统
yum install -y perf

查看版本:

$ perf --version
perf version 5.4.44

测试:

#include <stdio.h>
#include <stdlib.h>

void long_test() {
    int i, j;
    for (i = 0; i < 1000000; i++) j = i;
}

void foo2() {
    int i;
    for (i = 0; i < 10; i++) long_test();
}

void foo1() {
    int i;
    for (i = 0; i < 100; i++) long_test();
}
int main(void) {
    foo1();
    foo2();
}
采样60s,会生成一个perf.data文件。
# 方式一:对一个正在运行的进程,进行采样
perf record -p PID -g -- sleep 60
# 方式二:全新运行一个二进制文件main,进行采样
sudo perf record -F 99 -g ./main -- sleep 60

 

perf stat:

 

生成火焰图:

利用这个开源工具可以将报告生成可视化的svg图片,更容易查看对应的CPU开销时间和调用栈深度。
git clone --depth 1 https://github.com/brendangregg/FlameGraph.git
# 安装perl
yum install -y perl
# Ubuntu
apt install  -y perl
生成火焰图的脚本 对二进制文件main进行10秒的采样,然后生成火焰图 非root用户需要加sudo
perf record -g ./main  sleep 10
perf script -i perf.data &> perf.unfold
./FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded
./FlameGraph/flamegraph.pl perf.folded > perf.svg

 

其他用法:

 

 

 

其他工具:

 

 

 

标签:perf,--,void,笔记,int,install,main
From: https://www.cnblogs.com/xcywt/p/18418459

相关文章

  • GO语言学习笔记之mac环境go语言配置
    此处仅为Mac的Iterm终端,关于go的环境配置,仅供参考cd~vim.zshrcGOROOT为go的安装路径,GOPATH为go安装额外的工具和具体的工具环境配置,GOPROXY将安装镜像源改为阿里云#goexportGOROOT="/usr/local/go"exportGOPATH="/Users/635458/go"exportPATH=$PATH:$GOROOT/bin:$GOPATH......
  • 算法笔记2:二分
    二分二分可以求得满足条件的左边界或右边界,如下图所示查找左边界(绿色区域的最左边):intSL(intl,intr){while(l<r){intmid=l+r>>1;if(check(mid))r=mid;elsel=mid+1;}re......
  • FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架
    很多程序员想学习音视频的编程开发,却不知从何学习,因为音视频技术的体系庞大、知识杂糅,一眼望去就令人生怯。那么学习音视频建议站在前人的肩膀上,从优秀的音视频开源框架开始钻研,先熟悉这些开源工具的具体用法,再深入了解这些开源框架的实现代码。有鉴于此,博主整理了几个流行的音视频......
  • C++学习笔记(26)
    七、显示字符串中的字符从界面上输入一个字符串(C风格),把字符串中的每个字符显示出来,如果输入的是"abc",要求:1)正序显示:abc2)逆序显示:cba求字符串的长度可以利用上一题的成果,也可以直接用strlen()函数,关注性能的细节。示例:#include<iostream>usingnamespacestd;//......
  • Attention is all you need 论文阅读笔记
    AttentionisallyouneedTransformeronlybasedonattentionmechanisms,dispensingCNN,RNNIntroductionandBackgroundRNN必须将前一步生成的h......
  • 【笔记】网络流量异常检测概览
    异常流量监控和拒绝服务方法研究对于保障路由器通信安全至关重要。传统的网络安全技术(例如系统入侵检测、防病毒软件、防火墙之类的)对于DDos类的攻击无法很好地防范。网络层安全研究的是什么?跟之前的声光电磁层不同,声光电磁实质上是物理层信息传输的介质,而网络层安全主要关注的......
  • 菜鸟笔记之PWN入门(1.0.0)前言
    什么是PWN?PWN是黑客术语中的俚语,是指攻破设备或者系统。它的发音类似于“砰”,当然也有师傅把它叫作“胖”。PWN的目标是获取系统的控制权或执行未经授权的操作。如何入门PWN前置知识C语言学习内容:程序结构和基础语法数据类型、分支语句(如 if、switch)和循环(如 fo......
  • Json笔记(狂神 1h)
    Ajax和Json(前端)需要掌握的知识SpringMVCControllerspringmvx配置文件web.xmlJavaScript引入javaScript,<script>函数选择器标签选择器类选择器id选择器#jQuery公式${选择器}.事件(参数)$(select).action(…)Web1.0时代登录,如果失败,需要刷新页......
  • CL260 学习笔记(一)
    RHCA课程须知Ceph原理及架构......
  • Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
    0前言在页面中,要实现数据更新的视图实时显示,纯JavaScrip需要手动编写代码来处理数据和视图之间的更新。而Vue提供了数据绑定的能力,使得数据和视图保持同步。我们通过一个实例来体验两者的差别。我们设计一个页面,在页面里提供一个文本框,用户可以在文本框输入内容,然后我们在文本框下......