我应该用什么参考器来测量_real_时间(包括等待SYSCALLS)在此功能上花费,而不是_cpu_
题
该应用程序不计算事物,而是I/O,读取文件,使用网络。我希望探索者展示它。
我期望像CallGrind中的类似内容,可以调用Clock_getTime每个Proble。
或喜欢的oprofile 中断 我的应用程序(当它睡觉或等待套接字/文件/white时)查看它在做什么。
我想要诸如“读”,“连接”,“纳米腿”,“发送”,尤其是“ fsync”之类的东西(和他们所有的呼叫者)是粗体(不是执行计算的字符串或数字函数)。
平台:gnu/linux @ i386
解决方案
迅速为Linux入侵了琐碎的抽样探测器: http://vi-server.org/vi/simple_sampling_profiler.html
它附加 backtrace(3)
到文件上 SIGUSR1
, ,然后将其转换为注释源。
当它定期探究程序时,我们将看到等待某些东西的功能。
当它走上堆栈时,我们也会看到呼叫者。
从回答到类似问题的人们也建议Zoom。
其他提示
在不知道您的平台的情况下,没有真正的方法可以回答这个问题,还有更多关于您要做的事情的方法。
当我在英特尔平台上运行时,我喜欢使用 时间邮票计数器(RDTSC). 。在亚微秒范围内击败重新估计很难。我只是在大量代码之前和之后打电话给它,然后比较差异。
不隶属于 StackOverflow