基于ESP-IDF4.1

 1 #include <stdio.h>
2 #include <string.h>
3 #include <unistd.h>
4 #include "esp_timer.h"
5 #include "esp_log.h"
6 #include "esp_sleep.h"
7 #include "sdkconfig.h"
8
9 #include "perfmon.h"
10
11 static const char* TAG = "example";
12
13 static void exec_test_function(void *params)
14 {
15 for (int i = 0 ; i < 100 ; i++) {
16 __asm__ __volatile__(" nop");
17 }
18 }
19
20 //具有专用性能计数器的表
21 static uint32_t pm_check_table[] = {
22 XTPERF_CNT_CYCLES, XTPERF_MASK_CYCLES, // 周期合计
23 XTPERF_CNT_INSN, XTPERF_MASK_INSN_ALL, // 指令合计
24 XTPERF_CNT_D_LOAD_U1, XTPERF_MASK_D_LOAD_LOCAL_MEM, // 内存读取
25 XTPERF_CNT_D_STORE_U1, XTPERF_MASK_D_STORE_LOCAL_MEM, // 内存写入
26 XTPERF_CNT_BUBBLES, XTPERF_MASK_BUBBLES_ALL &(~XTPERF_MASK_BUBBLES_R_HOLD_REG_DEP), // 等待其他原因
27 XTPERF_CNT_BUBBLES, XTPERF_MASK_BUBBLES_R_HOLD_REG_DEP, // 等待寄存器依赖
28 XTPERF_CNT_OVERFLOW, XTPERF_MASK_OVERFLOW, // 最后一个测试周期
29 };
30
31 #define TOTAL_CALL_AMOUNT 200
32 #define PERFMON_TRACELEVEL -1 // -1 - 忽略跟踪级别
33
34 void app_main(void)
35 {
36 ESP_LOGI(TAG, "Start");
37 ESP_LOGI(TAG, "Start test with printing all available statistic");
38 xtensa_perfmon_config_t pm_config = {};
39 pm_config.counters_size = sizeof(xtensa_perfmon_select_mask_all) / sizeof(uint32_t) / 2;
40 pm_config.select_mask = xtensa_perfmon_select_mask_all;
41 pm_config.repeat_count = TOTAL_CALL_AMOUNT;
42 pm_config.max_deviation = 1;
43 pm_config.call_function = exec_test_function;
44 pm_config.callback = xtensa_perfmon_view_cb;
45 pm_config.callback_params = stdout;
46 pm_config.tracelevel = PERFMON_TRACELEVEL;
47 xtensa_perfmon_exec(&pm_config);
48
49 ESP_LOGI(TAG, "Start test with user defined statistic");
50 pm_config.counters_size = sizeof(pm_check_table) / sizeof(uint32_t) / 2;
51 pm_config.select_mask = pm_check_table;
52 pm_config.repeat_count = TOTAL_CALL_AMOUNT;
53 pm_config.max_deviation = 1;
54 pm_config.call_function = exec_test_function;
55 pm_config.callback = xtensa_perfmon_view_cb;
56 pm_config.callback_params = stdout;
57 pm_config.tracelevel = PERFMON_TRACELEVEL;
58
59 xtensa_perfmon_exec(&pm_config);
60
61 ESP_LOGI(TAG, "The End");
62 }

原文:https://gitee.com/EspressifSystems/esp-idf/tree/master/examples/system/perfmon

ESP32-性能监控笔记的更多相关文章

  1. 分布式监控系统Zabbix3.4-针对MongoDB性能监控操作笔记

    公司在IDC机房的一台服务器上部署了MongoDB,由于所存储的业务数据比较重要,所以对MongoDB的监控显得尤为重要!Zabbix监控MongoDB性能的原理:通过echo "db.se ...

  2. jmeter使用笔记——脚本录制,JMeter使用plugins插件进行服务器性能监控

    脚本录制: 1.badboy录制 2.代理服务器录制 ①工作台添加HTTP代理服务器 ②设置目标控制器,分组,排除模式,包含模式(使用正则表达式筛选) ③设置浏览器,手动设置代理服务器,localho ...

  3. 对SQLSERVER进行性能监控

    对SQLSERVER进行性能监控 在上一篇文章<SQLSERVER性能监控级别步骤>里说到性能监控的步骤中有一步涉及到建立性能基线,但是没有说到有哪些计数器 可以用来进行监控的,这篇文章结 ...

  4. <JVM下篇:性能监控与调优篇>补充:使用OQL语言查询对象信息

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  5. <JVM下篇:性能监控与调优篇>补充:浅堆深堆与内存泄露

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  6. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  7. <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  8. 《深入理解Java虚拟机》虚拟机性能监控与故障处理工具

    上节学习回顾 从课本章节划分,<垃圾收集器>和<内存分配策略>这两篇随笔同属一章节,主要是从理论+实验的手段来讲解JVM的内存处理机制.好让我们对JVM运行机制有一个良好的概念 ...

  9. jvm系列(五):tomcat性能调优和性能监控(visualvm)

    tomcat服务器优化 1.JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能.当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃.因此一般建议堆的最 ...

  10. spring拦截器 实现应用之性能监控

    package cn.ximi.erp.web.common.interceptors; import cn.ximi.core.common.utils.string.StringUtil; imp ...

随机推荐

  1. linux小本

    登陆CentOS 2.重启系统:reboot 3.设置客户机显示器分辨率 4.查看IP地址:ip addr 5.切换目录:cd 6.查看目录:ls 7.复制文件:cp 8.编辑文件:vi cd /et ...

  2. 获取两个时间点间的随机时间&时间戳

    获取两个时间点间的随机时间&时间戳 方案一 # python2 不兼容,python3正常 import datetime,random def randomtimes(start, end, ...

  3. Go语言的函数05---匿名函数

    package main import ( "fmt" "time" ) //延时执行一个匿名函数 func main071() { fmt.Println(& ...

  4. Python+Selenium学习笔记15 - 读取txt和csv文件

    读取txt的内容并用百度查找搜索 1 # coding = utf-8 2 3 from selenium import webdriver 4 import time 5 6 # 打开浏览器 7 d ...

  5. 太方便了!利用Python对批量Pdf转Word

    在wps或者office里面可以将pdf转word,不过只能免费转前面5页,超过5页就需要会员.今天教大家一个Python办公小技巧:批量Pdf转Word ,这样可以自由想转多少页都可以. 思路:这里 ...

  6. TensorFlow反向传播算法实现

    TensorFlow反向传播算法实现 反向传播(BPN)算法是神经网络中研究最多.使用最多的算法之一,用于将输出层中的误差传播到隐藏层的神经元,然后用于更新权重. 学习 BPN 算法可以分成以下两个过 ...

  7. YOLOv4没交棒,但YOLOv5来了!

    YOLOv4没交棒,但YOLOv5来了! 前言 4月24日,YOLOv4来了! 5月30日,"YOLOv5"来了! 这里的 "YOLOv5" 是带有引号的,因为 ...

  8. 激光雷达Lidar与毫米波雷达Radar:自动驾驶的利弊

    激光雷达Lidar与毫米波雷达Radar:自动驾驶的利弊 Lidar vs Radar: pros and cons for autonomous driving 新型无人驾驶汽车的数量在缓慢增加,各 ...

  9. 在python_request 中 nb-log 日志模块的使用,应用到项目实际使用

    一.安装 pip install nb-log pycham 中安装: 二.基本使用 2.1 pycham中调整设置控制台日志打印出的颜色 2.2 设置完成后去掉console弹出的颜色设置 2.3  ...

  10. 基于Spring Boot的在线问卷调查系统的设计与实现+论文

    全部源码下载 # 基于Spring Boot的问卷调查系统 ## 介绍 > * 本项目的在线问卷调查调查系统是基于Spring Boot 开发的,采用了前后端分离模式来开发. > * 前端 ...