|
|
发表于 2006-2-9 01:26:21
|
显示全部楼层
Post by yggdrasil
可以使用top,可以发现只有一个CPU工作是100%,还有一个没到,大概30%左右
也可以使用gnome的applet,可以发现CPU指示停留在一半的位置
还有一种情况,进程在创建的时候,会自动判断应该使用哪个CPU,但是,进程不能在运行的时候切换CPU的,所以会发生2个wine loader会占用同一个CPU,比较少见,但比较的惨。
为了充分利用已经hot的cache,有可能出现CPU间的load不平衡
不用gnome,没见过什么样的applet,不过想必应该有两个CPU的图标吧,两个都是50%?你已经开的进程能保证两个CPU%100的忙么?如果只有一个runnable的进程,该进程只有一个线程,即便是在蓝色基因(65535个CPU)上也只能有一个CPU是运行着的,其他都是idle
“进程不能在运行的时候切换CPU的“,这话说的太对了,对到就像说人都有两只眼睛
既然讨论这个层次的问题,那我们还是严谨一点
时间片的概念想必应该知道吧
想必你是想表达:进程一旦在某个CPU上被运行了,那么以后就不会在别的CPU上运行了
不过这个想法是错的
可以参考内核源代码里kernel/sched.c里的load_balance()函数
HT在Linux(这里没有必要提具体的发行版,因为任何发行版都不能阻止用户使用自己编译的内核)里自然是可以得到充分利用的
不过要用合理的benchmark来测试 |
|