Windows中的Opteron 6272 CPU限制

我正在尝试在我的新HP Proliant服务器上testingmultithreading应用程序,该服务器有2个Opteron 6272和64gb内存。

当我在台式机(一系列i7和Xeon X5675处理器)上运行应用程序时,应用程序将使所有内核的利用率达到接近100%。

当我在服务器上运行应用程序时,无论我运行多less个线程,应用程序的总CPU利用率都在20-25%左右。 也就是说,如果我使用32个线程运行,则所有32个内核都将挂起20%左右,如果我运行16个线程,则会挂起40%左右,等等。

  1. 起初我怀疑这与操作系统有关,所以我在服务器上安装了Windows 7,以使桌面和服务器具有相同的操作系统。
  2. 然后我怀疑这是硬件,我把BIOS中的电源pipe理改为高性能。 尽pipe这确实增加了基准时间,但同样的20%利用率问题仍然存在。
  3. 我可以使用y-cruncher基准testing100%的全部32个内核。 我的自定义基准是用.NET编写的,这可能与它有什么关系?

我为这个问题困惑。 任何人都有什么可能导致这个问题的想法?

如果您的应用程序正在处理大量数据,请尝试遵循数据path – 如果input数据是从networking馈送的,请检查可能的延迟,带宽限制或传输错误。 您已经检查了磁盘I / O,否则这可能是瓶颈的候选对象。

最后但并非最不重要的,因为它是一个高度multithreading的.NET应用程序,所以应该确保使用服务器垃圾收集 ,否则可能会看到本文中从堆栈溢出中描述的奇怪负载特性。