是否可以通过Linux实时监控进程的调度?

时间:2017-03-02 11:18:35

标签: linux process linux-kernel scheduled-tasks scheduling

我正在尝试使用RaspberryPi开发一个多进程系统,我希望在其中监视所有主要进程以及如何使用Linux进行调度。也就是说,获取调度程序状态,开始时间,发布时间等。我一直在搞乱' / proc'文件夹,以便找到这样的信息,但到目前为止我还没有找到真正有用的东西。

例如,如果你进入/ proc / pid / task / pid,你可以看到:

se.exec_start
se.vruntime
se.sum_exec_runtime
se.statistics.wait_start
se.statistics.sleep_start
se.statistics.block_start
se.statistics.sleep_max
se.statistics.block_max
se.statistics.iowait_sum
se.statistics.wakeups

等等。现在,这看起来像我要做的事情,但不够清楚。 我想看看如何在核心中安排进程。即,Process1在0.30发布,然后Process2从0.70(系统计时器值)等开始。

通过监控内核文件夹,例如' / proc',可以做到这一点吗? 如果没有,有没有办法使用Linux的其他跟踪工具或调度工具来确定这个?

非常感谢任何指导。 请告诉我是否还需要提供其他内容。

提前致谢。

编辑:使用kernelshark, enter image description here

我想确切地知道,对于其他进程,cpu何时为每个任务完成一次迭代。

1 个答案:

答案 0 :(得分:5)

  

我想了解如何在核心中安排进程。即,Process1在0.30发布,然后Process2从0.70(系统计时器值)等开始。

这称为跟踪,通常在用户请求后在内核中完成。 Linux中有几个内核事件跟踪器。试试

Gregg有一些关于Linux追踪的信息(使用&#34; pony-corn吉祥物&#34;魔术):http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html(应该有关于https://www.slideshare.net/brendangregg中的追踪的一些介绍)... < / p>

  

通过监控内核文件夹(如&#39; / proc&#39;

)可以实现这样的功能

sysdig没有inotify(内部没有真实的目录或真实文件:https://stackoverflow.com/a/24898733),因此您无法监控更改,只能重读一些/ proc(或某些/ sys)定期。