Linux
如何找到兩台相同 Ubuntu 伺服器之間性能差異巨大的原因?
我在數據中心的同一機架中執行兩台Dell R410伺服器(在負載均衡器後面)。兩者都具有相同的硬體配置,執行 Ubuntu 10.4,安裝相同的軟體包並執行相同的 Java Web 伺服器(沒有其他負載),我看到兩者之間的性能差異很大。
性能差異在兩台伺服器的平均響應時間中最為明顯(在 Java 應用程序本身中測量,沒有網路延遲):其中一台比另一台快 20-30%,非常一致。
我曾經
dstat
弄清楚,如果有更多的上下文切換、IO、交換或任何東西,但我看不出有什麼區別。在相同的工作負載下(沒有交換,幾乎沒有 IO),一台伺服器上的 cpu 使用率和負載更高。因此,差異似乎主要受 CPU 限制,但雖然使用
sysbench
(關閉所有其他負載)的簡單 cpu 基準測試確實產生了差異,但只有 6%。所以也許不僅是CPU,還有記憶體性能。到目前為止,我已經檢查過:
- 所有組件的韌體版本(相同)
- BIOS 設置(我使用 進行了轉儲
dmidecode
,但沒有顯示任何差異)- 我對比了一下
/proc/cpuinfo
,沒有區別。- 我比較了 的輸出
cpufreq-info
,沒有區別。- Java / JVM 參數(兩個系統上相同的版本和參數)
另外,幾個月前我完全更換了 RAM,沒有任何效果。
我搞不清楚了。我該怎麼做才能弄清楚,發生了什麼?
更新:耶!兩台伺服器現在性能相同。這是 jim_m_somewhere 在評論中命名的“power CRAP”設置。“電源管理”的 BIOS 選項在快速伺服器上為“最高性能”,在另一個伺服器上為“活動電源控制器”(戴爾的預設設置)。顯然我忘記了,我是在兩年前設置的,而且我並沒有在所有伺服器上都這樣做。感謝大家非常有幫助的意見!
兩個想法,取決於你想走多遠:
- 交換兩台伺服器的磁碟,看看速度性能是停留在硬體上還是隨著軟體移動。
- 比較
/opt/dell/toolkit/bin/syscfg -o complete-bios-config.out
是否可以以某種方式欺騙此軟體包安裝的輸出。
輸出和差異的更多可能性:
- sysctl -a(確保核心可調參數相同)
- cat /proc/interrupts (也許還有其他一些硬體搞砸了?)
- ipmitool 感測器列表(長鏡頭,但檢查更多的低電平差異、過熱、電壓問題等)