我正在使用gprof
计算每个函数执行程序所花费的时间。
上周我注意到当CPU使用率达到100%时,程序甚至无法启动!
stress
”工具的帮助下,在使用最大资源量的同时强调我的系统并测试程序时:http://weather.ou.edu/~apw/projects/stress/ 我已阅读帖子:
并阅读 Mike Dunlavey的 回复:
那些没有如此本地化的问题呢?那些无所谓吗? 不要对从未声称过的gprof寄予期望。它 只是一个测量工具,只有CPU绑定的操作。
以及 Norman Ramsey的 响应得分高:
Valgrind has an instruction-count profiler with a very nice visualizer called KCacheGrind. As Mike Dunlavey recommends, Valgrind counts the fraction of instructions for which a procedure is live on the stack, although I'm sorry to say it appears to become confused in the presence of mutual recursion. But the visualizer is very nice and light years ahead of gprof
。
但是当线程被关闭时,作为非建设性的,我想知道这是否是关注的好方向
提前致谢
P.S。在使用谷歌搜索时,我在询问
等问题时没有找到相关内容“当cpu达到100%时,为什么gprof不起作用”
提前致谢
答案 0 :(得分:1)
所有100%意味着它是挂起的,而且它没有进行I / O.
你说当你使用gprof
运行该程序时程序会挂起,但如果你没有,那就不行了吗?
这很奇怪,但我不打算试图解决这个问题。
正如我所说over and over,我只是手动抓取几个堆栈样本。 然后,任何例程使用的时间百分比只是它出现的样本的分数,或多或少。 如果您认为需要高精度测量,请尝试使用Zoom或OProfile等堆栈采样器。