2011-02-26 178 views
4

我們在四個處理器的四核服務器上運行的一個客戶站點上有一個事務密集型進程。該過程旨在利用每個可用的核心。所以在這個安裝中,我們採用一個輸入隊列,將它除以16的值,並將隊列的每一部分分配給一個核心。它運作良好,並跟上箱子上的交易量。CPU利用率和線程

看看盒子上的CPU利用率,它似乎永遠不會超過33%。現在我們有一位新客戶,現有客戶的數量至少增加一倍。我們有些人認爲,由於CPU使用率低於最大利用率,我們應該採用相同的配置。

其他人聲稱,CPU利用率和事務處理速度之間沒有直接關係,並且由於底層軟件模塊的邏輯基於可用內核的數量,所以獲得具有可用比例更高的內核的盒子是有意義的爲新客戶提供適應增加的流量。

有沒有人在這種情況下對誰是對的?

謝謝

+3

磁盤使用情況如何?這些交易是否觸及磁盤?如果是這樣,你應該看看iostat – jterrace 2011-02-26 21:10:46

+2

在生產類似的硬件上運行類似生產的負載時正確配置你的應用。你會看到真正的瓶頸在哪裏。現在全是猜測 - 這不是無用的,但它必然是一種猜測。 – 9000 2011-02-26 22:38:25

回答

2

,以確定最佳配置爲你的新客戶,理解爲CPU佔用率低的原因是最重要的。

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

  • 你的過程是由內存帶寬的限制。在這種情況下,如果主板支持,更快的RAM將會有所幫助。如果可能的話,重新設計以限制處理期間訪問的數據量將會提高性能。增加更多CPU內核本身不會改善性能。

  • 您的進程受磁盤I/O限制。使用更快的磁盤連接(SATA等)和/或升級到SSD可能會有所幫助,但更多的CPU功率不會。

  • 您的進程受同步爭用的限制。在這種情況下,爲更多內核添加更多線程甚至可能會產生反效果。在這種情況下重新設計您的算法可能會有所幫助。

話雖如此,我也曾經見過那肯定是CPU密集型的進程,無法實現在現代處理器100%的CPU使用率(I7芯等),因爲在某些渦輪增壓相關案件的情況下,任務管理器顯示不到100%。

正如9000所說,你需要找出你的負載瓶頸。 Perfmon可能提供足夠的數據來查明。

另一個事後考慮:您可以將現有機器上的進程限制爲部分內核(但仍至少30%,因此理論上CPU不會因此限制而成爲瓶頸),並檢查整體吞吐量是否降低。如果沒有,增加更多內核不會提高性能。