C++ Linux性能统计数据表现异常

C++ Linux性能统计数据表现异常,c++,linux,performance,C++,Linux,Performance,我正在使用linux/proc//stat文件为应用程序生成cpu使用信息。我遇到的问题是,在Fedora上,13件事情似乎表现得很奇怪,而在Ubuntu10.04上,事情的表现和我预期的一样 具体来说: 在fedora上,应用程序以3:1的比率记录更多的处理系统时间 在ubuntu上,应用程序以4:1的比率记录更多的进程用户时间 在fedora上,流程用户时间值在短时间后停止增加,并且不再继续 这对我来说似乎很奇怪,而用户时间停止增加的事实似乎是一个彻头彻尾的错误 我还尝试过用几种不同的方法读

我正在使用linux/proc//stat文件为应用程序生成cpu使用信息。我遇到的问题是,在Fedora上,13件事情似乎表现得很奇怪,而在Ubuntu10.04上,事情的表现和我预期的一样

具体来说:
在fedora上,应用程序以3:1的比率记录更多的处理系统时间
在ubuntu上,应用程序以4:1的比率记录更多的进程用户时间
在fedora上,流程用户时间值在短时间后停止增加,并且不再继续

这对我来说似乎很奇怪,而用户时间停止增加的事实似乎是一个彻头彻尾的错误

我还尝试过用几种不同的方法读取这些值,结果都是一样的,我还进行了一次测试,以确认用户和系统时间没有被转换


有人能解释一下可能发生的事情吗?是否有任何有效的方法可以使进程的用户时间停止增加?

用户时间根本不增加听起来像是一个bug。如果您能创建一个演示该问题的最小示例,我会将其提交给


(您是否有可能在信号处理程序中做了大量工作?

假设您指的是/proc/[pid]/stat,如果进程将所有时间都花费在系统调用或等待wchan(通常是磁盘、网络或其他I/O)上,则进程不会累积任何用户时间


进程记帐的详细程度由Linux 2.6.x(可能还有其他)内核中的许多配置变量控制。

信号处理程序中的负数,我将看一个简单的例子,但我猜我无法打破它。该应用程序有20个运行线程,并在整个过程中继续产生良好的输出,它是一个大型应用程序,现在它一直处于系统调用中……你对什么是“不可能”的直觉事件发生时,您的数据似乎发生冲突。数据通常比你的直觉更准确。例如,死锁线程可以防止进程累积用户空间周期。它不太可能累积零用户时间-即使长时间执行的系统调用最终也会返回到用户空间(当然,内核中阻塞的进程也不会累积这两种时间)。