当前位置: 首页 > article >正文

perf抓取compass能解析的日志

正在学习

正在学习中。

具体操作

生成记录:

perf sched record -a -g --call-graph dwarf -T -P --overwrite --switch-output=500M

perf sched record 命令是用于记录系统调度事件的,它包含了多个参数,每个参数都有特定的作用。下面是这个命令中每个参数的解释:

  1. perf sched record:这是 perf 工具的调度记录子命令,用于捕获调度事件。

  2. -a:这个参数表示记录所有 CPU 上的事件。

  3. -g:这个参数用于生成调用图形(callgraph),它可以帮助分析函数调用关系。

  4. --call-graph dwarf:这个参数指定了调用图形的类型。dwarf 是一种调试文件格式,它包含了程序的调试信息,这里用于生成调用图形。

  5. -T:这个参数用于记录所有任务的生命周期事件,例如任务的创建和退出。

  6. -P:这个参数用于记录所有进程的生命周期事件,例如进程的创建和退出。

  7. --overwrite:如果输出文件已经存在,这个参数会覆盖它。

  8. --switch-output=500M:这个参数用于设置输出文件的大小限制。当输出文件达到 500MB 时,perf 会自动切换到一个新的输出文件。这有助于控制单个输出文件的大小,避免文件过大难以处理。

综上所述,这个命令的作用是记录所有 CPU 上的调度事件,包括任务和进程的生命周期事件,同时生成调用图形,并在输出文件达到 500MB 时自动切换到新的输出文件。这个命令对于分析系统的调度性能非常有用。

转换成ctf,

以便tracecompass可以读取:

perf data convert --all -i perf.data --to-ctf perf-ctf

这条命令是用来将 perf 工具生成的原始性能数据文件转换成 Trace Compass 可以读取的 CTF (Common Trace Format) 格式。下面是命令中每个参数的详细解释:

  1. perf data convert:这是 perf 工具的子命令,用于将 perf 捕获的数据转换为其他格式。

  2. --all:这个参数指示 perf 转换所有可用的数据。

  3. -i perf.data-i 参数后面跟着的是输入文件的名称。在这个例子中,perf.dataperf record 命令生成的原始性能数据文件。

  4. --to-ctf:这个参数指定了输出格式为 CTF。CTF 是一种用于时间序列数据的文件格式,它被设计为易于存储和传输,并且可以被多种工具读取,包括 Trace Compass。

  5. perf-ctf:这是转换后的输出文件的名称。在这个例子中,转换后的 CTF 文件将被命名为 perf-ctf

综上所述,这条命令的作用是将 perf 生成的原始数据文件 perf.data 转换为 CTF 格式的文件 perf-ctf,以便 Trace Compass 能够读取和分析这些数据。这个转换过程是为了让数据更适合于 Trace Compass 的分析工具,因为 CTF 格式是 Trace Compass 支持的格式之一。

生成调用栈函数名:

perf script -i perf.data

perf script 命令是 perf 工具的一个子命令,它用于将 perf record 命令收集的事件数据转换成可读的脚本格式。这对于分析性能数据非常有用,因为它可以将数据转换成更易于人类阅读和理解的格式。下面是命令中每个参数的详细解释:

  1. perf script:这是 perf 工具的子命令,用于将性能数据转换成脚本格式。

  2. -i perf.data-i 参数后面跟着的是输入文件的名称。在这个例子中,perf.dataperf record 命令生成的原始性能数据文件。这个文件包含了在记录期间捕获的所有性能事件。

perf script 命令默认会将性能数据转换成一个脚本,其中包含了事件的时间戳和相关的调用栈信息。这个脚本可以直接在命令行中查看,也可以重定向到一个文件中,例如:

perf script -i perf.data > output.txt

这将把输出保存到 output.txt 文件中,你可以使用文本编辑器查看和分析。

生成的脚本中,每一行通常包含一个事件的信息,包括时间戳、事件类型、调用栈等。调用栈信息显示了事件发生时正在执行的函数序列,这对于识别性能瓶颈和理解程序的执行流程非常有帮助。

请注意,perf script 命令通常需要调试符号(debug symbols)来解析函数名,这些符号通常包含在程序的二进制文件中。如果没有调试符号,perf script 输出的调用栈可能只包含内存地址而不是函数名。确保你有权限访问这些调试符号,并且它们是最新的,以便正确解析函数名。


http://www.kler.cn/a/390647.html

相关文章:

  • 使用Python实现定期从API获取数据并存储到数据库的完整指南
  • WebRTC API分析
  • 【mySql 语句使用】
  • ReactPress技术揭秘
  • ubuntu cmake CPack将第三方库进行打包
  • 【MySQL从入门到放弃】InnoDB磁盘结构(一)
  • 深入了解区块链:Web3的基础架构与发展
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】文本Text显示
  • Pytorch如何精准记录函数运行时间
  • 2024下半年软考中项考试成绩多久出来?成绩合格标准是多少?
  • MySQL的ibtmp1文件详解及过大处理策略
  • laravel php artisan storage:link 后通过nginx代理访问图片404 not found问题
  • 人工智能--自然语言处理简介
  • 干部调整辅助决策系统:为干部管理注入新活力
  • 三周精通FastAPI:37 包含 WSGI - Flask,Django,Pyramid 以及其它
  • Fortinet Security Fabric安全平台
  • 【GPTs】Get Simpsonized:一键变身趣味辛普森角色
  • 微服务电商平台课程三:搭建后台服务
  • 20241112_高级工程数学作业
  • 观影新境界:nastool自动化管理结合cpolar助力群晖NAS远程影音享受——“cpolar内网穿透”
  • linux基础-完结(详讲补充)
  • elementUI中2个日期组件实现开始时间、结束时间(禁用日期面板、控制开始时间不能超过结束时间的时分秒)实现方案
  • PaddleOCR安装教程
  • 【架构论文-1】面向服务架构(SOA)
  • springboot yml配置信息书写与获取
  • 大数据数据存储层MemSQL, HBase与HDFS