超难问题,大家自从写程序时可能都还未碰到过的问题。。。。 ( 积分: 50 )

  • 主题发起人 主题发起人 LongHai
  • 开始时间 开始时间
L

LongHai

Unregistered / Unconfirmed
GUEST, unregistred user!
老兄:
您好!
首先感谢您来观看我的贴子,如果您以前有碰到过这问题,您大可不必吝涩您的键盘,多敲几个字表示支持,如果没有碰到过这个问题,希望大家多多动脑多多发言发表你们的看法,以表示支持,在下在这里先谢过大家!!
我碰到的问题是这样的,我有一个程序,这个程序工作时会启动一百个线程,每个线程里都是一个循环不停的在工作,原来用一个CPU的服务器在运行CPU利用率太高了,支持不了,现在换了一台DELL服务器两个CPU支持超线程,现在系统里变成四个CPU的服务器在运行,但是我觉得奇怪,为什么CPU利用率很低只有百分之8左右,然而每一个线程运行的速度变慢了还不能原来只有一个CPU的机器呢,不知为何,也不知如何提高CPU的利用率?
 
老兄:
您好!
首先感谢您来观看我的贴子,如果您以前有碰到过这问题,您大可不必吝涩您的键盘,多敲几个字表示支持,如果没有碰到过这个问题,希望大家多多动脑多多发言发表你们的看法,以表示支持,在下在这里先谢过大家!!
我碰到的问题是这样的,我有一个程序,这个程序工作时会启动一百个线程,每个线程里都是一个循环不停的在工作,原来用一个CPU的服务器在运行CPU利用率太高了,支持不了,现在换了一台DELL服务器两个CPU支持超线程,现在系统里变成四个CPU的服务器在运行,但是我觉得奇怪,为什么CPU利用率很低只有百分之8左右,然而每一个线程运行的速度变慢了还不能原来只有一个CPU的机器呢,不知为何,也不知如何提高CPU的利用率?
 
看过一篇报道,说windows在对双处理器超线程分配任务时有些问题,因为系统把处理器1认成CPU0,CPU1,处理器二认成CPU2,CPU3,分配任务时按照0,1,2,3的顺序分配,优先把任务分到第一个处理器(CPU0,CPU1),应该按照处理器一,处理器二再处理器一,处理器二的顺序分配)。这样双超线程处理器性能比双处理器没有超线程性能降低。
 
另外,你那么多线程,肯定会用到同一个资源,这样各个线程之间等待资源会降低速度。
 
完全独立的运行,没有用到同一个资源,就是效率提不上去?
 
不是说简单的多线程就会利用多处理器.
利用多处理器:
第一,要操作系统支持,
第二,程序要支持还要为多处理器特别写代码才行
 
我想问一下上面的楼主,有那样的代码吗?
 
我觉着是不是需要在汇编层面上对多CPU进行特别的优化呀
毕竟多处理器和Intel的流水线的机制不是很一样
 
理想的状态是一个线程的所有运算由一个CPU完成,一个CPU负责N个线程,如果一个线程的运算分散到几个CPU来完成的话,可能是要比单CPU还要慢,查查资料看是不是需要对多CPU进行代码上的优化。
 
后退
顶部