moz*_*ors 3 linux scheduling process scheduled-tasks linux-kernel
我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)
等等.现在,这看起来像我要做的事情,但不够清楚.我想看看如何在核心中安排进程.即,Process1在0.30发布,然后Process2从0.70(系统计时器值)等开始.
通过监视'/ proc'等内核文件夹可以实现这样吗?如果没有,有没有办法使用Linux的其他跟踪工具或调度工具来确定这一点?
任何指导都非常感谢.请告诉我是否还有其他需要提供的东西.
提前致谢.
我想确切地知道,对于其他进程,cpu何时为每个任务完成一次迭代.
我想看看如何在核心中安排进程.即,Process1在0.30发布,然后Process2从0.70(系统计时器值)等开始.
这称为跟踪,通常在用户请求后在内核中完成.Linux中有几个内核事件跟踪器.尝试
perf sched(man,lwn commit ;也是http://www.brendangregg.com/perf.html#SchedulerAnalysis)perf sched record sleep 2然后perf sched script用来获取日志perf record -e 'sched:sched_process_*' -a sleep 2+ perf script(来自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 record -e sched ./program/ trace-cmd record -e sched_switch ...,trace-cmd report(或安装和使用kernelsharkGUI - https: //lwn.net/Articles/425583/ http://static.lwn.net/images/2011/ks-success.png)sysdig也可以跟踪调度程序......Gregg有一些关于Linux追踪的信息(带有"小马玉米吉祥物"的魔力):http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html(应该有一些)有关跟踪的介绍,请访问https://www.slideshare.net/brendangregg)...
通过监视诸如'/ proc'之类的内核文件夹可以实现这样的事情
没有inotify了/proc(它里面没有真正的目录或文件的真实:/sf/answers/1742911341/),所以你不能监视更改,你只能重新读了一些/ proc中(或/ SYS)定期.
| 归档时间: |
|
| 查看次数: |
1171 次 |
| 最近记录: |