Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哪种CPU使用情况反映了真实情况?_Java_Linux_Multithreading_Ubuntu_Cpu Usage - Fatal编程技术网

Java 哪种CPU使用情况反映了真实情况?

Java 哪种CPU使用情况反映了真实情况?,java,linux,multithreading,ubuntu,cpu-usage,Java,Linux,Multithreading,Ubuntu,Cpu Usage,我正在Ubuntu上运行一个多线程Java应用程序。我想看看CPU的使用情况 随着时间的推移,我从“系统监视器”中看到的读数约为42%。这是否意味着大部分CPU没有得到充分利用?我有8个核 然而,如果我在“top”命令中观察它,它会显示我的Java应用程序使用了超过%300个CPU(一个PID) 这反映了我CPU利用率的真实情况?我想看看我的Java应用程序是否以及如何从线程中获益。默认情况下,top on Linux以所谓的IRIX模式运行 在IRIX模式打开时,1个充分利用的内核为100%,

我正在Ubuntu上运行一个多线程Java应用程序。我想看看CPU的使用情况

随着时间的推移,我从“系统监视器”中看到的读数约为42%。这是否意味着大部分CPU没有得到充分利用?我有8个核

然而,如果我在“top”命令中观察它,它会显示我的Java应用程序使用了超过%300个CPU(一个PID)


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

默认情况下,top on Linux以所谓的IRIX模式运行

在IRIX模式打开时,1个充分利用的内核为100%,3个内核为300%。 IRIX模式关闭时,1/8的充分利用率为12.5%。 这意味着在顶部显示超过300%,在“系统监视器”中显示超过40%


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

听起来您的程序使用了大约3个内核的CPU(一个内核约300%,或整个8核机箱约42%)。我想说这两个数字大致上是一致的。似乎“系统监视器”在满负载下使用100%=8个内核,而top在满负载下使用100%=1个内核。因此,您似乎有大约3个内核被最大化。可能42%的数字与处理器有关,而300%(8 x 42=336)与单个内核有关。“大约3个内核被最大化”这是否意味着其他5个内核相当空闲,我可以增加应用程序将使用的线程数以提高速度?@NPE,您的意思是300%用于一个内核?其他7个内核空闲吗?太棒了!这是否意味着我仍然可以增加线程数以进一步加快我的应用程序?是的。从您的示例来看,似乎有大约5个内核未得到充分利用。我将线程数从10个增加到20个,CPU使用率仅从40%增加到50%。我将尝试50个线程。但我需要等待,看看我的应用程序是否真的在更短的时间内完成。不幸的是,时间没有缩短,即使CPU最好与更多线程一起使用。完成任务的时间肯定是比CPU负载更好的性能指标。如果您添加越来越多的线程,您可能会遇到这样的情况(例如,由于IO成为瓶颈),甚至会降低性能(例如,由于更高的同步开销、线程调度开销等)。