2013-06-12 51 views
2

我们有一个Java应用程序,它始终显示100%的CPU使用率。当我发现top命令发现一些奇怪的结果时,我试图找出是否有一些主导线程。top命令显示线程 - 这是一种延迟?

如果我运行top,它显示了一个 java进程有100%的CPU时间。然后我输入H来显示线程,它开始于显示几个每个都有100%的Java线程。但是,在下次刷新时,它显示了不同的批次的几个Java线程,每个线程都有100%的CPU。下一次刷新,另一批。这一直持续着几个刷新周期,通过100个CPU的100个线程。最后,它解决了十几个Java线程,每个线程都有大约10%的CPU时间。这个“最终”线程集合是相同的线程,一开始就显示100%的CPU时间,但现在它们每个只有10%。如果直接运行top -H,我直接进入最终设置。

我的直觉是Java线程的100%CPU有些虚假。但我无法找到解释。

我在Debian Wheezy框中。

+0

今天刚刚获悉,'top'命令计算指数加权移动平均(EWMA)。但仍然没有解释我所看到的。 – neurite

回答

1

随着Perl线程我已经得到了超过100%,所以我认为顶级绝对不是线程感知。其实不是真的-h选项我得到这样的:在15分钟的窗口

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND                       
18118 v807576 18 0 653m 22m 2164 R 96.3 0.1 0:02.98 mt_analyze_et                     
18124 v807576 18 0 653m 22m 2164 R 96.3 0.1 0:02.98 mt_analyze_ets                     
18117 v807576 18 0 653m 22m 2164 R 95.3 0.1 0:02.95 mt_analyze_ets                     
18121 v807576 18 0 653m 22m 2164 R 94.7 0.1 0:02.93 mt_analyze_ets                     
18127 v807576 18 0 653m 22m 2164 R 94.3 0.1 0:02.92 mt_analyze_ets                     
18133 v807576 18 0 653m 22m 2164 R 94.3 0.1 0:02.92 mt_analyze_ets                     
18136 v807576 18 0 653m 22m 2164 R 94.3 0.1 0:02.92 mt_analyze_ets                     
18145 v807576 18 0 653m 22m 2164 R 94.0 0.1 0:02.91 mt_analyze_ets                     
18142 v807576 18 0 653m 22m 2164 R 93.1 0.1 0:02.88 mt_analyze_ets                     
18130 v807576 18 0 653m 22m 2164 R 92.1 0.1 0:02.85 mt_analyze_ets                     
18148 v807576 18 0 653m 22m 2164 R 90.8 0.1 0:02.81 mt_analyze_ets                     
18116 v807576 18 0 653m 22m 2164 S 5.2 0.1 0:00.16 mt_analyze_ets