首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perf报告的功能在0

Perf报告的功能在0
EN

Stack Overflow用户
提问于 2021-03-06 15:14:29
回答 1查看 234关注 0票数 5

我试图摸索什么是myApp非常忙(90% cpu单线程)。这是一个我不应该重新启动的服务器。我收集了样本

代码语言:javascript
复制
perf record -p 5068 -F 99 --call-graph dwarf sleep 10

perf report给了我这个:

代码语言:javascript
复制
+  100.00%     0.00%  myApp    [unknown]              [.] 0xffffffffffffffff                                                                                                                           ◆
+   80.67%     0.67%  myApp    myApp                  [.] pipeline_run                                                                                                                                 ▒
+   67.71%     0.00%  myApp    myApp                  [.] QueryProcessor::process

我花了一些时间搜索和阅读文档,我怀疑0 0xffffffffffffffff无法被解决,因为perf不知道堆栈底部在哪里,因为它没有启动这个过程。但有人能确认一下吗?或者给我指明正确的方向?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-08 04:45:46

在我的例子中,这是由perf使用太小的堆栈转储大小造成的。这将导致截断堆栈的底部变成0xffffffffffffffff,这将使perf report和朋友认为0xffffffffffffffff函数被大量使用。

当我使用最大堆栈转储捕获大小时,我去掉了大部分0xffffffffffffffff。如果您通过--call-graph dwarf,则将使用8192的默认堆栈转储大小。若要使其最大化,请更改为--call-graph dwarf,65528

来自perf record --help

代码语言:javascript
复制
    When "dwarf" recording is used, perf also records (user) stack dump
    when sampled.  Default size of the stack dump is 8192 (bytes).
    User can change the size by passing the size after comma like
    "--call-graph dwarf,4096".

如果尝试使用大于65528的值,则会得到

代码语言:javascript
复制
callchain: Incorrect stack dump size (max 65528): 128000
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66507213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档