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

应用程序不计算事物,但是i / o,读取文件,使用网络。我想要探查器来显示它。 我希望像callgrind这样的东西会调用clock_gettime每个问题。 或者像oprofile那样中断我的应用程序(当它正在睡觉或等待socket / file /等等)时,看看它在做什么。 我想要“读”,“连接”,“nanosleep”,“发送”,尤其是“fsync”(以及所有调用者)之类的内容是粗体(不是像执行计算的字符串或数字函数)。 平台:GNU / Linux @ i386     
已邀请:
快速攻击Linux的简单采样分析器:http://vi-server.org/vi/simple_sampling_profiler.html 它将
backtrace(3)
附加到
SIGUSR1
上的文件中,然后将其转换为带注释的源。 当它定期探测程序时,我们会看到等待某些东西的函数。 当它走过堆栈时,我们也会看到来电者。 此外,人们从类似问题的答案推荐Zoom。     
没有真正的方法可以在不了解您的平台的情况下回答这个问题,而更多地了解您正在尝试做什么。 当我在英特尔平台上运行时,我喜欢使用时间戳计数器(RDTSC)。在亚微秒范围内击败重塑是很困难的。我只是在一大堆代码之前和之后调用它,并比较差异。     

要回复问题请先登录注册