如何知道进程的空闲时间

How to know a process's idle time

本文关键字:时间 何知道 进程      更新时间:2023-10-16

这个问题可能是重复的。但我找不到。如何检查进程处于空闲状态的时间。

我的实际问题:

我有一个在solaris-unix X86服务器上运行的进程。在我们的测试服务器中,它在4小时内完成工作。但在我们的客户端服务器上,它需要超过10个小时。我检查了客户端服务器,发现我们的客户端服务器中的配置与我们的测试服务器不同。例如:测试服务器中的虚拟处理器数量为24个,而客户端服务器中只有8个。并且处理器速度也不同。

我怀疑是因为配置的原因,进程实际上没有得到cpu时间,而且我怀疑它大部分时间都是空闲的。

但我只想知道这个过程有多少空闲时间。有什么具体的方法可以做到这一点吗?这个过程是用c++编写的,所以我也将其标记为c++

nmon在www.sourceforge.net可用,但有很多工具

如果你的应用程序是一个cpu野兽,那么你的"空闲时间"可能是上下文切换。在不检测代码的情况下,要了解发生了什么,请尝试pbind将进程锁定到单个cpu,然后运行您的应用程序

time myapp

将给出您的实时时间(墙时间)以及用户和内核的cpu时间。由于进程受到限制,挂墙时间可能会更长,但这将为父进程、LWP进程和子进程提供总cpu。

除此之外,您还可以通过使用procfs(procfs.h)获取cpu信息来检测代码并报告通常更细粒度的信息。您可以编译以启用评测,然后如果认为cpu消耗太高,也可以查看瓶颈在哪里。

处于空闲状态

我不知道你说的"无所事事"是什么意思。你的意思是"被阻止"吗。假设您的计算机负载不重,将用户+系统CPU的总数与所用时间进行比较将得出近似值。