2017-07-13 49 views
3

我在Ubuntu上运行多线程Java应用程序。我想看CPU的使用情况。哪个CPU使用率反映真实的图片?

我从“系统监视器”看到的读数大约是42%。这是否意味着大多数CPU没有被充分利用?我有8个内核。但是,如果我在'top'命令中看到它,则表明我的Java应用程序正在使用%300以上的CPU(一个PID)。

这反映了我CPU利用率的真实情况?我想看看我的Java应用程序是否以及如何使线程受益。

+0

听起来好像你的程序使用了大约3个核心的CPU(一个核心的〜300%,或者整个8核心盒子的〜42%)。我会说这两个数字大体上是一致的。 – NPE

+1

似乎“系统监视器”在满载下使用100%= 8个内核,而顶端在满载下使用100%= 1个内核。所以你似乎最多有3个核心。 –

+0

可能42%的数字与处理器相关,而300%(8 x 42 = 336)与单个内核相关。 –

回答

4

默认情况下,Linux上的顶层以所谓的IRIX模式运行。

在IRIX模式下,1个完全使用的核心是100%,3个核心是300%。 关闭IRIX模式时,1/8充分利用的核心是12.5%。 这意味着最高显示超过300%,并在“系统监视器”40%。

您可以在顶部运行时切换IRIX模式,使用Shift + i。这将使数字相匹配。

+0

太棒了!这是否意味着我仍然可以增加线程的数量来加速我的应用程序? – user697911

+0

是的。在你的例子中,看起来你有大约5个内核未被充分利用。 –

+0

我将线程数从10增加到20,CPU使用率仅从40%增加到50%。我会尝试50个线程。但是我需要等待我的应用程序是否在更短的时间内完成。 – user697911