Update:在top中,在我按下shift+H (它显示线程而不是进程)之后,它将该线程显示为R,并使用100%的CPU时间,这正是我在发布这个问题之前所期望的。
因为top进程有多个线程,每个线程可能处于不同的状态,那么Linux 命令是如何确定进程状态的?
如果我运行以下代码,
public class Test{
public static void main(String[] args){
while (true){
int n = (int)(Math.random() * 1000);
}
}
}
然后,运行top显示进程状态为S,并且使
“man top”所说的是: RES = CODE + DATA
q: RES -- Resident size (kb)
The non-swapped physical memory a task has used.
RES = CODE + DATA.
r: CODE -- Code size (kb)
The amount of physical memory devoted to executable code, also known as the 'text resident set' size or TRS.
s: DATA -- Data+St
我使用在Linux上作为守护进程运行一个Java程序。
守护进程“随机”崩溃,只显示以下消息:
jsvc.exec error: Service did not exit cleanly
这是jsvc ()中代码的相关部分:
while (waitpid(pid, &status, 0) != pid) {
/* Waith for process */
}
/* The child must have exited cleanly */
if (WIFEXITED(status)) {
status = WEXITSTATUS(status);
// Cl
我在跑
top -H -b -n 1
在带有java应用程序的Linux上
我得到了标题的结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
对于每个thread,我看到的%CPU是一个真正的CPU,这意味着它没有考虑线程在等待锁等方面浪费的时间,所以这纯粹是线程在cpu上花费的时间。
我需要获得进程中所有线程的CPU利用率指标。
操作系统= Redhat linux
使用POSIX编程语言= C++
需求=需要每隔几秒钟不确定地采集一次样本,而不仅仅是一次快照。
约束=不允许在线程中编写附加代码。
我知道您可以使用"top“命令,但是还有其他方法吗?有"ps“的旗子吗?
提前谢谢你的帮助。