CPU利用率和线程

问题描述:

我们在四个处理器的四核服务器上运行的一个客户站点上有一个事务密集型进程。该过程旨在利用每个可用的核心。所以在这个安装中,我们采用一个输入队列,将它除以16的值,并将队列的每一部分分配给一个核心。它运作良好,并跟上箱子上的交易量。CPU利用率和线程

看看盒子上的CPU利用率,它似乎永远不会超过33%。现在我们有一位新客户,现有客户的数量至少增加一倍。我们有些人认为,由于CPU使用率低于最大利用率,我们应该采用相同的配置。

其他人声称,CPU利用率和事务处理速度之间没有直接关系,并且由于底层软件模块的逻辑基于可用内核的数量,所以获得具有可用比例更高的内核的盒子是有意义的为新客户提供适应增加的流量。

有没有人在这种情况下对谁是对的?

谢谢

+3

磁盘使用情况如何?这些交易是否触及磁盘?如果是这样,你应该看看iostat – jterrace 2011-02-26 21:10:46

+2

在生产类似的硬件上运行类似生产的负载时正确配置你的应用。你会看到真正的瓶颈在哪里。现在全是猜测 - 这不是无用的,但它必然是一种猜测。 – 9000 2011-02-26 22:38:25

,以确定最佳配置为你的新客户,理解为CPU占用率低的原因是最重要的。

很有可能,原因是下列之一:

  • 你的过程是由内存带宽的限制。在这种情况下,如果主板支持,更快的RAM将会有所帮助。如果可能的话,重新设计以限制处理期间访问的数据量将会提高性能。增加更多CPU内核本身不会改善性能。

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

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

话虽如此,我也曾经见过那肯定是CPU密集型的进程,无法实现在现代处理器100%的CPU使用率(I7芯等),因为在某些涡轮增压相关案件的情况下,任务管理器显示不到100%。

正如9000所说,你需要找出你的负载瓶颈。 Perfmon可能提供足够的数据来查明。

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