2010-02-03 52 views
1

G'day,爲什麼我們的64位版本的Apache沒有改善CPU使用率?

我們構建了Apache 2.2.14的64位版本,並將其部署到運行Sol10的各種Sun服務器上。用於測試的服務器類型是Sun T2000(32GB內存),5120(8GB)和5240(16GB)。

對於其中的每一個,我們都注意到CPU使用率並沒有明顯的改善,事實上服務器運行的比運行32位版本稍微熱點。

我們已經通過回滾到32位版本並再次向前滾動到64位版本來證實了這一觀察。由於這是一個主要的網絡農場,我們擁有廣泛的服務器監控基礎架構和RRD圖表,可用於各種測量。圖表可用於每日,每週,每月和每年的時間範圍。在這些圖表中,CPU使用率的微小變化非常明顯,我們服務器上的命中率在整個白天都是循環的,但仍然相當穩定,每個服務器的峯值約爲2k /秒。兒童的數量也是每天循環使用,每臺服務器在1k到3k之間變化。由於所有服務器都位於負載平衡層後面,所以階躍變化不能歸因於命中率或孩子的變化。

我們使用以下編譯標誌使用Sunstudio 12.1附帶的CC編譯器。 鏈接標誌是相似的,但沒有-D定義。

export CFLAGS="-xopenmp=parallel -xalias_level=basic \ 
    -xtarget=ultraT1 -m64 -xarch=sparc -xbuiltin=%all \ 
    -xdepend -xmemalign=8s -xO5 -xprefetch=auto,explicit" \ 
    -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 

我們在Apache配置中沒有做任何異常事情,它很漂亮。

編輯:性能是根據CPU與請求對比內存(依次)確定的。 64位處理器的請求數量相對較少,內存佔用量稍高。差異是在誤差範圍內,只有在接近滿負荷時才顯示

我已閱讀過「How to develop to take advantage of 64 bit systems?」這個問題,那裏有一些有趣的信息。這似乎是關於32位地址空間的4GB的限制外

  1. 尋址內存,64位值的
  2. 操縱主要的問題。

在我看來,我們也希望SSL性能有所提高。

關於爲什麼我們的表現沒有改善的任何建議?

或者有什麼建議?

我們實際上是否應該看到績效改善?

+0

我認爲這是一個編程和從代碼構建可執行文件的問題。因此,它在這裏,而不是服務器故障。如果這是構建服務器本身的配置問題,那麼我同意它應該在Server Fault上。 – 2010-02-03 12:31:01

回答

1

除了處理大量內存之外,x86_64與32位表兄弟相比,還有一個更豐富的寄存器。這應該意味着CPU大量代碼可以更高效,因爲它必須在相對較慢的主內存中保持較少的狀態。然而,這經常被增加的內存使用率所抵消,因爲所有的指針現在需要兩倍的空間。

通常給予足夠的內存來解決這個問題,我希望CPU綁定問題能夠像64位應用程序一樣更好地執行。然而,網絡服務通常是一個I/O約束問題,不會有所幫助(並且可能會妨礙機器處於額外的內存壓力下)。

您可能想要剖析您的機器(Linux上的oprofile,不知道等效的Solaris工具是什麼)並查看CPU熱點的實際位置。

+0

感謝您的好提示 – 2010-02-04 17:59:30

1

您是否使用64位優化算法?您的SSL庫是否針對64位進行了優化,並針對該架構編譯了ssl庫?僅僅編譯64位的32位代碼並不會帶來太大的影響,因爲大多數32位代碼甚至不使用可優化的功能。

+0

SSL已針對64位和使用相同編譯器的相同體系結構進行了構建和優化。我會查看Apache是​​否爲64位提供任何特定的配置選項。謝謝。 – 2010-02-03 12:34:36

相關問題