我需要获得进程中所有线程的CPU利用率指标。
操作系统= Redhat linux
使用POSIX编程语言= C++
需求=需要每隔几秒钟不确定地采集一次样本,而不仅仅是一次快照。
约束=不允许在线程中编写附加代码。
我知道您可以使用"top“命令,但是还有其他方法吗?有"ps“的旗子吗?
提前谢谢你的帮助。
底线是,当Linux内核吃掉我们拥有的所有可用内存时(我知道它完全可以使用,内存仍然可用并可以回收:https://www.linuxatemyram.com/),但甚至在此之前,Linux内核就触发vmpressure事件,由Android用来检测OOM情况并开始杀死用户进程。
我特别在Android 9和linux内核中遇到了这个问题:
Linux version 4.14.65-tcc (dimorinny@dimorinny-pc) (gcc version 4.9.x 20150123 (prerelease) (GCC)) #6 SMP PREEMPT Fri Nov 13 16:
我在跑
top -H -b -n 1
在带有java应用程序的Linux上
我得到了标题的结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
对于每个thread,我看到的%CPU是一个真正的CPU,这意味着它没有考虑线程在等待锁等方面浪费的时间,所以这纯粹是线程在cpu上花费的时间。