草庐IT

ANDR-PERF-MPCTL

全部标签

linux - 可以从 perf.data 文件生成 perf-stat 结果吗?

当我想使用Linux工具套件中的perf-stat和perf-report生成性能报告时perf,我跑:$perfrecord-omy.perf.datamyCmd$perfreport-imy.perf.data和:$perfstatmyCmd但这意味着我要第二次运行“myCmd”,这需要几分钟时间。相反,我希望:$perfstat-imy.perf.data但与perf套件中的大多数工具不同,我没有看到perf-stat的-i选项。是否有其他工具,或者有办法让perf-report生成与perf-stat类似的输出? 最佳答案

linux - 使用 perf 监控原始事件计数器

我正在尝试测量具有多个(物理)处理器的(英特尔至强)机器上的某些硬件事件。具体来说,我想知道为读取“offcore”数据发出了多少请求。我找到了theOFFCORE_REQUESTS英特尔文档中的硬件事件,它给出了事件描述符0xB0和数据需求,附加掩码0x01。然后告诉perf记录事件0xB1(即0xB0|0x01)并将其称为:是否正确?perfrecord-er0B1./mytestappsomeargs或者这是不正确的?因为perfreport没有显示像这样输入的事件的输出。除了tutorialentry之外,这方面的perf文档相当稀疏。它没有说明它是哪个事件(虽然这个对我有用)

linux - 使用 perf 监控原始事件计数器

我正在尝试测量具有多个(物理)处理器的(英特尔至强)机器上的某些硬件事件。具体来说,我想知道为读取“offcore”数据发出了多少请求。我找到了theOFFCORE_REQUESTS英特尔文档中的硬件事件,它给出了事件描述符0xB0和数据需求,附加掩码0x01。然后告诉perf记录事件0xB1(即0xB0|0x01)并将其称为:是否正确?perfrecord-er0B1./mytestappsomeargs或者这是不正确的?因为perfreport没有显示像这样输入的事件的输出。除了tutorialentry之外,这方面的perf文档相当稀疏。它没有说明它是哪个事件(虽然这个对我有用)

c++ - 如何使用 linux perf 获取 libc6 符号(例如 _int_malloc)的调用父项?

我正在使用linuxperf分析一个C++应用程序,并且我使用GProf2dot得到了一个很好的控制流图.但是,C库(libc6-2.13.so)中的一些符号占用了总时间的很大一部分,但没有边。例如:_int_malloc占用了8%的时间,但没有调用parents。__strcmp_sse42和__cxxabiv1::__si_class_type_info::__do_dyncast一起占用了大约10%的时间,并且调用者的名字是0,它有调用者2d6935c、2cc748c和没有调用者的6。因此,我无法仅使用perf找出哪些例程负责所有这些分配和动态转换。但是,似乎其他符号(例如mal

c++ - 如何使用 linux perf 获取 libc6 符号(例如 _int_malloc)的调用父项?

我正在使用linuxperf分析一个C++应用程序,并且我使用GProf2dot得到了一个很好的控制流图.但是,C库(libc6-2.13.so)中的一些符号占用了总时间的很大一部分,但没有边。例如:_int_malloc占用了8%的时间,但没有调用parents。__strcmp_sse42和__cxxabiv1::__si_class_type_info::__do_dyncast一起占用了大约10%的时间,并且调用者的名字是0,它有调用者2d6935c、2cc748c和没有调用者的6。因此,我无法仅使用perf找出哪些例程负责所有这些分配和动态转换。但是,似乎其他符号(例如mal

c++ - 为什么 perf 具有如此高的上下文切换?

我试图理解linuxperf,发现了一些非常令人困惑的行为:我写了一个简单的多线程示例,每个内核固定一个线程;每个线程在本地运行计算并且不相互通信(参见下面的test.cc)。我在想这个例子应该有非常低的上下文切换,如果不是零的话。但是,使用linuxperf分析示例显示了数千个上下文切换-比我预期的要多得多。我进一步分析了linux命令sleep20以进行比较,显示上下文切换要少得多。此个人资料结果对我来说没有任何意义。是什么导致了如此多的上下文切换?>sudoperfstat-esched:sched_switch./testPerformancecounterstatsfor'.

c++ - 为什么 perf 具有如此高的上下文切换?

我试图理解linuxperf,发现了一些非常令人困惑的行为:我写了一个简单的多线程示例,每个内核固定一个线程;每个线程在本地运行计算并且不相互通信(参见下面的test.cc)。我在想这个例子应该有非常低的上下文切换,如果不是零的话。但是,使用linuxperf分析示例显示了数千个上下文切换-比我预期的要多得多。我进一步分析了linux命令sleep20以进行比较,显示上下文切换要少得多。此个人资料结果对我来说没有任何意义。是什么导致了如此多的上下文切换?>sudoperfstat-esched:sched_switch./testPerformancecounterstatsfor'.

linux - Perf 启动开销 : Why does a simple static executable which performs MOV + SYS_exit have so many stalled cycles (and instructions)?

我试图了解如何衡量性能并决定编写非常简单的程序:section.textglobal_start_start:movrax,60syscall然后我用perfstat./bin运行了程序。令我惊讶的是stalled-cycles-frontend太高了。0.038132task-clock(msec)#0.148CPUsutilized0context-switches#0.000K/sec0cpu-migrations#0.000K/sec2page-faults#0.052M/sec107,386cycles#2.816GHz81,229stalled-cycles-fronten

linux - Perf 启动开销 : Why does a simple static executable which performs MOV + SYS_exit have so many stalled cycles (and instructions)?

我试图了解如何衡量性能并决定编写非常简单的程序:section.textglobal_start_start:movrax,60syscall然后我用perfstat./bin运行了程序。令我惊讶的是stalled-cycles-frontend太高了。0.038132task-clock(msec)#0.148CPUsutilized0context-switches#0.000K/sec0cpu-migrations#0.000K/sec2page-faults#0.052M/sec107,386cycles#2.816GHz81,229stalled-cycles-fronten

linux - 我怎样才能让 perf 在我的程序中找到符号

使用perfreport时,我没有看到程序的任何符号,而是得到如下输出:$perfrecord/path/to/racketints.rkt10000$perfreport--stdio#OverheadCommandSharedObjectSymbol#.......................................#70.06%ints.rkt[unknown][.]0x5f99b826.28%ints.rkt[kernel.kallsyms][k]0xffffffff8103d0ca3.66%ints.rktperf-32046.map[.]0x7f1d9be466