The power of Intel Quad core * 2 + FreeBSD 8 amd64
因工作上的需求,我必須處理 Subversion 因為 svn blame 造成的高系統負載問題。
作業環境如下:
cpu0 (BSP): APIC ID: 0
cpu1 (AP/HT): APIC ID: 1
cpu2 (AP): APIC ID: 6
cpu3 (AP/HT): APIC ID: 7
一旦使用者透過 viewvc 執行 annotate 的工作,只要一個! 且單一檔案內容超過萬行的情況下,就會造成系統高負載 (average load 破百) 的情況,最嚴重的狀況是連 console 操作都會 hang 住! 而且 httpd 和 svn 的 process 數量也 fork 很多出來!
深究其因,應該是 viewvc 造成的! 其次,CPU 僅是透過 HT 虛擬成 4 個 cpu,而並非真正 multiple core,因此運算能力也相對較弱!
以提供服務的角度來看,這個功能是使用者經常用到的! 因此,除了去 trace viewvc 外,唯一可解的就是硬體升級了!
新的硬體環境:
FreeBSD/SMP: 2 package(s) x 4 core(s)
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
cpu2 (AP): APIC ID: 2
cpu3 (AP): APIC ID: 3
cpu4 (AP): APIC ID: 4
cpu5 (AP): APIC ID: 5
cpu6 (AP): APIC ID: 6
cpu7 (AP): APIC ID: 7
OS 改用 FreeBSD 8 amd64 的版本,將 /tmp 透過 md 掛載大小為 18G 的 memory disk 上,其它軟體套件則依舊一樣 (但版本較新),並套用相同的環境設定!
以一個連線進行 annotate,load average 落在 1.x 左右,以 top 看則只有其中一顆 cpu 被吃到 100%,系統負載很低。
以三個連線進行 annotate,load average 介於 0.x - 2.x 之間,以 top 看則有三顆 cpu 被吃滿,系統負載一樣低。
由這樣的狀況來看,推測如下:
結論: 繼續頭大中... orz
作業環境如下:
- FreeBSD 7.2
- Apache 2.x
- Subversion 1.x
- viewvc 1.x
- CPU: Intel Xeon 3.06 GHz with HT
- RAM: 2GB
- HDD: SCSI
cpu0 (BSP): APIC ID: 0
cpu1 (AP/HT): APIC ID: 1
cpu2 (AP): APIC ID: 6
cpu3 (AP/HT): APIC ID: 7
一旦使用者透過 viewvc 執行 annotate 的工作,只要一個! 且單一檔案內容超過萬行的情況下,就會造成系統高負載 (average load 破百) 的情況,最嚴重的狀況是連 console 操作都會 hang 住! 而且 httpd 和 svn 的 process 數量也 fork 很多出來!
深究其因,應該是 viewvc 造成的! 其次,CPU 僅是透過 HT 虛擬成 4 個 cpu,而並非真正 multiple core,因此運算能力也相對較弱!
以提供服務的角度來看,這個功能是使用者經常用到的! 因此,除了去 trace viewvc 外,唯一可解的就是硬體升級了!
新的硬體環境:
- CPU: Intel Xeon E5420 2.5 GHz
- RAM: 48 GB
- HDD: SAS
FreeBSD/SMP: 2 package(s) x 4 core(s)
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
cpu2 (AP): APIC ID: 2
cpu3 (AP): APIC ID: 3
cpu4 (AP): APIC ID: 4
cpu5 (AP): APIC ID: 5
cpu6 (AP): APIC ID: 6
cpu7 (AP): APIC ID: 7
OS 改用 FreeBSD 8 amd64 的版本,將 /tmp 透過 md 掛載大小為 18G 的 memory disk 上,其它軟體套件則依舊一樣 (但版本較新),並套用相同的環境設定!
以一個連線進行 annotate,load average 落在 1.x 左右,以 top 看則只有其中一顆 cpu 被吃到 100%,系統負載很低。
以三個連線進行 annotate,load average 介於 0.x - 2.x 之間,以 top 看則有三顆 cpu 被吃滿,系統負載一樣低。
由這樣的狀況來看,推測如下:
- 透過 viewvc 進行 annotate 所造成的問題同樣存在。
- 因為 multiple core 的關係,一個 annotate 動作會佔用了一顆 cpu,避免所有資源被佔用。
- 如果同時有 8 個 annotate 被啟動,系統勢必變成高負載狀況,後果會如何?
結論: 繼續頭大中... orz
Comments
Post a Comment