公司买了一台HP G9服务器,配置是双路xeon E5-2640 v3 @2.6GHz ,在任务管理器中显示出32个核心;64g内存;系统是win2008 r2 企业版。程序是公司自己研发的c#计算程序, 数据全部加载到内存,然后做计算。我开一个程序,但是无论我发起8个线程,16个线程,32个线乘,64个线乘做运算,cpu的使用率都无法超过50%,一分钟内偶然间有一次机会突破到55%,然后立刻又下降下来,一般都是在48%-50%之间。我开两个程序运行,每个程序发起16个线乘,cpu使用率依然是在50%。但是在我的 i5 i7 cpu上运行,正常都维持在80%-90%上下的cpu使用率。我想请教一下各位大虾,为什么双路xeon cpu cpu利用率上不了90%?
非常感谢“千里追P ”。我程序有10万套方案,单一方案计算需要耗费2秒左右,全部运算完需耗费数小时,无IO操作,所以方案间的互不影响。每个计算方案的方法都丢到线程池去,由系统的线程池统一管理,换句话说,32条线程一定会有共同存在的时间片,那32个cpu核心就需要一起工作。
从系统的运行角度来说,有的线程已经停止工作,有的线程还没进入工作状态,所以总体cpu无法使用到100%,但是使用到80%是正常的,而且我还发现一个问题:任务管理器中,有固定16个cpu运行在95%以上,另外固定16个cpu运行始终在0%,也就是说系统从来都未给那16个cpu分配计算力。另外固定16个cpu运行始终在0%,也就是说系统从来都未给那16个cpu分配计算力。
我发现问题了,是操作系统识别不了32个cpu,在系统的“引导高级选项”里只能看到16个处理器。有没有朋友有发现同样的问题?如何解决,而且win2008r2企业版官方说明是可以支持超过32颗cpu的。若换win2012 太麻烦了。
非常感谢。我程序有10万套方案,单一方案计算需要耗费2秒左右,全部运算完需耗费数小时,无IO操作,所以方案间的互不影响。每个计算方案的方法都丢到线程池去,由系统的线程池统一管理,换句话说,32条线程一定会有共同存在的时间片,那32个cpu核心就需要一起工作。
从系统的运行角度来说,有的线程已经停止工作,有的线程还没进入工作状态,所以总体cpu无法使用到100%,但是使用到80%是正常的,