1

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

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

编辑在此处对 Windows 提出相同的问题。

4

1 回答 1

2

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

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

在 Linux 中,在内核源代码下的 Documentation/power/swsusp.txt 中描述了在休眠状态下发生的确切细节。简而言之,用户进程被发送一个虚假信号,导致它们切换到TASK_UNINTERRUPTIBLE状态。处于该TASK_UNINTERRUPTIBLE状态的进程从运行队列中取出并进入睡眠状态,直到它等待的条件成立,因此所花费的时间TASK_UNINTERRUPTIBLE既不计入用户时间也不计入系统时间。如果你用 来衡量运行时间time(1),你最多会看到它对挂钟时间有贡献。

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

因此,回答您的问题:根本不报告休眠时间。

于 2015-07-06T14:19:43.093 回答