当前位置: 首页 > 面试题库 >

使用性能探针监视特定功能期间的性能统计信息

顾泰平
2023-03-14
问题内容

我正在尝试使用linux perf工具监视特定功能期间的性能统计信息。

我正在按照https://perf.wiki.kernel.org/index.php/Jolsa_Features_Togle_Event#Example_-
_using_u.28ret.29probes上
给出的说明进行操作

我试图获得一个简单的C程序的指令计数。(如下所示)

1)我的简单C代码

#include<stdio.h>

int sum=0;
int i=0;

void func(void)
{
   for(i=0;i<100;i++)
   {
     sum=sum+i;
   }
}

int main(void)
{
   func();
   return 0;
}

2)编译和添加探针

root@sunimal-laptop:/home/sunimal/temp# gcc -o ex source.c 
root@sunimal-laptop:/home/sunimal/temp# perf probe -x ./ex entry=func
Added new event:
  probe_ex:entry       (on 0x4ed)

You can now use it in all perf tools, such as:

        perf record -e probe_ex:entry -aR sleep 1

root@sunimal-laptop:/home/sunimal/temp# perf probe -x ./ex exit=func%return
Added new event:
  probe_ex:exit        (on 0x4ed%return)

You can now use it in all perf tools, such as:

        perf record -e probe_ex:exit -aR sleep 1

3)尝试使用perf stat来测量func()函数中的指令计数。这会导致错误。

root@sunimal-laptop:/home/sunimal/temp# perf stat -e instructions:u,probe_ex:entry/on=instructions/,probe_ex:exit/off=instructions/ ./ex
invalid or unsupported event: 'instructions:u,probe_ex:entry/on=instructions/,probe_ex:exit/off=instructions/'
Run 'perf list' for a list of valid events

有人可以指出我做错了什么吗?

[我使用的是Linux内核3.11.0-12-通用]


问题答案:

我认为您遵循的说明尚未包含在主线Linux内核中。结果,perf告诉您不支持该事件:perf不知道此页面上提到的“切换”机制。

我可以看到两种解决方法

  1. 如果您有权访问要分析的源代码,则可以直接从源代码中使用perf_event_open系统调用来开始和停止计数函数的进入和退出。
  2. 克隆jolsa存储库git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/jolsa/perf切换core_toggle分支git co remotes/origin/perf/core_toggle,然后在此支持下编译并运行内核。

关于2,我对内核版本和开发完全不熟悉,我认为此解决方案的使用和维护可能非常复杂。也许您应该在perf用户邮件列表上询问是否有将切换功能集成到主线内核中的计划。



 类似资料:
  • Selenium有以下功能特性: Selenium是一个开源和可移植的Web测试框架。 Selenium IDE为创作测试提供了回放和录制功能,而无需学习测试脚本语言。 它可以被视为领先的基于云的测试平台,可帮助测试人员记录他们的操作并将其导出为可重复使用的脚本,并具有易于理解且易于使用的界面。 Selenium支持各种操作系统,浏览器和编程语言。如下列表: 编程语言: C# ,Java,Pyth

  • 6.2 功能特性 SpEL支持以下的一些特性: 字符表达式 布尔和关系操作符 正则表达式 类表达式 访问properties,arrays,lists,maps等集合 方法调用 关系操作符 赋值 调用构造器 Bean对象引用 创建数组 内联lists 内联maps 三元操作符 变量 用户自定义函数 集合投影 集合选择 模板表达式

  • 为了与C语言标准保持高度的兼容性,在C标准委员会的协助之下,一些细小的改变被引入到C++0x中。 long long 扩展的整型数据类型(例如,关于可选的更长的整型数的规则) 关于UCN的改变[N2170==07-0030]: 解除了”字符常量/字面字符串中不得使用控制/基本的通用字符名”的限制 // 译注: C++03中允许通过\uNNNN的形式 // 在字符/字符串中引入非ASCII字符(Un

  • Selenium WebDriver一些最重要的功能特性是: 多浏览器支持 :Selenium WebDriver支持各种Web浏览器,如Firefox,Chrome,Internet Explorer,Opera等等。它还支持一些非传统或罕见的浏览器,如HTMLUnit。 多编程语言支持:WebDriver还支持大多数常用的编程语言,如Java,C#,JavaScript,PHP,Ruby,Pe

  • 主要内容:1.菜单栏,2. 工具栏,3. 地址栏,4. 测试用例窗格,5.测试脚本编辑器框,6. 开始/停止录制按钮,7. 日志,引用窗格Selenium IDE分为不同的组件,每个组件都有自己的特性和功能。这里对Selenium IDE的七个不同组件进行了分类,其中包括: 菜单栏 工具栏 地址栏 测试案例窗格 测试脚本编辑器框 开始/停止录制按钮 日志,引用窗格 现在,我们将详细介绍每个组件的特性和功能。 1.菜单栏 菜单栏位于Selenium IDE界面的最顶部。 最常用的菜单栏模块包括:

  • Apache Ant功能特性如下: 开源 灵活 使用方便 跨平台 扩展 可扩展 XML 1. 开源 Apache Ant是一个开源库。 它允许用户访问源代码并重现它。 Ant拥有开源软件许可证。 它可以用来研究,重新分配。 2. 灵活 Ant本质上非常灵活,它可以毫不费力地与各种编程语言一起使用。 除了Java之外,其他有用的编程语言(如C,C++)也可以使用Ant来自动完成任务。 3. 使用方便