Perf输出无法重定向到文件

时间:2013-09-13 00:16:23

标签: linux output perf

我在Ubuntu(12.0.4 LTS)上使用perf(Linux工具), 而我现在仍然试图将工具的输出重定向到文件。 许多帖子都解决了这个问题,但任何一个帖子都解决了 建议的解决方案没有为我工作。

我在这里尝试的是:跟踪pid的统计数据 并将它们存储在一个文件中。在一个终端中,我运行perf工具,在另一个终端上,我使用kill -INT命令(sudo kill -INT $pid)终止了perf过程。受到网络上不同解决方案的启发(例如how to save ouput of perf (Linux tool) to a file?),我尝试了不同的命令组合,例如:

  1. perf stat -o hhe.txt -e minor-faults,major-faults,cs -p 14615
  2. perf stat --output hhe.txt -e minor-faults,major-faults,cs -p 14615
  3. perf stat --output hhe.txt --append -e minor-faults,major-faults,cs -p 14615
  4. perf stat -e minor-faults,major-faults,cs -p 14615 2> hhe.txt
  5. perf stat -e minor-faults,major-faults,cs -p 14615 0> hhe.txt
  6. perf stat -e minor-faults,major-faults,cs -p 14615 >> hhe.txt
  7. 对于在sudo模式下运行的所有这些命令 输出不会写入文件。我不知道为什么。也许是因为杀戮命令;但以下链接表明它有效:http://comments.gmane.org/gmane.linux.kernel.perf.user/911

    我不确定我做错了什么。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:2)

  1. 我也使用Ubuntu 12.04,它可能取决于你的perf版本。

    我的Perf检验是3.2.40。 (您可以通过以下方式查看:

    perf --version

  2. 由于我的版本高于 3.x ,我尝试了以下命令,这对我有用:

    3> results.log perf stat -e cycles --log-fd 3 ls> ls.txt

    所以根据你的情况,你可以尝试:

    3> hhe.txt perf stat -e minor-faults,major-faults,cs -p 14615 --log-fd 3 ls> ls.txt

  3. 与此同时,我发现这篇文章非常有用:
         perf使用什么流?
        https://unix.stackexchange.com/questions/89591/what-stream-does-perf-use

    希望这会有所帮助:)

答案 1 :(得分:2)

我刚刚在命令末尾添加了这两个参数,它在2个文件中为我捕获了所有内容。我不知道为什么我们需要2个不同的文件,但我无法将所有内容重定向到1个文件。 2 - ;是针对stderr和1>是stdout。你可以尝试这个,看看它是否有效。我能够用这个来捕捉我想要的东西:

2>temp.out 1>temp1.out

例如,您的命令可能看起来像 -

perf stat -e minor-faults,major-faults,cs -p 14615 2>temp.out 1>temp1.out