如何知道进程的空闲时间
How to know a process's idle time
这个问题可能是重复的。但我找不到。如何检查进程处于空闲状态的时间。
我的实际问题:
我有一个在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的总数与所用时间进行比较将得出近似值。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 努力将整数转换为链表。不知道我在这里做错了什么
- 从持续时间构造std::chrono::system_clock::time_point
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- 系统时间从何而来?
- 您怎么知道长时间的长度
- 符合C++的实现如何指示它不知道当前日期和时间?
- 我怎么知道我的服务器是否在一段时间内没有连接
- 如何知道Solaris上GMT和C 的本地时间的差异
- 如何知道编写文件的时间已经完成
- 嵌套循环的时间复杂度:cn(n+1)/2从何而来
- 我怎么知道所有线程使用了多少 CPU 时间
- C++中内存泄漏本身存在多长时间,以及等效的Java程序有何不同
- 给定一个日期/时间作为字符串,知道当时是否是 DST 的最佳方法是什么
- 我怎样才能知道在C/C++代码的每一行上花费了多少时间
- 如何知道进程的空闲时间
- Valgrind-callgrind Profiler:如何知道哪个函数需要更多的时间
- 如何知道你的电脑在屏幕保护程序或显示器/屏幕关闭多少时间