我们在一个客户站点上有一个事务密集型进程,该站点运行在具有四个处理器的四核服务器上。该过程旨在利用可用的每个核心。因此,在此安装中,我们采用输入队列,将其除以16并将队列的每个部分分配给核心。它运作良好,并与盒子上的交易量保持同步。
查看盒子上的CPU利用率,它似乎永远不会超过33%。现在我们有一个新客户,其客户数量至少是现有客户的两倍。我们中的一些人认为,由于CPU使用率低于最大利用率,我们应该使用相同的配置。
其他人声称cpu利用率和事务处理速度之间没有直接关联,并且由于底层软件模块的逻辑基于可用内核的数量,因此获得具有相应更多内核的盒子是有意义的。新客户端,以适应增加的流量。
有没有人知道在这种情况下谁是对的?
谢谢,
答案 0 :(得分:2)
要确定新客户的最佳配置,了解CPU使用率低的原因至关重要。
很可能,原因是以下之一:
您的进程受内存带宽的限制。在这种情况下,如果主板支持,更快的RAM将有所帮助。如果可能,重新设计以限制处理期间访问的数据量将提高性能。添加更多CPU核心本身无助于提高性能。
您的进程受磁盘I / O的限制。使用更快的磁盘连接(SATA等)和/或升级到SSD可能会有所帮助,但更多的CPU功率却不会。
您的进程受同步争用的限制。在这种情况下,为更多核心添加更多线程甚至可能会适得其反。在这种情况下,重新设计算法可能会有所帮助。
话虽如此,我还看到了一些情况,其中明确CPU限制的进程无法在现代处理器(Core i7等)上实现100%的CPU使用率,因为在某些turbo boost相关情况下,任务管理器将显示少于100 %。
正如9000所说,你需要找出负载时你的瓶颈是什么。 Perfmon可能会提供足够的数据来查找。
另一个事后的想法:您可以将现有计算机上的进程限制为部分核心(但仍然至少30%,因此理论上,CPU不会因此限制而成为瓶颈)并检查整体吞吐量是否降低。如果没有,添加更多内核将无法提高性能。