如何在运行时监视进程的资源使用情况(时间,内存)?

时间:2011-07-04 05:28:46

标签: c# c++ winapi

我正在尝试在运行时监视进程的资源使用情况(时间,内存,系统调用),在ptrace,setrlimit等Linux中是否存在apis? 感谢

3 个答案:

答案 0 :(得分:0)

有几种方法。首先,您需要将流程作为低完整性流程运行。这与Internet Explorer的运行方式类似;此类进程与其他进程,注册表和文件系统隔离(选定的低完整性目录除外)。

其次,您可以控制可执行文件。您应该将允许使用的DLL和函数列入白名单。黑名单中CreateProcess的变体太多了。这甚至可能需要重建CRT以消除危险的功能。

沙盒C#代码更容易一些。您显然必须将其限制为安全代码。 PEVerify可以提供帮助。

答案 1 :(得分:0)

您可以使用ProcMon,Process Explorer,ProcessMonitor和Performance monitor等系统工具进行此类分析。跟踪系统调用实际上是一项艰巨的任务,应用程序将进行数百次系统调用。我认为你必须使用像Inter VTune Analyzer这样的工具来进行这种类型的深度剖析。

答案 2 :(得分:0)

根据您在C / C ++(或C#到P / Invoke)中的需求,有许多API:

例如,开始寻找,

处理CPU时间(UM / KM): http://msdn.microsoft.com/en-us/library/ms683223(VS.85).aspx

处理VM(工作集): http://msdn.microsoft.com/en-us/library/ms683226(v=VS.85).aspx

处理I / O数据: http://msdn.microsoft.com/en-us/library/ms683218(v=VS.85).aspx

您可以尝试这些开始。