性能 – CPU利用率和线程

我们在一个客户站点上有一个事务密集型进程,该站点运行在具有四个处理器的四核服该过程旨在利用可用的每个核心.因此,在此安装中,我们采用输入队列,将其除以16并将队列的每个部分分配给核心.它运作良好,并与盒子上的交易量保持同步.

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

其他人声称cpu利用率和事务处理速度之间没有直接的关联,并且由于底层软件模块的逻辑基于可用内核的数量,因此获得具有相应更多内核可用于新客户端的盒子是有意义的.以适应增加的交通量.

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

谢谢,

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

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

>您的进程受内存带宽的限制.在这种情况下,如果主板支持,更快的RAM将有所帮助.如果可能,重新设计以限制处理期间访问的数据量将提高性能.添加更多CPU内核本身无助于提高性能.
>您的进程受磁盘I / O的限制.使用更快的磁盘连接(SATA等)和/或升级到SSD可能会有所帮助,但更多的CPU功率不会.
>您的进程受同步争用的限制.在这种情况下,为更多核心添加更多线程甚至可能会适得其反.在这种情况下,重新设计算法可能会有所帮助.

话虽如此,我还看到了一些情况,其中明确CPU限制的进程无法在现代处理器(Core i7等)上实现100%的CPU使用率,因为在某些turbo boost相关情况下,任务管理器将显示低于100%.

正如9000所说,你需要找出负载时你的瓶颈是什么. Perfmon可能会提供足够的数据来查找.

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

点赞