我正在尝试在我的新HP Proliant服务器上testingmultithreading应用程序,该服务器有2个Opteron 6272和64gb内存。
当我在台式机(一系列i7和Xeon X5675处理器)上运行应用程序时,应用程序将使所有内核的利用率达到接近100%。
当我在服务器上运行应用程序时,无论我运行多less个线程,应用程序的总CPU利用率都在20-25%左右。 也就是说,如果我使用32个线程运行,则所有32个内核都将挂起20%左右,如果我运行16个线程,则会挂起40%左右,等等。
我为这个问题困惑。 任何人都有什么可能导致这个问题的想法?
如果您的应用程序正在处理大量数据,请尝试遵循数据path – 如果input数据是从networking馈送的,请检查可能的延迟,带宽限制或传输错误。 您已经检查了磁盘I / O,否则这可能是瓶颈的候选对象。
最后但并非最不重要的,因为它是一个高度multithreading的.NET应用程序,所以应该确保使用服务器垃圾收集 ,否则可能会看到本文中从堆栈溢出中描述的奇怪负载特性。