【问题标题】:I want to get execution time from task_struct我想从 task_struct 获取执行时间
【发布时间】:2014-03-24 06:04:14
【问题描述】:

在一个模块中,我正在访问 task_struct 并返回 stime+utime。 我想将其转换为毫秒。 task_struct 中将以何种格式显示 stime 和 utime。 我也可以从 /proc//stat 访问它。两个单位是否不同。

【问题讨论】:

    标签: linux linux-kernel task


    【解决方案1】:

    Marc Rochkind 的 Advanced Unix Programming 在某种程度上涵盖了这个主题(如果我没记错的话,第 55 页)。如果我解释他所说的更好,请原谅我。

    utime 代表用户时间,是执行指令所花费的时间。它只是 CPU 时间,不包括等待运行所花费的时间。

    stime 是代表进程执行系统调用所花费的 CPU 时间。

    单位是时钟滴答。

    每秒时钟滴答数可以通过 sysconf 系统调用来确定。

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      给定task_struct,以纳秒为单位的 CPU 总运行时间存储在 task->se.sum_exec_runtime 中。

      除非首先通过task_cputime_adjusted(task, &utime, &stime) 进行调整,否则这似乎与task->utime+task->stime 相加。

      对于其他尝试实现此类功能的人,我强烈建议阅读proc(5)。在这种情况下,搜索utime 会引导您找到/proc/[pid]/stat(或proc/self/stat),它在第14 列中提供utime。该实现可以在fs/proc/array.c 中找到,我在这里找到了对task_cputime_adjusted 的调用。验证模块输出,例如/proc/[pid]/stat | awk '{ print $14 }utime

      【讨论】:

        猜你喜欢
        • 2021-01-19
        • 2013-04-09
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-03
        • 1970-01-01
        相关资源
        最近更新 更多