首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getrusage()是如何报告冬眠时间的?

getrusage()是如何报告冬眠时间的?
EN

Stack Overflow用户
提问于 2015-07-06 13:10:06
回答 1查看 114关注 0票数 1

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

我不知道冬眠会对此产生什么影响。冬眠时间报告了吗?或者作为系统时间?这是在Posix中指定的,还是系统依赖的?

编辑here问了同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-06 14:19:43

我认为POSIX在任何地方都没有提到休眠,所以它在技术上是依赖于平台的。

我只能代表Linux说话,但其他UNIX变体--甚至Windows --可能也有类似的行为,因为这才是最有意义的。

在Linux中,在内核源代码下的文档/power/swstan.txt中描述了在休眠状态下发生的确切细节。简而言之,用户进程被发送一个假信号,使他们切换到TASK_UNINTERRUPTIBLE状态。处于TASK_UNINTERRUPTIBLE状态的进程将从运行队列中取出并处于休眠状态,直到等待条件变为现实为止,因此在TASK_UNINTERRUPTIBLE中花费的时间既不计为用户时间,也不计为系统时间。如果您要用time(1)度量运行时,您最多只能看到它对挂钟时间的贡献。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31246788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档