多CPU的利用率如何提高?

来源:百度知道 编辑:UC知道 时间:2024/05/23 15:59:55
现在有一台双CPU双核的工作站,运行数据分析程序,可是发现CPU的利用率一直不高,打开任务管理器,发现大部分的利用率基本上都集中在一个CPU内核上,其他三个CPU内核基本空闲。
请教高手,如何提高CPU的利用率,让其他CPU也一起工作,提高工作的效率???

楼上两位的答案没有回答到关键上.单任务如果使用的是多线程或多进程程序设计同样能使两个核的利用率比较均衡,达到提高cpu利用率从而减少数据处理所需时间的效果.
主要是因为过去的CPU都是单核的,程序员基本上都没有多核程序设计的概念.很多软件还没有充分的应用多核的思想.
一个程序有的部分很容易分成多线程,比如应用软件的界面和数据处理分成独立的两个线程.但是有的过程很难简单的分成两个线程,其间有许多过去PC上程序员们没有面对过的问题(少数精于网络分布式计算的程序员如google的后台数据系统,才遇到过这些问题,因为这些程序员面临的是组织网络上几万甚至几十万台服务器协同计算),特别是象你所说的数据处理的程序.
这些程序在设计的时候就是按照顺序结构编程的.如ABCD顺序执行,先做完A才能由A任务的结果接着做B,然后再做C,最后做D.而象A,B,C,D这样的原子任务不能由多个CPU同时工作.所以会出现你所说的一个CPU很忙,另一个很闲的情况.
这种情况可以称为pc级软件业的一场风暴.目前仅仅是操作系统和编译器可以对这些程序进行适度的并行优化,从应用软件设计上来说,绝大多数软降工程师还没能做到充分应用多核系统来进行程序设计,而是严重的依赖于编译器和操作系统帮他们做优化.
引用一段多核技术对软件工业的冲击:
"可能所有编写过软件的人都知道,象使用VB、C#、Delphi等语言或开发工具开发程序是非常容易的,只需要在IDE中新建一个工具,再建几个Form,然后拖上一些控件就可完成一个看似功能非常强大的程序。这些程序也许可以完成非常复杂的功能。它们也许可以在以前传统的单核CPU上运行得非常好。但如果这种程序在新问世的多核CPU上运行,所表现出来的效率并不一定有单核CPU的效率高。这并不是程序中的某些算法不适应多核的环境,而是由于这种程序从根本上只使用了一个主线程来运行(在传统的程序中都是由一个Main函数开始执行程序,然后按顺序执行相应的代码),所以同一个程序实例在同一时间只能运行在一个CPU核上,因此,不管有多少个核,也只能有一个核在发挥作用。
真是怕什么就来什么,目前世界上所存在的软件绝大多数是基于单线程的,这就意味着虽然多核从理论上可以提高效率,但就现在的大多数软件而言,还无福享受这种待