确定进程花费阻塞/执行的时间量

时间:2009-04-21 14:54:43

标签: linux linux-kernel scheduling timing

好的,我有一个编程任务(是的,我们都可以转向我们认为适合帮助的任何来源)我必须找出进程花费阻塞/休眠/运行的时间。

我的第一次尝试是创建一个bash脚本......看起来像这样:

for i in `ls /proc/ | egrep [0-9]+`
do
        cat /proc/$i/status | grep State
done

然后所有问题都报告了睡眠状态。另外这种方法需要我疯狂地进行调查......所以运行测试可能会改变结果......(呃)

现在用syscalls编译一个新版本的linux或者一种跟踪进程状态的方法并不是不可能的。我唯一担心的是试图找出如何跟踪不断变化的过程状态,并确保我不会错过任何东西......

2 个答案:

答案 0 :(得分:0)

您可以使用'时间'

 $ time ls /usr/bin

 real    0m4.756s
 user    0m0.051s
 sys     0m0.078s

real - sys =等待I / O(休眠/阻塞)的总时间

sys - user =系统调用花费的时间

user =仅在程序中执行指令所花费的时间(可能包括动态链接开销,不确定)

答案 1 :(得分:0)

如果您想获取当前存在的事物的最新统计信息...

ps -Ae pid,comm,state,time,etime

-A用于所有进程,-e用于自定义输出(仅pid,命令,状态,时间(CPU时间),经过时间)

假设问题正在处理所有流程(包括已完成的流程),则将需要某种审核守护程序来监视流程并在完成时获取该信息。