多核和CPU使用率

时间:2011-01-10 19:11:25

标签: multicore cpu-usage

我有一个i3 intel CPU(带超线程的双核)
我通常使用侧边栏小工具监控我的cpu使用情况,该小工具显示每个核心用法在(0 - 3)的单独行中。
但最近我注意到根本没有使用核心编号0 经过一些搜索,我碰到了一个主题,解释数字和核心0,2是真正的核心,而1,3是超线程核心的想法,但据说这意味着我的CPU真正的核心永远不会被使用甚至我的另一个核心是无用的 并且阅读更多我碰到了multi-core-cpu-single-thread-behaviour-not-achieving-100,表示切换发生了,但这仍然没有回答上面的问题,真正的核心0和为什么只使用1个核心。

http://img641.imageshack.us/img641/8837/cpuusage.png

你可以看到正常的CPU使用情况,核心0,2,3发生了什么,为什么它们不被其他程序使用,为什么即使很多程序正在运行,也只有1个核心活跃。

(所有进程都在使用所有核心,通过亲和力进行检查)

2 个答案:

答案 0 :(得分:1)

对于超线程,一个核心上的逻辑CPU都是等效的。它不是真实的,第二个是超线程的。两者都共享相同的物理核心。完全没关系使用哪一个。最好先在不同的物理内核上调度线程,并且只在使用所有物理内核时,在同一内核上使用第二个逻辑CPU,这看起来就像你描述的那样。

答案 1 :(得分:0)

也许是因为没有更多的处理需要计算能力,并且因为SIBLING级别的调度被认为更昂贵。也就是说,为了简单起见,让我们考虑工作密集型流程的流程将首先分配给不同的核心,然后再将核心(一组N个线程)与另一个程序“重载”。换句话说,一个6芯4线程机器通常以0,4,8,12,16,20,1,5,9,13,17,21,2,6,10的顺序填充24个线程。 ,14,18,22,3,7,11,15,19,23。(由于“自发的”过程迁移,当然可能出现轻微的偏差。)

并不是真的只使用一个线程:你自己的图形显示Core 3和3)和Core 4 [sic](它的线程3和4)使用,1%和2%。您在流程列表中看到的大多数流程甚至都没有运行,只是睡觉了。