perf与simpleperf

news2025/1/17 17:59:28

对事件进行采样,然后根据采样频率,评估各个函数的调用频率。可以用来分析CPU cache,CPU迁移,指令周期等各种硬件事件,他也可以对感兴趣的事件进行动态追踪。

效果:

 cat available_events | grep receive

perf list | grep receive

两者效果相同,但是实际使用perf支持的事件比ftrace多一倍左右

perf probe

perf probe --add do_sys_open  //添加一个probe event

perf probe --del probe:do_sys_open  //删除一个probe event

例子:perf record -e probe:do_sys_open -aR sleep 10

perf stat

perf stat ./test

task-clock:用于执行程序的cpu时间;
context-switches:程序在运行过程中经历的上下文切换次数;
page-faults:进程运行过程中产生的缺页次数;
cpu-migrations:程序在运行过程中发生的CPU迁移次数,即被调度器从一个CPU转移到另外一个CPU上运行;
instructions:该进程在这段时间内完成的CPU指令数;
cycles:CPU时钟周期;

perf top

当前实时查看当前系统进程函数占用情况

#include <stdio.h>
#include <math.h>
#include <sys/types.h>
#include <unistd.h>

void for_loop()
{
    for (int i = 0; i < 1000; i++)
    {
        for (int j = 0; j < 10000; j++)
        {
            int x = sin(i) + cos(j);
        }
    }
}

void loopsmall()
{
    for (int i = 0; i < 10; i++)
    {
        for_loop();
    }
}

void loopbig()
{
    for (int i = 0; i < 100; i++)
    {
        for_loop();
    }
}

int main()
{
    printf("pid=%d\n", getpid());
    loopbig();
    loopsmall();

    return 0;
}

perf record

运行命令并保存profile到perf.data

perf record -p 1761 -a -g -F 99 -- sleep 10

或者

perf record -g -e cpu-clock  ./test

-F :采样频率 --99

-g :启用调用图(堆栈链/回溯)记录

-e :指定event,默认是cpu 周期数

-a:从所有cpu 上采集

-p:pid --1256

perf report

从perf.data读取并且显示profile

perf script

从perf.data读取并且显示详细的采样数据

perf kmem 跟踪、测量内核内存属性

record :记录kmem event

stat : 报告内核内存统计信息 

--slab :记录slab申请器的event;--page :记录page申请的event

perf mem 分析内存访问

perf lock 分析锁性能

perf kvm  针对kvm虚拟化分析

perf sched 分析内核调度器性能

record:采集和记录scheduling events

script:报告采集到的事件

latency : 报告每个任务的调度延迟和进程的进程的其他调度属性

timehist :提供调度进度的分析报告

perf sched record -p {进程号} -- sleep 10

实践:

perf probe -- add do_sys_open

perf record -e probe:do_sys_open -aR sleep 1

perf script 

perf probe --del probe:do_sys_open

simpleperf(安卓)

需要下载源代码,然后在源代码的目录下操作

方法一:

1.simpleperf record -g -p 2684--duration 10 -f 12500 --call-graph fp -o /data/perf.data

2.system/extras/simpleperf/scripts下面有脚本可以解析

3.python3.8 ./report_html.py -i ./perf.data

后来有的平台抓出来成这样了,可能是缺少符号表

方法2:

simpleperf record -p 进程号 -g --duration 10

simpleperf report -g -o out.perf

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

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

相关文章

YashanDB:潜心实干,数据库核心技术突破没有捷径可走

都说数据库是三大基础软件中的一块硬骨头&#xff0c;技术门槛高、研发周期长、工程要求高&#xff0c;市场长期被几大巨头所把持。 因此&#xff0c;实现突破一直是中国数据库产业的夙愿。自上个世纪80年代起&#xff0c;中国数据库产业走过艰辛坎坷的四十余载&#xff0c;终…

CocosCreator3.8研究笔记(九)CocosCreator 场景资源的理解

相信很多朋友都想知道&#xff0c; Cocos Creator 资源的定义&#xff1f; Cocos Creator 常见的资源包含哪些&#xff1f;Cocos Creator 资源的管理机制是什么样的&#xff1f; Cocos Creator 中所有继承自 Asset 的类型都统称资源 &#xff0c;例如&#xff1a;Texture2D、Sp…

springboot项目实现helloworld

使用Spring官方源创建项目&#xff08;推荐&#xff09; 缺陷&#xff1a;镜像在国外下载速度有点慢 选择配置 选择版本 实现HelloWorld 删除部分不重要的文件 idea隐藏文件 使用云原生的方式创建项目&#xff08;spring官方源&#xff09; 访问地址&#xff1a;Spring Init…

基于Java+SpringBoot+Vue前后端分离科研项目验收管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

https://blog.csdn.net/zxlyx/article/details/120397006 本文给出一个 TIME_WAIT 状态的 TCP 连接过多的问题的解决思路&#xff0c;非常典型&#xff0c;大家可以好好看看&#xff0c;以后遇到这个问题就不会束手无策了。 问题描述 模拟高并发的场景&#xff0c;会出现批量…

CS架构和BS架构的联系与区别(零基础理解)

文章目录 网络编程CS架构BS架构CS和BS的区别C/S架构优缺点B/S架构优缺点 网络编程 首先要了解CS架构和BS架构就需要了解一下什么是网络编程? 大家刚接触编程时,往往是在自己的电脑的编辑器上进行代码的编写,说简单的就是以前我们书写的代码就像单机版游戏一样,只能自己玩,不能…

VSRS4.0 安装与配置

0 引言 介绍&#xff1a;VSRS的定义参阅官方论文&#xff0c;项目引入VSRS来解决目前亟需解决的问题(基于两视点的虚拟视点合成)。 1 下载VSRS 1.1 通过TortoiseSVN下载最新版VSRS VSRS can be accessed from SVN server server: https://svn.multimedia.edu.pl/vsrs user:…

PyTorch基础知识(1)— PyTorch框架介绍和安装步骤

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。PyTorch是一个开源的深度学习框架&#xff0c;它基于Python语言&#xff0c;并提供了高级的神经网络接口&#xff0c;可以用于构建和训练各种深度学习模型。它的设计理念是灵活性和易用性&#xff0c;并且提供了动态图的特…

C++入门介绍之“栈”

1.1栈的定义 栈&#xff08;stack)是一种只能在一端进行插入或删除的线性表 下面是一些基础概念 栈顶&#xff08;top) : 表中允许进行插入、删除操作的线性表栈底&#xff08;bottom&#xff09;&#xff1a;表的另一端空栈 &#xff1a;栈中没有数据元素进栈/入栈&#xf…

如何统计网站的访问量

本文介绍的是使用redis的HyperLoglog实现uv的统计功能。 背景 首先我们先明确一下uv这个名词代表的实际意义。uv代表的是通过网页访问浏览的人数&#xff0c;和文章的阅读量差不多&#xff0c;但是需要注意的是&#xff0c;一个人即使是多次访问&#xff0c;也只算一次。 所…

开发一个android应用需要哪些库?

目录 开发应用常用库 沉浸式体验 下拉刷新 数据库 网络访问 升级 开发应用常用库 随着手机普及&#xff0c;应用无处不在&#xff0c;我们生活也离不开应用了。 那么&#xff0c;如果你想从零开始做一个应用&#xff0c;我们一般会经过哪些阶段&#xff0c;用到哪些库呢…

揭秘外卖平台的附近公里设计

背景 相信大家都有点外卖的时候去按照附近公里排序的习惯&#xff0c;那附近的公里是怎么设计的呢&#xff1f;今天shigen带你一起揭秘。 分析 我们先明确一下需求&#xff0c;每个商家都有一个地址对吧&#xff0c;我们也有一个地址&#xff0c;我们点餐的时候&#xff0c;…

【Spring 事务和事务传播机制】

目录 1 事务概述 1.1 为什么需要事务 1.2 事务的特性 1.3 Spring 中事务的实现 2 Spring 声明式事务 2.1 Transactional 2.2 Transactional 的作用范围 2.3 Transactional 的各种参数 2.3.1 ioslation 2.4 事务发生了异常&#xff0c;也不回滚的情况 异常被捕获时 3 事务的传…

运维Shell脚本小试牛刀(七):在函数文脚本件中调用另外一个脚本文件中函数|函数递归调用|函数后台执行

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

手写Spring:第8章-初始化和销毁方法

文章目录 一、目标&#xff1a;初始化和销毁方法二、设计&#xff1a;初始化和销毁方法三、实现&#xff1a;初始化和销毁方法3.1 工程结构3.2 Spring应用上下文和Bean对象扩展初始化和销毁类图3.3 定义初始化和销毁方法的接口3.3.1 定义初始化接口3.3.2 定义销毁接口3.3.3 定义…

【 OpenGauss源码学习 —— 列存储(analyze)(三)】

列存储&#xff08;analyze&#xff09; acquire_sample_rows 函数RelationGetNumberOfBlocks 函数BlockSampler_Init 函数anl_init_selection_state 函数BlockSampler_GetBlock 函数ReadBufferExtendedPageGetMaxOffsetNumber 函数HeapTupleSatisfiesVacuum 函数heapCopyTuple…

微软8月系统更新引发问题:虚拟内存分页文件出现错误

微软的八月系统更新引发了一系列问题&#xff0c;其中包括“UNSUPPORTED_PROCESSOR”蓝屏错误和文件管理器故障。尽管微软已经修复了前者&#xff0c;但据国外科技媒体Windows Latest报道&#xff0c;仍有用户反馈在非微星设备上出现“fault in nonpaged area”蓝屏错误。 如果…

信息技术 安全技术 信息安全管理测量

声明 本文是学习信息技术 安全技术 信息安全管理 测量. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 范围 为了评估按照GB/T 22080-2008规定实施的信息安全管理体系&#xff08;Information Security Management System&#xff0c;简称ISMS&#…

STM32移植FAT文件系统

所谓“移植”&#xff0c;就是打通FAT源码和物理设备之间的软件接口。 FAT源码早就被公益组织给写好了&#xff0c;直接下载源码。但是FAT作为顶层应用程序&#xff0c;它需要面对的底层物理设备是不确定的&#xff0c;那么底层的物理设备驱动程序就需要程序员来自己写。物理设…

VMware虚拟机挂起后再关机出现问题,连接不上外网解决方法,ifconfig无ens33

原文地址 Centos7 重启后ens33消失&#xff08;外部连接不上&#xff09;Centos7 重启后ens33消失&#xff08;外部连接不上&#xff09;_ens33不见了_瘦身小蚂蚁的博客-CSDN博客 解决方法&#xff1a;执行以下4个命令。 systemctl stop NetworkManager # 关闭NetworkManage…