为python中的进程编写内核模式分析器

时间:2009-05-28 19:37:55

标签: python kernel

我想在编写以内核模式运行的“进程分析器”时寻求一些指导。我要求内核模式分析器,因为我运行大量的应用程序,我不希望我的分析器被换出。

当我说“进程分析器”时,我的意思是监视进程的资源使用情况。包括线程的使用及其统计信息。

我想在python中写这个。请指出一些模块或有用的资源。

请为我提供指导/建议。

谢谢,

编辑:::想补充一点,目前我的兴趣是只为linux编写。然而,在我建立之后,我将不得不支持窗户。

4 个答案:

答案 0 :(得分:7)

在Python中执行进程监视部分非常困难,因为python解释器不在内核中运行。

我怀疑有两种简单的方法:

  1. 使用/ proc文件系统(如果你有)(你没有提到你的操作系统)
  2. 如果您有dtrace,请使用dtrace(再次,没有操作系统,谁知道。)

  3. 好的,在编辑后跟进。

    首先,你无法编写在内核中运行的代码,在python中,并且可以在Linux和Windows之间移植。或者至少如果你这样做,这将是一个永远生活在荣耀中的黑客。

    尽管如此,如果您的目的是处理Python,那么有许多Python工具可用于在运行时从Python解释器获取信息。

    如果您希望通常从其他进程获取进程信息,那么您将需要检查各种OS API中可用的选项。 Linux有一个/ proc文件系统;这是一个有用的开始。我怀疑Windows有类似的API,但我不知道它们。

    如果你必须编写内核代码,你几乎肯定需要用C或C ++编写它。

答案 1 :(得分:3)

尝试让python在内核空间中运行!

使用现有工具并使其吐出可以被吸收到Python中的XML会更好。我不想将Python解释器移植到内核模式(这听起来很糟糕)。

/ proc选项听起来不错。

一些代码代码,用于读取proc信息以确定内存使用情况等。应该让你去:

http://www.pixelbeat.org/scripts/ps_mem.py 使用Python通过/ proc / smaps 读取进程的内存信息,如charlie建议的那样。

答案 2 :(得分:0)

你看过PSI了吗? (http://www.psychofx.com/psi/

“PSI是一个Python模块,提供对实时系统和流程信息的直接访问.PSI是一个Python C扩展,可以直接从系统调用中提供对系统信息的最有效访问。”

它可能会给你你想要的东西。 ....或者至少是一个起点。


编辑2014:

我建议您查看psutilhttps://pypi.python.org/pypi/psutil

psutil得到了积极维护,并具有一些漂亮的过程监控功能。 PSI似乎有点死(2009年最后一次发布)。

答案 3 :(得分:0)

你对其他答案的一些评论表明你是一个相对缺乏经验的程序员。因此,我强烈建议您远离内核编程,因为即使是有经验的程序员也很难。

你为什么要写一些

  • 是一个非常复杂的系统(只看现有的分析基础架构及其复杂程度)
  • 无法在python中完成(我不知道任何允许在内核模式下执行python的内核)
  • 已存在(Linux上为oprofile