早上好,
首先,我在Windows7上没有四核,而是一个i5 (双核)。当我的java程序启动(Eclipse上的单线程)并执行无限的计算时,"windows task performance panel“从来没有显示cpu使用率超过25-30%。
我可以理解在四核(一个线程在一个核上运行)上的情况,但在这里我预计会有50%。事实上,Windows显示了4个cpu曲线,因此我假设一个核心在逻辑上被分成2个,但最终我的计算机只有两个物理核心。
那么为什么我的上限是25%呢?(其他线程正在运行且未被监控,错误信息来自监控...etc...options未在Jvm中激活)
感谢您对jcl的帮助
发布于 2013-08-09 20:26:57
您的处理器使用hyper-threading,因此这2个物理核心变成了4个逻辑核心。
现在你只有一个线程,它只能使用这些逻辑核心中的一个--即你可用逻辑核心的25%,因此要封顶。如果您将应用程序更改为使用多线程(假设这在您的特定任务中是可行的),那么您将看到使用了更多的内核。
你可能会发现,你可以在BIOS中关闭超线程,在这一点上,我预计Windows会报告2个核心,而不是4个。然后,你可能会发现你的应用程序比以前运行得更快-但在计算过程中会有很多不同的因素。(现代处理器相当智能,可以自动做各种事情--例如,如果检测到少量繁忙的内核,就会关闭未使用的内核,并提高仍在使用的内核的时钟速度。)
https://stackoverflow.com/questions/18146611
复制相似问题