基础测试工具使用经验

背景

vtuneperf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下

perf

比较基础的用法:
先改这个环境变量,改成 1 1 1似乎就够用,这条命令据说是只影响当前窗口?
直接运行可执行程序,加上-g为了显示符号信息

sudo sysctl -w kernel.perf_event_paranoid=1
sudo perf record -g ./../BenchBF3/bin_dpu/test_cpu
sudo perf report

report进入之后,包含children:当前函数所有成员cpu占用率,以及self:当前函数占用率
这里很可能你都看不到到底是在哪个函数花的时间。这时候需要你不断zoom out,不停点进去就能看到。

googleperf

暂时还没用明白
目前的部署步骤还是记录一下:
网上的教程基本都是自己 g i t c l o n e git clone gitclone编译安装,我是直接 a p t i n s t a l l apt install aptinstall,不知道是不是有区别

sudo apt-get install -y google-perftools libgoogle-perftools-dev

进行编译:
如果是CMAKE就加上target_link_libraries加上profiler即可

g++ -g -o perf_test perf_test.cpp -lprofiler

网上包括官网都是CPUPROFILE=xx.prof ./perf_test这样跑就能生成对应.prof文件,但是我不行,我只能在代码中添加,如下,然后直接运行,就会生成xxx.prof

#include <gperftools/profiler.h>
ProfilerStart("cpu.prof");
// 想要测试的代码片段
ProfilerStop();

接下来需要pprof工具对.prof文件进行解析。这玩意按照官网说法,直接go install xxx那样就行,按照官方文档来。但我上不了github,所以只能从gitee搞一份到本地。
然后进入文件夹执行go build,即在当前文件夹生成pprof二进制文件。

具体指令见官网
pprof --text perf_test(二进制) cpu.prof
或者 pprof perf_test cpu.prof,进入一个命令行界面,png即可输出图片,但是看不懂这图片?

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

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

相关文章

浅谈DaemonSet

1. DaemonSet 概述 ‌定义‌&#xff1a;DaemonSet 确保 Kubernetes 集群的每个节点上运行一个 Pod 实例。‌特性‌&#xff1a; 每个节点上只有一个 Pod 实例。新节点加入集群时&#xff0c;会自动在新节点上创建 Pod。旧节点被删除时&#xff0c;其上的 Pod 会被回收。 2.…

计算机系统(6)

◆指令寻址方式&#xff1a; 顺序寻址方式&#xff1a;执行一段程序时&#xff0c;是一条指令接着一条指令的顺序执行。 跳跃寻址方式:下一条指令的地址码不是由程序计数器给出&#xff0c;而是由本条指令直接给出。程序跳跃后&#xff0c;按新的指令地址开始顺序执行。因此&…

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…

python打卡训练营打卡记录day51

复习日 作业&#xff1a;day43的时候我们安排大家对自己找的数据集用简单cnn训练&#xff0c;现在可以尝试下借助这几天的知识来实现精度的进一步提高 数据预处理 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transfor…

网络安全:OWASP防护守则

目录 一、OWASP十大WEB弱点防护守则 二、防护守则 1、权限控制失效 2、加密失误 3、注入 4、不安全设计 5、安全配置缺陷 6、易受攻击和过时的组件 7、身份认证和会话管理失效 8、缺乏完整性校验 9、缺乏监控与日志记录 10、服务端请求伪造 三、核心防护原则总结 …

Dagster 实现数据质量自动化:6大维度检查与最佳实践

在当今数据驱动的世界中&#xff0c;数据质量的重要性不言而喻。数据质量测试是确保数据准确、完整、一致和可靠的关键步骤。本文将深入探讨数据质量测试的六大维度&#xff0c;并提供相关的检查方法和最佳实践。 什么是数据质量测试&#xff1f; 数据质量测试涉及评估数据以确…

计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)—— 2. 摄像机标定

文章目录 1. 前置知识1.1. 非齐次线性方程组求解1.1.1. 传统求解方法1.1.2. 奇异值分解法1.1.3. 牛顿法或者梯度下降法 1.2. 齐次线性方程组的最小二乘解1.3. 非线性方程组的最小二乘解 2. 相机标定2.1. 相机内参数求解2.1.1. 求解 u 0 u_0 u0​ 和 v 0 v_0 v0​2.1.2. 求解 …

SQLLL

595-big-countries https://leetcode.com/problems/big-countries/description/ 面积最大的国家 -- select name, population, area from World where area > 3000000 or population > 25000000596-classes-with-at-least-5-students https://leetcode.com/problems/…

MySQL中触发器详解 触发器在自动化任务中的应用场景

触发器是mysql中与表关联的数据库对象&#xff0c;能在特定操作&#xff08;如insert、update、delete&#xff09;发生时自动执行预定义sql逻辑。其核心用途包括&#xff1a;1. 维护数据一致性&#xff0c;如订单插入后自动减少库存&#xff1b;2. 记录审计日志&#xff0c;如…

MySQL 8.0的数据库root用户默认无法远程登录,需要修改root的远程授权

mysql> grant all privileges on . to ‘root’‘%’; ERROR 1410 (42000): You are not allowed to create a user with GRANT mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quick…

​​MPI + OpenMP 环境配置指南(Windows/Linux)​

—— 让你的并行计算飞起来 &#x1f680; 1. 简介​​ ​​MPI (Message Passing Interface)​​&#xff1a;用于多机分布式并行计算&#xff08;进程级并行&#xff09;。​​OpenMP​​&#xff1a;用于单机多线程并行计算&#xff08;线程级并行&#xff09;。​​混合编…

新闻类鸿蒙应用功耗危机以及优化方案

&#x1f50b; ​​一、功耗痛点&#xff1a;新闻类应用成“续航杀手”​​ ​​后台进程失控​​ ​​高频刷新​​&#xff1a;未适配应用&#xff08;如网易新闻、百度客户端&#xff09;默认每30秒后台刷新内容&#xff0c;触发CPU持续唤醒&#xff0c;单设备日均耗电增加1…

【小工具】-Doxygen01

0、前言 参考帖子。 使用Doxygen Documentation Generator自动添加注释 Doxygen使用教程 代码注释规范之Doxygen 1、Doxygen介绍 Doxygen 是一个功能强大的开源文档生成工具&#xff0c;主要用于从源代码中自动提取注释并生成专业的 API 文档。它支持多种编程语言&#xff…

大模型Transformer触顶带来的“热潮退去”,稀疏注意力架构创新或是未来

1. 大模型退潮&#xff1a;裸泳者离场&#xff0c;创新者浮出水面 资本热潮逐渐冷却&#xff0c;大模型赛道正经历残酷洗牌。过去两年密集的“百模大战”&#xff0c;本质是商业模式的军备竞赛&#xff0c;用数据规模与参数数量掩盖技术同质化。当DeepSeek以61层精简架构挑战千…

Android编译时打印所有引用的so库路径

在app module build.gradle 最后添加脚本 tasks.whenTaskAdded { task -> println("test 11 task.name&#xff1a;"task.name) if (task.name.startsWith(merge) && task.name.endsWith(NativeLibs)) { task.doFirst { prin…

暴雨亮相2025中关村论坛数字金融与金融安全大会

6月10日&#xff0c;由中关村金融科技产业发展联盟与中关村互联网金融研究院主办的“2025中关村论坛系列活动——数字金融与金融安全大会”在中关村展示中心盛大召开。本次大会以“人工智能机遇&#xff1a;未来金融格局重塑及安全治理”为主题&#xff0c;汇聚政产学研各界精英…

mapstruct中的@Mapper注解详解

在MapStruct中&#xff0c;Mapper注解是核心注解之一&#xff0c;用于标记一个接口或抽象类为MapStruct的映射器&#xff08;Mapper&#xff09;。MapStruct会在编译时自动生成该接口的实现类&#xff0c;完成对象之间的属性映射。以下是对Mapper注解的详细解析&#xff1a; 1.…

uniapp+vue2+h5图片下载保存,微信浏览器、非微信浏览器

小程序端 onDown() {// 检查相册权限uni.authorize({scope: scope.writePhotosAlbum,success: () > {this.downloadImage();},fail: () > {uni.showToast({title: "请授权相册权限",icon: "none"});}}); }, downloadImage() {common.request(post, …

NumPy 与 OpenCV 版本兼容性深度解析:底层机制与解决方案

在计算机视觉项目中&#xff0c;NumPy 和 OpenCV 的兼容性问题常被低估&#xff0c;实则暗藏复杂的技术陷阱。下面从底层机制深入剖析核心兼容性问题及解决方案&#xff1a; 一、内存布局冲突&#xff1a;数组连续性陷阱 问题本质&#xff1a; OpenCV 的 C 内核要求 连续内存块…

基于SpringBoot利用死信队列解决RabbitMQ业务队列故障重试无效场景问题

基于SpringBoot利用死信队列解决RabbitMQ业务队列故障重试无效场景问题 解决方案项目实战1、生产者服务1.1、RabbitConfig定义相关交换机及死信队列等配置数据1.2、TestController测试接口Controller 2、消费者服务2.1 BusinessQueueConsumer业务队列监听器2.2 DeadLetterConsu…