gpt4 book ai didi

linux - 性能:软件事件之间的奇怪关系

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:02 24 4
gpt4 key购买 nike

好吧,这真的让我很烦恼。

我正在使用 perf 记录 cpu-clock 事件(软件事件):

$ > perf record -e cpu-clock srun -n 1 ./stream

... perf report 生成的表是空的。

我正在使用 perf 记录 perf 列表中列出的所有可用软件事件:

$ > perf record -e alignment-faults,context-switches,cpu-clock,cpu-migrations,\
dummy,emulation-faults,major-faults,minor-faults,page-faults,task-clock\
srun -n 1 ./stream

...该表为我提供了可用样本的列表:

0 alignment-faults                                   
125 context-switches
255 cpu-clock
21 cpu-migrations
0 dummy
0 emulation-faults
0 major-faults
128 minor-faults
132 page-faults
254 task-clock

我可以查看在 cpu-clock 中收集的样本,它为我提供了信息。为什么?!如果我只测量 cpu-clock,为什么它不起作用?为什么在四个事件中没有收集到样本?

这是这个问题的后续: error: perf.data file has no samples

最佳答案

可能 srun 不使用直接 fork 启动目标进程。它可能会使用一些变体或远程 shell,如 ssh 或守护进程来启动进程。

perf record(没有 -a 选项)将只跟踪直接 fork 的子进程,而不是 sshd 或其他守护进程启动( fork )的进程。如果 srun 可以访问它并且使用了 perf record ... srun 命令,它将永远不会分析远程机器(这是为了分析 srun 应用程序及其派生的所有内容) .

首先尝试 perf stat 以获得总的(原始)性能计数器,并将 perf 作为 srun 参数;这是使用远程 shell 或守护进程的工具的正确用法(可能具有 perf 的完整路径):

 srun -n 1 perf stat ./stream
srun -n 1 /usr/bin/perf stat ./stream

perf stat 将打印目标任务的运行时间。然后选择一些具有高原始计数器的事件(perf record 通常将采样率调整到几 kHz 左右,因此如果有足够的原始事件计数,将生成数千个样本):

 srun -n 1 perf record -e cpu-clock ./stream
srun -n 1 /usr/bin/perf record -e cpu-clock ./stream

关于linux - 性能:软件事件之间的奇怪关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44677519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com