Performance CPU利用率和线程

Performance CPU利用率和线程,performance,configuration,Performance,Configuration,我们在一个客户站点上有一个事务密集型流程,运行在一个具有四个处理器的四核服务器上。该过程旨在利用每一个可用的核心。所以在这个安装中,我们获取一个输入队列,将其除以16,然后将队列的每一部分分配给一个核心。它运行良好,能够跟上盒子上的交易量 看看机箱上的CPU利用率,它似乎从未超过33%。现在我们有了一个新客户,其数量至少是现有客户的两倍。我们中的一些人认为,由于CPU使用率远远低于最大利用率,我们应该使用相同的配置 其他人则声称cpu利用率和事务处理速度之间没有直接关系,因为底层软件模块的逻辑是

我们在一个客户站点上有一个事务密集型流程,运行在一个具有四个处理器的四核服务器上。该过程旨在利用每一个可用的核心。所以在这个安装中,我们获取一个输入队列,将其除以16,然后将队列的每一部分分配给一个核心。它运行良好,能够跟上盒子上的交易量

看看机箱上的CPU利用率,它似乎从未超过33%。现在我们有了一个新客户,其数量至少是现有客户的两倍。我们中的一些人认为,由于CPU使用率远远低于最大利用率,我们应该使用相同的配置

其他人则声称cpu利用率和事务处理速度之间没有直接关系,因为底层软件模块的逻辑是基于可用内核的数量,为新客户机提供一个具有相应更多内核的机箱,以适应不断增加的通信量是有意义的

有人知道在这种情况下谁是对的吗


谢谢,

要为新客户确定最佳配置,了解CPU使用率低的原因至关重要

原因很可能是以下原因之一:

  • 您的进程受到内存带宽的限制。在这种情况下,如果主板支持,更快的RAM将有所帮助。如果可能,重新设计以限制处理期间访问的数据量将提高性能。添加更多的CPU内核本身对提高性能没有任何作用

  • 您的进程受到磁盘I/O的限制。使用更快的磁盘连接(SATA等)和/或升级到SSD可能会有所帮助,但更多的CPU电源不会

  • 您的进程受到同步争用的限制。在这种情况下,为更多内核添加更多线程甚至可能会适得其反。在这种情况下,重新设计算法可能会有所帮助

话虽如此,我也看到过这样的情况,即在现代处理器(Core i7等)上,肯定是CPU限制的进程无法实现100%的CPU使用率,因为在某些与turbo boost相关的情况下,task manager将显示不到100%

正如9000所说,您需要找出负载下的瓶颈是什么。Perfmon可能会提供足够的数据来找出答案


另一个事后思考:您可以将现有机器上的进程限制为部分内核(但仍然至少30%,以便理论上CPU不会因为此限制而成为瓶颈),并检查总体吞吐量是否下降。否则,添加更多内核将不会提高性能。

磁盘利用率如何?这些事务是否正在访问磁盘?如果是这样的话,您应该在像生产一样的硬件上以像生产一样的负载运行时,正确地查看iostatProfile您的应用程序。你会看到真正的瓶颈在哪里。现在,这一切都是猜测——这并非毫无用处,但这必然是猜测。