用于字符设备驱动程序的 GProf 性能工具

Posted

技术标签:

【中文标题】用于字符设备驱动程序的 GProf 性能工具【英文标题】:GProf peformance tool for character device driver 【发布时间】:2013-08-12 06:09:21 【问题描述】:

我有一个简单的C程序如下

main(int argc, char *argv[])

    /* Calling read function to character device driver*/
    int fd = fopen("MyCharDevice",0);

    /*write call to device and further code*/
    return 0;

现在,当我使用 gprof 对其进行分析时,我没有时间使用 main() 函数本身。

$ gprof -b -a a.out > analysis.txt

我在哪里调用我的 char 设备(我需要对其进行分析)。我尝试将与调用设备驱动程序相对应的代码放在其他一些函数中,但我得到了同样的结果。

analysis.txt的内容如下:

Flat profile:

Each sample counts as 0.01 seconds.
 no time accumulated

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
  0.00      0.00     0.00        3     0.00     0.00  __gmon_start__

            Call graph


granularity: each sample hit covers 4 byte(s) no time propagated

index % time    self  children    called     name
                0.00    0.00       3/3           main [3]
[4]      0.0    0.00    0.00       3         __gmon_start__ [4]
-----------------------------------------------

Index by function name

   [4] __gmon_start__

我不知道如何获得时间。

我的要求 : 实际上,我必须使用一些 Linux 性能分析工具来比较信号量和 R/W 信号量的性能。所以我使用gprof

【问题讨论】:

【参考方案1】:

我是一张卡住的唱片,一遍又一遍地重复

gprof 不知道 I/O 时间gprof 不知道 I/O 时间gprof 不知道 I/O 时间 等等等等。

判断时间花费的方法是在它周围加上一个循环

在 GDB 下暂停它并检查堆栈 在 GDB 下暂停它并检查堆栈 在 GDB 下暂停它并检查堆栈 等等等等。

all these reasons,祝你好运!

【讨论】:

以上是关于用于字符设备驱动程序的 GProf 性能工具的主要内容,如果未能解决你的问题,请参考以下文章

[转]程序进行性能分析工具gprof使用入门

Linux c++ 性能分析工具gprof

Linux性能评测工具之一:gprof篇

GNU profiler(gprof)使用

GNU profiler(gprof)使用

使用gprof来对程序的性能分析总结