码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • perf工具使用


    perf工具使用

    文章目录

      • perf工具使用
        • 安装
        • 使用

    安装

    sudo apt install linux-tools-common -y
    # 不同内核可能不同
    sudo apt install linux-tools-5.4.0-113-generic linux-cloud-tools-5.4.0-113-generic -y
    
    • 1
    • 2
    • 3

    使用

    列出所有能触发perf采样点的事件

    sudo perf list
    
    • 1

    通过概括精简的方式提供被调试程序运行的整体情况和汇总数据

    sudo perf stat ./demo
    
    • 1

    ask-clock-msecs:CPU 利用率,该值高,说明程序的多数时间花费在 CPU 计算上而非 IO。
    Context-switches:进程切换次数,记录了程序运行过程中发生了多少次进程切换,频繁的进程切换是应该避免的。
    Cache-misses:程序运行过程中总体的 cache 利用情况,如果该值过高,说明程序的 cache 利用不好
    CPU-migrations:表示进程 t1 运行过程中发生了多少次 CPU 迁移,即被调度器从一个 CPU 转移到另外一个 CPU 上运行。
    Cycles:处理器时钟,一条机器指令可能需要多个 cycles,
    Instructions: 机器指令数目。
    IPC:是 Instructions/Cycles 的比值,该值越大越好,说明程序充分利用了处理器的特性。
    Cache-references: cache 命中的次数
    Cache-misses: cache 失效的次数。
    注:通过指定 -e 选项,您可以改变 perf stat 的缺省事件

    实时显示当前系统性能统计信息

    sudo perf top
    
    • 1

    记录单个函数级别的统计信息,perf record记录单个函数级别的统计信息,perf report显示统计结果

    sudo perf record -e cpu-clock ./demo
    sudo perf report
    
    # 使用-g参数可以查看具体某个函数所花费的时间以及函数的调用路径
    
    • 1
    • 2
    • 3
    • 4

    如果想关心perf的具体某个事件,希望按某个事件来进行统计则可以通过-e来指定某个事件

    sudo perf stat -e raw_syscalls:sys_enter ls 
    
    • 1

    动态的在想查看的地方插入动态监测点

    sudo perf probe schedule:12 cpu
    # 上例利用 probe 命令在内核函数 schedule() 的第 12 行处加入了一个动态 probe 点,和 tracepoint 的功能一样,内核一旦运行到该 probe 点时,便会通知 perf。可以理解为动态增加了一个新的 tracepoint
    
    • 1
    • 2

    分析内核工具来分析内核CPU调度器的行为

    sudo perf sched record sleep 10
    sudo perf sched latency --sort max
    
    • 1
    • 2
  • 相关阅读:
    测试号管理,接口配置信息,配置失败的问题
    CMAKE使用记录
    Intellij idea 的maven项目如何通过maven自动下载jar包
    C++运算符优先级一览表
    百科源码生活资讯百科门户类网站百科知识,生活常识
    最新发布!阿里云卓越架构框架重磅升级
    0基础学习VR全景平台篇第110篇:源图像导入和镜头预设 - PTGui Pro教程
    代码随想录训练营二刷第四十八天 | 139.单词拆分 背包问题总结
    使用oss对象存储服务的两种方式
    Springboot 配置线程池创建线程和配置 @Async 异步操作线程池
  • 原文地址:https://blog.csdn.net/qq_29935433/article/details/126547190
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号