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

6 linux scheduling timing linux-kernel

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

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

for i in `ls /proc/ | egrep [0-9]+`
do
        cat /proc/$i/status | grep State
done
Run Code Online (Sandbox Code Playgroud)

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

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

hay*_*lci 0

你可以用“时间”

 $ time ls /usr/bin

 real    0m4.756s
 user    0m0.051s
 sys     0m0.078s
Run Code Online (Sandbox Code Playgroud)

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

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

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