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

我正在尝试使用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,
是否可以通过Linux实时监控进程的调度?

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

解决方法:

I want to just see how processes are scheduled in cores. i.e, Process1 released at 0.30, then Process2 started at 0.70 (system timer values) etc.

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

> perf sched(man,lwn commit;也是http://www.brendangregg.com/perf.html#SchedulerAnalysis)使用perf sched record sleep 2然后perf sched脚本来获取日志
>一些其他用于跟踪的perf命令,如perf record -e’ssched:sched_process_ *’-a sleep 2 perf脚本(从http://www.brendangregg.com/perf.html开始)
> trace-cmd(man;基于ftrace – https://lwn.net/Articles/608497/ https://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_rostedt.pdf):trace-cmd记录-e sched ./program / trace-cmd记录-e sched_switch …,trace-cmd报告(或安装和使用kernelshark GUI – https://lwn.net/Articles/425583/ http://static.lwn.net/images/2011/ks-success.png)
>还有像LTT / LTTng(wiki,website)这样的特殊示踪剂.它具有Eclipse(Trace Compass)的GUI插件:https://wiki.eclipse.org/images/4/49/X-axis-alignment-full-histogram-axis-bottom.png,包含流程图和CPU图随时间变化
>我认为,sysdig也可能跟踪调度程序……

Gregg有一些关于Linux追踪的信息(带有“小马玉米吉祥物”魔法):http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html(应该有关于https://www.slideshare.net/brendangregg追踪的一些介绍)……

Is something like this possible by monitoring kernel folders such as ‘/proc’

/ proc没有inotify(它里面没有真正的目录或真实文件:https://*.com/a/24898733),所以你无法监视更改,你只能定期重读一些/ proc(或some / sys).

上一篇:linux – Supervisord调度


下一篇:.net批量下载图片