怎样的getrusage()报告所花费的时间冬眠?(How does getrusage() rep

2019-10-23 15:56发布

我目前使用getrusage告诉我,我在我的应用程序的事件循环花费多少时间。

我不知道这会冬眠的影响。 正在冬眠时间报道呢? 或许因为系统时间? 这是指定的地方在Posix的还是这取决于系统?

编辑询问的Windows同样的问题在这里 。

Answer 1:

我不认为任何地方POSIX提到冬眠,所以它在技术上是依赖于平台。

我只能说为Linux,但其他UNIX变体 - 或许甚至是Windows - 也许同样的行为,因为这是最有意义的。

在Linux中,与冬眠引擎盖下会发生什么的确切细节文档/功率/ swsusp.txt内核源代码下的说明。 总之,用户进程被发送使得他们切换到一个假信号TASK_UNINTERRUPTIBLE状态。 在A过程TASK_UNINTERRUPTIBLE状态取出运行队列,并把睡觉,直到它在等待条件成真,所以花费的时间TASK_UNINTERRUPTIBLE既不算作用户的时间,也为系统时间。 如果你要测量与运行时time(1)你会在最见它有助于挂钟时间。

随着getrusage(2)你不会看到任何报告的CPU时间的差异,因为这个过程是不能运行的。

因此,要回答你的问题:休眠时间是不是在所有的报道。



文章来源: How does getrusage() report time spent hibernating?