是否可以使用Linux实时监控进程的调度方式?
我正在尝试用RaspberryPi开发一个多进程系统,在这个系统中,我希望监视所有主要进程,以及它们是如何使用Linux进行调度的。也就是说,获取调度程序状态、开始时间、发布时间等。我一直在使用“/proc”文件夹来查找此类信息,但到目前为止,我还没有找到任何真正有用的信息 例如,如果进入/proc/pid/task/pid,您可以看到:是否可以使用Linux实时监控进程的调度方式?,linux,process,linux-kernel,scheduled-tasks,scheduling,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.stati
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
等等。现在,这看起来像是我在做什么,但还不够清楚。
我只想看看进程是如何在核心中调度的。i、 e,进程1在0.30时释放,然后进程2在0.70(系统计时器值)时启动,以此类推
通过监视诸如“/proc”之类的内核文件夹,可以实现类似的功能吗?
如果没有,是否有办法使用其他跟踪工具或Linux调度程序工具来确定这一点
非常感谢您的指导。
请告诉我还有什么我需要提供的
提前谢谢
编辑:使用内核共享,
我想知道,对于其他进程,cpu在什么时候完成每个任务的一次迭代
我只想看看进程是如何在核心中调度的。i、 e,进程1在0.30时释放,然后进程2在0.70(系统计时器值)时启动,以此类推
这称为跟踪,通常在用户请求后在内核中完成。Linux中有几个内核事件跟踪程序。试一试
(,;也)使用perf sched
然后perf sched record sleep 2
获取日志perf sched script
- 其他一些用于跟踪的perf命令,如
+perf record-e'sched:sched_process \*'-a sleep 2
(from)perf script
(;基于trace cmd
-):ftrace
/trace cmd record-e sched./program
,trace cmd record-e sched\u开关…
(或安装并使用trace cmd report
GUI-)kernelshark
- 还有一些特殊的示踪剂,如LTT/LTTng(,)。它有Eclipse的GUI插件(Trace Compass):随时间变化的进程图和CPU图
- 我想,
可能也会跟踪调度程序sysdig
/proc
没有inotify
(它在:)中没有真实的目录或真实的文件),因此您无法监视更改,只能定期重新读取一些/proc(或一些/sys)。hmm很抱歉延迟回复。今天我将尝试这些方法,并让您知道。@mozcelikors,您想从应用程序中自动监视调度,还是需要一些工具来调查手动模式下的调度多次?调查对我很有用。你对perf sched的建议似乎正是我想要的。让我问一下我的担忧:查看perf sched map确实有助于可视化细节,但是我可以获得这些过程的发布、开始和结束时间(用并行计算术语)吗?另外,我是否需要调查几次?我想假设一次ivestigation可以让我了解流程。尝试perf sched script
以获得跟踪事件的完整转储。你可以解析它。另外,trace cmd record-e sched
+kernelshark
和lttng
+lttng Eclipse插件(TraceCompass)将为您提供GUI和事件列表(kernelshark是简单的GUI;TraceCompass是非常高级的GUI,事件之间带有箭头)。这非常有用。谢谢你的建议。老实说,有些人说不可能得到这些信息。但我知道必须有无数的内核跟踪程序才能实现这一点。我将搜索方法,从我得到的东西中得出我需要的东西。