2017-03-02 57 views
2

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

例如,如果你进入的/ proc/PID /任务/ 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完成一次迭代每个任务的时候。

回答

2

我想看看如何在核心中调度进程。即,处理1释放的0.30,则过程2在0.70开始时(系统定时器值)等

这就是所谓的跟踪,并在内核从用户请求之后通常进行。在Linux中有几个内核事件追踪器。尝试

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

是这样可以通过监控内核文件夹,如“的/ proc”

没有inotify/proc(它里面没有真正的目录或真实的文件:https://stackoverflow.com/a/24898733),这样你就可以不监视更改,只能定期重读一些/ proc(或某些/ sys)。

+0

嗯抱歉,延迟回复。我今天会尝试这些,并让你知道。 – mozcelikors

+0

@mozcelikors,您是否想要自动监控应用程序的调度,或者您需要一些工具来多次调查手动模式下的调度? – osgx

+0

调查为我工作。您的perf perf sched的建议看起来像我想要的。让我问一下我的担忧:看到perf sched map确实有助于可视化细节,但是我可以获得这些进程的发布,开始和结束时间(并行计算术语)。另外,是否需要多次调查?我想假设一个创举应该让我了解流程。 – mozcelikors

相关问题