双CPU的机器任务怎么调度?
第一次来这个版
不知道下面我问的这个问题是否适合发在这个版上
换了个机器,主板上两个cpu,早几年的intel至强cpu,都是单核吧
现在我后台运行几个计算程序,都要算几个小时
但是我用top命令查看cpu,发现使用率就在50%左右
是不是另外一个cpu没有被利用?
我应该怎样提交程序运行才能充分利用两个cpu
好像有个nice的命令来进行进程调度
不明白进程,线程调度这些东西
请大家给我讲讲,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
你一个调度单位(进程或者线程)怎么跑两个核?
建议LZ注意以下几点:
1. 你的几个计算程序是封闭纯计算还是有跟其它程序和IO的交互的?
2. 你的双CPU的关系是可以同时工做的还是CPU 级HA的?
3. 你的程序的运行环境大概是什么样的?
4. 你的计算程序大致的情况?
多个不同的计算程序可在不同的CPU上并行,当然有IO和无IO的效果又有区别,对与同一个程序,要想利用多CPU,那就要处理好粒度问题了,关键是你的一个任务里是否有可以并行的单元,否则多CPU是帮不上忙的!
我这个机器用来计算的都是串行的程序
并行的计算在机群上通过MPI并行
在这台双cpu的机器上,具体的情况是做一些数据分析什么的,计算时间半个小时到两三个小时
一般是同一个程序,在不同目录下都有拷贝,运行的时候参数不一样,每个程序运行相互独立。
或者不同的程序做不同的数据计算和分析。
那应该程序间至少可以并行. 建议观察一下每个CPU在运算过程的波动情况!
程序间至少可以并行:
这个怎么理解?是说写成并行代码?这个不好弄,不同的参数,计算时间相差很大,线性,有的是平方时间复杂度。
观察一下每个CPU在运算过程的波动情况
弱问:怎么查看每个CPU的波动情况?
我用top命令,没带任何参数,没看到多个CPU。下面这个链接里面,列出了4个CPU的情况?
http://hi.baidu.com/kyako/blog/item/79e3425425731f54574e0025.html
另外一点不理解:
我在这台机器上后台运行一个程序的时候,cpu显示利用在25%左右
同时运行两个程序的时候,cpu显示利用在50%左右
同时运行三个程序的时候,cpu显示利用在75%左右
同时运行四个程序的时候,cpu显示利用在100%左右
同时运行五个程序的时候,cpu显示利用在100%左右
这似乎是4个cpu一样?
而机群上其它的节点和这台机器硬件一样,任务通过pbs提交上去的,也是串行程序,每个节点2个cpu,
我登录过去, top发现两个计算进程,cpu利用率为100%左右。
pbs提交任务,pbs系统是怎么把两个计算任务分别分配给两个CPU的?
不会是有hyperthreading吧。。。
程序间至少可以并行是指不同的程序在不同的CPU上RUN以提高并行性.
程序运行时,若CPU占用是25%时,分下列几种情况:
1个CPU: 没有用满
2个CPU: 没有用满
4个CPU: 可能用满了一个CPU
程序运行时,若CPU占用是50%时,分下列几种情况:
1个CPU: 没有用满
2个CPU: 可能用满了一个CPU
4个CPU: 可能用满了两个CPU
程序运行时,若CPU占用是75%时,分下列几种情况:
1个CPU: 没有用满
2个CPU: 可能用满了一个CPU
4个CPU: 可能用满了三个CPU
为简单其间可打开linux 上自带的系统监视器查看CPU的波动.
[ 本帖最后由 system888net 于 2008-5-21 16:08 编辑 ]
调度单位间同步使得你的CPU可能不能任何时候都在疯狂的计算