高可用高效能運算機系統配置與調諧的基本策略
青島火車站 電算中心 於東 劉梅
電腦使用者需要這樣一種計算環境:既要可靠
又要效能足夠處理複雜環境下的各種負載,使用者把各種應用軟體置入電腦系統內,應用軟體又根據人機對話介面傳來的各種指令啟用預設的程式段。這裡涉及整個
系統的協調,最短的DOWN機時間,持久的效能表現,這是一個適當的系統資料表現,另外,電腦系統還必須能夠在不降低效能的前提下消化增加的負載,具有一定
的可收縮性。
本文介紹配置一個系統的過程並包括如下資訊:
- 與效能和可用性相關的通用術語
- 如何獲得高效能和高可用性
- 如何計劃你的配置
- 配置和調諧建議
- 配置和調諧系統的步驟
本文以DIGITAL UNIX為基本環境,有關係統監視,效能異常識別,CPU最佳化,虛存/儲存/網路子系統的調諧細節,在不同系統內容下,有不同的系統工具和方法。為通用性記,不作進一步討論。
術語和概念
1.1.1系統配置:指為一個單獨系統或群集系統進行的軟體和硬體的聯合配置。例如:CPU,記憶體板,操
作系統,鏡像盤都是配置的對象。主機系統可以是一個單CPU或多CPU系統,多CPU系統允許多個處理器共用實體記憶體,其中SMP系統(對稱式多處理器)的
CPU執行同樣版本的作業系統,存取共同記憶體,並存執行指令.某些環境如LDB(LARGE_DATABASE)大資料庫環境下,要求多處理器系統和大存
儲系統來處理負載;VLM(VERY_LARGE MEMEORY)使用64位體繫結構,多CPU和至少2GB記憶體;VLDB(VERY_LARGE
DATABASE)系統同時是一個VLM系統,同樣要使用一個大而複雜的儲存配置.下面是一個典型的VLM/VLDB配置:
- 擁有兩個以上高速CPU的SMP;
- 多於4GB的實體記憶體;
- 多個高效能的主機匯流排介面卡(HOST BUS ADAPTER);
- 高效能高可用的RAID儲存配置.
虛擬記憶體:通過各種演算法控制每個進程的記憶體配置,通常包括部分實體記憶體,磁碟SWAP空間,都是虛擬記憶體分配的對象.頁:是系統可調配的最小實體記憶體單位,大小為8KB.
虛擬記憶體操作:包括調頁(paging)和交換(swapping)
paging:回收(reclaim)頁被重新使用。Swapping:把一個懸掛(suspended)進程的修改過的(dirty)頁寫回磁碟swap空間,這樣可以釋放大量記憶體。
配置完一個系統後,為改善系統效能,你可能需要調節系統參數。核心變數(kernel
Variables)影響著系統核、虛存i/o子系統、和應用軟體的表現和效能。系統運行時改變核參數可暫時改變系統核(kernel),而改變屬性值
(values of attributes)可以永久改變kernel效能。
如果調皆達不到預期效果,必須重新設定系統(reconfigure):增加cpu、記憶體,還是改變儲存配置或修改應用軟體?這需要你整體判斷瓶頸所在。
1.1.2 系統效能
系統效能依賴於高效的使用系統資源:硬體資源、軟體資源、cpus、memory、network組件,disk storage。
首先在正常負載下,系統必須表現良好。其次在系統負載隨時間變化的情況下,如
增加新使用者或運行額外的應用軟體時,必須重新設定系統以應付增加的系統負載。
可擴充性指系統可以通過增加資源達到預期的效能提高,或系統無需增加資源而利用現有的資源消化負載的增加部分,同時無明顯的效能下降。
所謂"瓶頸"是指系統配置中的某一部分,成為系統內部資訊不暢的主要位置。潛在的瓶頸包括:虛擬記憶體子系統和i/o匯流排。瓶頸發生於負載對某資源的需求大於系統可以提供的能力,系統能力是指該資源最大理論輸送量(through-put)。
效能經常被頻寬(bandwidth)和輸送量(through-put)來描述。頻寬是指i/o子系統
資料位元組的傳輸率(transfer
rate)。頻寬對執行大量順序資料轉送的應用軟體特別重要。輸送量是指i/o子系統執行i/o操作的速率,輸送量對執行很多小量i/o的操作的應用特別
重要。
效能也來可以用周期來測定。周期是指完成一次指定操作的總時間,周期也被稱為延遲(delay),高效能要求低周期,i/o周期以微秒(milliscond)為單位,記憶體周期以納秒為周期。記憶體周期依賴於記憶體配置。
1.1.3 磁碟效能
用磁碟存取時間來描述磁碟效能。
磁碟存放時間是由磁碟尋找時間(seek time)和轉動周期(rotational latency)來決定的。
seek time:磁頭轉動至特定磁軌(disk track)的時間。
rotational latency:磁碟轉動至指定的扇區的總時間。
ubc統一緩衝cache(unified buffer
cache)影響盤i/o效能。ubc分配部分實體記憶體來緩衝最近經常存取(most-recently
accessed)檔案系統資料。作為介於作業系統和儲存子系統之間的功能層,ubc可以降低磁碟操作次數。
磁碟i/o效能也依賴於應用軟體i/o操作的特徵:資料轉送量大小,資料流向:從磁碟讀和向磁碟寫兩個方向。
資料轉送有不同的存模數式,順序存模數式指讀寫磁碟的連續塊(contiguous blocks)或相鄰塊(adjacent blocks)。隨機存模數式(random access pattern)是指讀寫磁碟不連續的塊。
另外,資料轉送包括檔案系統資料和原始i/o(raw i/o),原始i/o是指對不含檔案系統的磁碟的
i/o ,raw i/o繞過(bypass)緩衝區和cache,可以提供比檔案系統i/o更好的效能。raw
i/o方式常用來做作業系統i/o和資料庫應用軟體i/o。
磁碟i/o效能也受RAID技術的影響,RAID可以提供更好的磁碟I/O效能和更好的資料可靠性。
DIGITAL UNIX通過LSM(logical storage manager)軟體支援RAID功能;DIGITAL
UNIX也支援基於硬體的RAID產品,通過使用智能控制卡、CACHE提供RAID功能.
一共有四個層級的基本RAID:
RAID0:也稱為磁碟striping,RAID0把資料分成塊,並把塊分佈於構成磁碟組的多個磁碟,跨磁碟、跨控制板分布磁碟i/o負載改善了磁碟i/o效能。
RAID1:也稱為磁碟鏡像,在同一磁碟組的不同磁碟上維護相同資料備份。不同磁碟上保留的資料副本可以改善磁碟表現和更好的資料安全性。
RAID3:一種校正RAID,RAID3分成的資料區塊也分佈於不同的磁碟,同時提供並行的資料存取和增加的頻寬。RAID3在獨立的磁碟上放置冗餘的校正資訊,磁碟出錯時,用此校正資訊重建資料,因此RAID3有更高的資料安全性和可用性。
RAID5:一種校正RAID,RAID5可以獨立存取資料並可處理同步I/O操作,改善了輸送量。
1.1.4高可用性
高可用性是指該系統資源應付軟硬體失敗的能力。資源(如系統或磁碟資料)可通過冗餘或多處備份獲得高可用性。
例如:磁碟鏡像可以使磁碟資料獲得高可用性,如果原始盤失敗。另外盤上的備份便可以使用。如果使用校正RAID,冗餘資料存放於校正資訊中,當資料失敗時,可以此重建被破壞的資料。
另外冗餘的網路連接使網路有更高可用性,網路可用性依賴於應用軟體、網路設定和網路通訊協定。
使整個機器系統有更高可用性、你必須設定群集,CLUSTER是一個鬆散結對的伺服器組,每個伺服器視為叢集成員。應用軟體可以運行在任意成員伺服器上。大型應用可以在多個成員伺服器上同步運行。叢集成員之間有高效能內部互聯支援快速可靠的成員間資料通訊。
叢集應用FAILOVER(失敗轉移)技術保證高可用性。當一個成員系統失敗時,所有運行在該系統上的叢集配置的應用軟體轉移到另外的成員伺服器上繼續運行。
為了徹底防止配置失敗,必須消除每個失敗點:
- 用叢集防止整個系統的失敗。
- 兩套網路連接防止網路失敗。
- 分佈於不同匯流排上的磁碟鏡像防止磁碟匯流排或適配器失敗。
對於更高的可用性要求,可以用多層冗餘來防止多層失敗。
可用性(AVAILABILITY)也可用資源可靠性(RELIABILITY)來衡量。可靠性是指一個
組件在兩次失敗引起資料丟失之間的可正常啟動並執行平均時間量。它可用MTDL(MEAN TIME TO DATA LOSS),MTTF(MEAN
TIME TO FIRST FAILURE),MTBF(MEAN TIME BETWEEN FAILURES)來表示。
細解高可用性
一個高可用性資源可以經受特定軟硬體失敗,對使用者而言這些失敗是透明的、不可察覺的。這可以用資源冗餘和失敗轉移機制來實現的。
系統配置必鬚根據你的系統的重要性及軟硬體的自身特點來決定配置可用性的規格。一個不輕易出現失敗或可以容忍DOWN機的環境,只需要資料級高可用性;而一個挑剔的系統
必須沒有一個單失敗點,在每一個重要的資源都必須有冗餘資源做備用。
圖一是一個有多處潛在失敗點的(包括系統、網路、磁碟、匯流排)的配置:
1.2.1消除失敗點:
- 系統失敗:
為了避免單個系統的失敗,必須配置至少兩個成員的叢集,一個失敗,應用仍可運行在另一個成員系統上。但兩成員叢集不是一個高可用性配置。如果一個成員系統崩潰另一個成員系統成為潛在的失敗點。所以高可用性系統至少要配置三個成員系統。
- 磁碟失敗:
防止磁碟故障,作鏡像盤或用校正RAID。
- 主機匯流排介面卡或匯流排失敗:
鏡像資料分布在不同匯流排上。
- 網路連接失敗:
網聯失敗歸因於網路介面或網路本身的問題,可以在一個系統上安裝多個網路介面並確保應用軟體支援這種功能。
- 電源失敗:
系統和儲存單元易出現電源失敗。在主機系統和儲存單元內分別使用冗餘電源,在主機房內使用ups。
- 叢集互連失敗:
兩條叢集互連通訊通路。
完全冗餘叢集配置:見圖二
1.2.2提高系統可用方法及成本:
方法:
設定至少兩成員的叢集。
使用最新版本硬體、韌體和作業系統
配置多網路連接
配置冗餘叢集互連
使用後備式UPS
成本:
額外的軟硬體支出及增加的管理複雜度
升級時可能的DOWN機時間。
額外的硬體費用及足夠的I/O擴充槽
額外的硬體費用及PCI槽
UPS硬體費用
1.2.3提高資料可用性方法及成本
方法:
鏡像盤
使用校正RAID
在不同匯流排上磁碟間鏡像資料
設定叢集
使用後備UPS
成本:
額外磁碟費用和寫效能降低
額外軟硬體費用,增加管理複雜性和寫效能波動
額外I/O匯流排槽及硬體費用
額外軟硬體支出,增加管理複雜性。
UPS費用
1.2.4高可用性對系統效能的影響
方案
鏡像
跨匯流排鏡像
校正RAID
冗餘網路連接
叢集
影響
改善磁碟讀效能但降低寫效能。
防止單匯流排成為I/O瓶頸
當所有RAID集磁碟都可用時,改善磁碟I/O效能,當有失敗盤存時,效能降低
改善網路效能,增加CLIENT存取
通過把負載分佈於不同的系統上,為應用軟體和使用者提供更多的CPU、記憶體資源,從而改善了整個系統的效能。
1.3細解高效能
系統必須有可靠的效能滿足使用者和應用的需要,系統配置首先要滿足對當前負載的迅速反應,另外還要考慮為負載增加而預留效能表現空間。
一個可擴充的系統內容允許使用者為改善效能或消解負載增加而添加另外的硬體。
系統效能取決於軟硬體設定與負載的互動作用。一個好的系統必須充分高效的使用CPU,記憶體,I/O資源。一旦某資源達到能力極限,就可能降低效能而變成瓶頸。瓶頸是相互關聯的。例如,無效的記憶體引起過分的調頁和交換,如此又引起磁碟I/O的瓶頸。
要配置一個滿足效能要求的系統,必須判斷該系統中,那種資源的失敗可能對系統效能造成最大衝擊。如果應用
軟體是CPU消耗密集型的,必須考慮配置多CPU,寬記憶體頻寬;如果應用是記憶體消耗性,必須多考慮記憶體容量的配置,否則記憶體的缺乏將降低整個系統的效能;
如果應用軟體中存在大量磁碟I/O操作,配置系統時就必須優先考慮磁碟和匯流排瓶頸;如果你的系統是一個INTERNET伺服器,必須確保系統可以集中處理
大量網路請求。另外,如果要把系統配製成高可用+高效能,你還必須考慮高可用配置對高效能的負面影響。
效能問題的原因可能是:
不恰當的系統核(KERNEL)變數值。
根據你的配置及負載的變化,而修改系統變數值,以獲得最佳化的效能。
1.4規劃配置
計劃你的DIGITAL UNIX配置步驟如下:
- 瞭解你的負載及應用軟體特點
- 確定你的可用性及效能要求
- 選擇滿足效能既可用性需要的軟硬體設定
瞭解負載的特徵:
1.應用特點:
描述應用對象
描述效能要求
應用是CPU密集型的碼?
應用對記憶體需求大碼?
應用對磁碟儲存要求情況
應用是否要求寬頻寬或大輸送量?
應用是否執行了大量小塊資料轉送?
平均資料轉送量有多大?
資料轉送中讀比例?
資料轉送中寫比例?
應用中是否存在很多網路操作?
系統可用性要求
資料可用性要求
網路可用性要求
2.使用者特徵描述:資料處理還是編譯代碼?
使用者類型
使用者數量
使用者目標
使用者執行的任務
使用者啟動並執行應用列表
資料存放區要求
1.5基本配置和調諧推薦:
DIGITAL UNIX的公用程式SYS_CHECK收集效能相關資訊。並以
易讀的格式輸出這些資訊。SYS-CHECK工具協助使用者檢查配置和檢查變數配置
,並在必要時提供警告和調諧建議。
SYS-CHECK可以下邊地址獲得:FTP://FTP.DIGITAL.
COM/PUB/DEC/IAS/SYS_CHECK
下面列出基本調諧建議:
- 作業系統和KERNEL建議
- 確定正在使用OS最後版本(DECEVENT工具)
- 確定在使用適配器.控制器.磁碟的最新韌體(DECEVENT工具)
- 確定重要的應用有高優先順序(用nice命令,Class Scheduler工具定義CPU優先順序)
- 使用適用該配置的KERNEL變數修改
- 記憶體建議:
- 確定有足夠的記憶體
- 確定有足夠的SWAP空間,並且SWAP空間分布在不同磁碟和匯流排上
- 增加進程可用地址空間
- 增加進程可用系統資源
- 減少應用軟體記憶體要求
- 如果系統只有少量磁碟I/O,減少分配給UBC(unified buffer cache)的記憶體量
- 修改SWAP速度
- 改變修改頁(dirty page)預寫速度。
- DISK和I/O建議
- 使用高效能硬體
- 分布磁碟I/O和檔案系統跨磁碟和匯流排
- 整理檔案系統片段
- 磁碟I/O密集型應用,增加分配給UBC的記憶體
- 增加同時開啟最多檔案數
- 增加NAMEI CACHE大小
- ADVFS建議
- 使用多卷檔案域
- 增加分配給ADVFS緩衝CACHE的記憶體
- 提高修改資料CAC HING閥值(THRESHOLD)
- 減小I/O傳輸預讀(READ AHEAD)大小
- UFS建議
- 修改檔案系統片段大小
- 增加中繼資料(METADATA)緩衝CACHE大小
- 網路建議:
- 增加雜湊表(HASH TABLE)大小,KERNEL使用雜湊表去查詢TCP/IP控制塊。
- 增加局部(PARTIAL)TCP包偵聽隊列(SOCKET LISTEN QUEUE)串連上限
- 增加動態分配連接埠最大數
- NFS建議
- 確保伺服器上運行著足夠的NFSD DAEMONS數量
- 確保用戶端運行著足夠的NFSI OD DAEMONS
1.6配置和調諧系統步驟
1.配置系統:
確保環境要求,選擇符合要求的配置方案。然後設定硬體,作業系統及其上的層次產品和應用軟體。
2.完成所有建議的初始調諧工作:
對一些配置必須在配置完成後立即進行調諧工作。例如,如果系統被用作INTERNET伺服器必須系統配置後立即修改預設系統參數和屬性
3.監視系統資料表現:
如果系統效能可以接受,仍然在其後時間內不斷的觀察系統資料表現。因為資源的使用狀況隨時而變。某項資源達到其能力上限時,會表現在降低的效能表現上。或環境的明顯改變,也會影響效能。如果系統效能不可接受,確定問題出處。
4.分析效能問題的原因:
使用DIGITAL UNIX給出的工具,定位問題
5.確定消除效能問題的調諧方案:
如果用盡了所有可能的調諧方案,而不能改善效能,必須考慮重新設定系統。
6.消除效能問題:
首先嘗試簡單,無需費用的方案,如運行某些應用在非高峰期或控制磁碟存取。
再嘗試複雜且昂貴的方案,如調諧或增加硬體。
如果你確信CPU和應用軟體已經完成最佳化,接下來應該重點調諧虛擬記憶體子系統,以擷取最好的效能。如果仍然不能消除問題,再調諧I/O子系統,調諧一般要修改KERNEL屬性,也可以執行相應的系統管理工具軟體,如整理檔案系統片段或修改STRIPE寬度來調諧系統。
7.監視系統效能:
調諧後必須仔細觀察系統資料表現,以確定調諧結果是否如期。圖三描述配置和調諧過程。