我怎么知道一个过程的最后一个计划时间

时间:2015-06-10 06:21:43

标签: linux process linux-kernel scheduling

我当前遇到一个问题,一个过程似乎以某种方式卡住,它只是没有被安排,状态总是'S'。我已经通过debugfs监视sched_switch_task跟踪了一段时间,没看到进程被调度。所以我想知道内核最后一次安排这个过程的时间是什么时候?

非常感谢。

1 个答案:

答案 0 :(得分:3)

可能可以使用500文件中的信息。

在那里你可以找到这些参数(取决于操作系统版本,我的是opensuse 3.16.7-21-desktop):

/proc/pid#/sched

这些值表示相对于系统启动时间的时间戳,但是在一个可能取决于您的系统的单位中(在我的示例中,单位是0.5毫秒,总值约为6天20小时并且更改)。

在上面列出的最后3个参数中,最多一个参数在任何时候都显示为非零,并且我怀疑相应的非零值表示它上次进入相应状态的时间(当过程主动运行时)都是零)。

因此,如果你的过程确实被卡住了,那么当它被卡住时会记录非零值。

注意:这主要是基于观察和假设 - 我没有发现这些参数记录在任何地方,所以带上一粒盐。

该文件中有大量其他计划信息,但主要是统计数据,而且没有难以使用的文档。