我应该用什么分析器来测量_real_ time(包括等待系统调用)花在这个函数上,而不是_CPU_一个

时间:2010-10-21 22:38:46

标签: profiling io callgrind oprofile

应用程序不计算内容,但是i / o,读取文件,使用网络。我希望探查者能够展示它。

我希望像callgrind这样的东西会调用clock_gettime每个问题。

或者喜欢oprofile 中断我的应用程序(当它正在休眠或等待socket / file /等等)时,看看它在做什么。

我想要“读”,“连接”,“nanosleep”,“发送”,特别是“fsync”(及其所有来电者)之类的内容为粗体(不是字符串或数字之类的东西)执行计算的函数。)

平台:GNU / Linux @ i386

2 个答案:

答案 0 :(得分:2)

快速攻击Linux的简单采样分析器:http://vi-server.org/vi/simple_sampling_profiler.html

它将backtrace(3)附加到SIGUSR1上的文件,然后将其转换为带注释的来源。

当它定期探测程序时,我们会看到等待某些东西的功能。

当它走过堆栈时,我们也会看到来电者。

同样,人们会从类似问题的答案中推荐Zoom。

答案 1 :(得分:0)

没有真正的方法可以在不了解您的平台的情况下回答这个问题,而更多地了解您的目标。

当我在英特尔平台上运行时,我喜欢使用Time Stamp Counter (RDTSC)。在亚微秒范围内击败重塑是很困难的。我只是在一大堆代码之前和之后调用它,并比较差异。