Performance 带perf的非CPU火焰图:输出字段的类型应该是什么?

Performance 带perf的非CPU火焰图:输出字段的类型应该是什么?,performance,profiling,perf,flamegraph,Performance,Profiling,Perf,Flamegraph,我一直在跟踪为我的代码生成一个非CPU火焰图。但是,当我进入这一步时: perf script -f comm,pid,tid,cpu,time,period,event,ip,sym,dso,trace 我得到以下错误: Invalid field requested. Usage: perf script [<options>] or: perf script [<options>] record <script> [<record-o

我一直在跟踪为我的代码生成一个非CPU火焰图。但是,当我进入这一步时:

perf script -f comm,pid,tid,cpu,time,period,event,ip,sym,dso,trace
我得到以下错误:

Invalid field requested.

 Usage: perf script [<options>]
    or: perf script [<options>] record <script> [<record-options>] <command>
    or: perf script [<options>] report <script> [script-args]
    or: perf script [<options>] <script> [<record-options>] <command>
    or: perf script [<options>] <top-script> [script-args]

    -F, --fields <str>    comma separated output fields prepend with 'type:'. Valid types: hw,sw,trace,raw. Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,addr,symoff,period,iregs,brstack,brstacksym,flags,bpf-output,callindent,insn,insnlen
请求的字段无效。
用法:perf脚本[]
或:性能脚本[]记录[]
或:性能脚本[]报告[脚本参数]
或:性能脚本[][]
或:性能脚本[][脚本参数]
-F、 --字段逗号分隔的输出字段前面加上“type:”。有效类型:硬件、软件、跟踪、原始。字段:comm、tid、pid、时间、cpu、事件、跟踪、ip、sym、dso、addr、symoff、句点、IREG、brstack、brstacksym、标志、bpf输出、callindent、insn、insnlen

我知道每个输出字段都需要一个类型,但我不确定应该提供哪种类型。有人能给我指出正确的方向吗?

更新:在最近的内核上,使用“perf script-F…”而不是“perf script-F…”。您的内核还需要CONFIG_SCHEDSTATS,以便跟踪点都存在,这可能会丢失(例如,RHEL7)


注意,在绘制非cpu flamegraph之前,请将/proc/sys/kernel/sched_schedstats设置为1。

您的linux内核版本是什么?您的性能是否也更新到了内核版本?说明如下:;对于4.5 linux,还需要“
echo 1>/proc/sys/kernel/sched_schedstats
”。尝试从perf脚本中删除一些字段以查找不受支持的字段。