Linux上的进程调度数据

Linux上的进程调度数据

我正在做一个关于操作系统的项目,需要操作系统的进程调度数据。数据必须包括短期调度程序和长期调度程序中的所有进程的列表,以及每个进程的 CPU 时间片和内存要求。我还需要有关其他进程何时以及由什么进程被抢占的数据。有没有办法在 Linux 中收集所有这些数据?我怎样才能做到这一点?

在linux源代码中,有一个结构task_structinclude/linux/sched.h.有没有办法获取该结构中每个对象的状态?

答案1

如果您需要深入的日程安排信息,您可以使用以下工具之一 -

  1. 性能
  2. 系统点击
  3. dtrace(我不知道linux端口的状态是什么)
  4. 系统挖掘

所有这些都可以利用内核挂钩来显示上下文切换、中断、I/O、系统调用等事件。

答案2

您可以使用以下命令获取有关进程、调度程序以及操作系统和硬件的其他组件的大量内部信息

cat /proc/...

哪里……可以有很多东西。例如,它可以是一个进程ID,后面跟着很多特定的信息请求,或者调度程序调试信息请求,例如:

cat /proc/sched_debug

要查看完整的选项列表,请键入ls /proc。您将看到一长串进程 ID 号,还有一些有趣的名称,例如 sched_debug、cpuinfo、meminfo、uptime 等。

这一切都归功于虚拟文件系统进程文件系统 您可以阅读更多相关内容这里

另一个有用的命令是:

top

这将显示有关进程如何调度、内存使用情况等的实时信息。

答案3

ps命令是一个很好的起点。它允许您指定为一组选定进程(可能是所有进程)显示哪些信息。您可以阅读该man页面以获取有关您可以获得的可用信息的详细信息,这些信息被指定为选项的标志-O

以下是您可能想要的开始:

 ps -O "%mem nice state upr pri cpu"

相关内容