getrusage()如何报告休眠时间?

时间:2015-07-06 13:10:06

标签: c profiling posix getrusage

我目前正在使用hist3D告诉我在应用程序的事件循环中花了多少时间。

我想知道这会如何受到冬眠的影响。是否报告了冬眠时间?或者也许是系统时间?这是在Posix的某处指定的还是这个系统依赖?

修改向Windows here提出同样的问题。

1 个答案:

答案 0 :(得分:2)

我不认为POSIX会在任何地方提到休眠,因此它在技术上依赖于平台。

我只能代表Linux,但其他UNIX变体 - 甚至可能是Windows - 可能表现相似,因为这是最有意义的。

在Linux中,内核源代码下的Documentation / power / swsusp.txt中描述了具有休眠功能的详细信息。简而言之,用户进程会发送一个伪信号,导致它们切换到TASK_UNINTERRUPTIBLE状态。 TASK_UNINTERRUPTIBLE状态的进程从运行队列中取出并进入休眠状态,直到它等待的条件成为现实,因此在TASK_UNINTERRUPTIBLE中花费的时间既不算作用户时间也不算作系统时间。如果您使用time(1)来衡量运行时间,您最多会发现它会影响挂钟时间。

使用getrusage(2),您将看不到任何报告的CPU时间的差异,因为该过程不可运行。

所以,回答你的问题:根本没有报告休眠时间。