【AIX】PowerAIXCPU摺疊功能介紹 processor folding

xysoul_雲龍發表於2017-06-30

作者:王思文
文章來自微信公眾號平臺人生


1.CPU摺疊功能介紹

虛擬處理器管理(VirtualProcessorManagement),也稱之為處理器摺疊技術(CPUFolding),是一項Power虛擬化特性,用於控制一個LPAR處理使用的VP(VirtualProcessor)數量。按目前AIX的設定,預設對微分割槽(即共享處理器分割槽)開啟了處理器摺疊功能;而專有處理器分割槽(dedicatedLPAR)則預設關閉此功能。
處理器摺疊技術的作用主要體現在兩個方面:
1)節能,如果一個物理核心對應的所有VP都處於被摺疊狀態,PowerVMhypervisor可以將這顆核心置於低能耗狀態。 
2)提高整體處理效率,特別是在EC:VP配比較低的環境,比如1:10或以上(在新一代power資源池中,EC:VP=1:2),如果直接將十多倍的VP排程到每個物理核心(PhysicalProcessor,PP)上,將造成一定的排程開銷;因此通過摺疊不必要的VP,可以有效降低hypervisor的無謂開銷,提高整體效率。

這個特性在兩種場景都有幫助: 1)LPARCPU使用率不高,多數VP空閒;通過減少VP數量,可以有效提高每個VP對應的物理核心份額(即physc,可以通過mpstat/sar–PALL等檢視每個核心的pc/physc值);從而可以有效減少hypervisor以及作業系統的排程開銷。比如如果分割槽只能實際消耗掉16顆物理核心(lparstat顯示physc=16),但設定的VP數為64,如果系統能只使用16個VP來排程作業,則VP被排程到物理核心時是1:1的方式(接近Dedicated模式),hypervisor排程效率比較高,親和度一般也更優;而與此相比,如果系統直接使用64個VP來排程作業,則VP被排程到物理核心時是4:1的方式,效率以及親和度一般會略低。
2)處理器池(processorpool)中處理器資源緊張,LPAR開始爭搶CPU資源;VP數量實際上定義了LPAR能爭搶到的物理核心的上限;但並非每個分割槽都總是能搶到上限值,尤其是在EC:VP配比較低的環境下。在處理器資源競爭激烈時,分割槽能得到的總處理器資源可能會受到限制,此時減少分割槽的VP數量也有整體排程上的好處。比如一個8VP的分割槽,如果只能得到2.0顆物理核心(physc=2.0),那麼如果啟用的VP數減少到4的話(相當於每個VP平均能拿到0.5physicalcore),效能一般比VP為8時要更優(相當於每個VP平均能拿到0.25physicalcore)。

2.AIXCPU摺疊演算法以及實驗

每一秒,AIX作業系統監控本分割槽的總體VP利用率,如果總體VP利用率低於vpm_fold_threshold(AIX6.1TL6以後預設為49%;可通過schedo命令確認),AIX將啟用摺疊功能,開始向下摺疊VP,使負載執行在較少的VP上。注意被摺疊的VP在系統中仍然存在,只是系統不再往這些被摺疊的VP排程作業執行緒了。而如果總利用率超出vpm_fold_threshold, AIX將開始展開VP使用更多的VP來排程負載。使用者可以通過控制引數來選擇是否開啟folding策略;還可以通過schedo的vpm_xvcpus選項來設定保底啟用的VP數量。

2.1VPM控制引數說明
Folding策略開關由schedo的vpm_fold_policy選項控制。
1) vpm_fold_policy=0在靜態節能模式以外的場景關閉folding功能;
2) vpm_fold_policy=1只在微分割槽環境開啟folding功能(預設設定);
3) vpm_fold_policy=2只在專有處理器分割槽環境開啟folding功能;
4) vpm_fold_policy=3在微分割槽、專有處理器分割槽環境均開啟folding功能;
5) vpm_fold_policy=4徹底關閉folding功能;

還有一個影響Folding策略開關的引數vpm_xvcpus, 它的作用是控制當微分割槽CPU不足的時候,系統可以自動啟動的微分割槽的數量。
1) 設定vpm_xvcpus = -1, vpm_fold_policy會自動被設定為0,這樣會關閉folding功能。但如果此時分割槽開啟了靜態節能模式(StaticPowerSaving),則系統會自動設定vpm_fold_policy為3開啟folding功能;
2) 設定vpm_xvcpus = 0,表示啟用了CPU摺疊功能(ProcessorFolding),虛擬處理器正接受管理;
3) 設定vpm_xvcpus大於1,CPU摺疊功能開啟,並且開啟的虛擬CPU數目為物理CPU使用數與vpm_xvcpus引數之和。即:
number=ceiling(p_util+vpm_xvcpus);
其中number是所需的虛擬處理器數,p_util是物理處理器使用情況。如果number小於當前已啟用的虛擬處理器數,那麼將禁用某個虛擬處理器。如果number大於當前已啟用的虛擬處理器數,將啟用已禁用的虛擬處理器。在vpm_xvcpus大於1的情況下,也表示保底啟用的CPU數。連線到已禁用的虛擬處理器的執行緒仍然可以在已禁用的虛擬處理器上執行 
說明:
1) StaticPowerSaverMode:靜態節能模式是當系統CPU工作負載低的時候,系統把物理CPU主頻和電壓降低到一個固定值,以達到節能目的。一般關注效能的系統不建議採用此設定。
2) DynamicPowerSaverMode:動態節能模式是系統根據CPU負載大小,實時調整物理CPU主頻和電壓(不是固定值),以達到節能目的。
3) 系統預設設定以上兩種節能模式都是關閉的,可以通過HMC/ASMI設定。

2.2AIXCPU摺疊實驗
開啟一個ncpu任務給系統增加CPU負載,啟動16個程式,每個50%時間繁忙,這樣大約需要佔用8顆物理core。

微分割槽環境下,關閉處理器摺疊時的表現:


微分割槽環境下,開啟處理器摺疊時的表現:


通過kdb命令也可以檢視到VP的摺疊現象,下圖中標識“DIS”的即為摺疊狀態的邏輯CPU.

可見:
1) 從lparstat可以看到,無論folding開啟或者關閉,physc大約為8.00左右;
2) 從mpstat -s的輸出可知,同樣的場景下(8個任務50%繁忙),啟動cpu folding時,只需要9顆VCPU;而關閉cpu folding時,所有16顆VCPU都被啟動了;

3.CPU摺疊功能對系統的影響

3.1 關閉CPUfolding的影響:
關閉了系統核心對微分割槽環境的自動排程優化;所有的VP都會被排程到hypervisor,不管這些VP上是否有實際負載;更高的hypervisor延時,物理資源親和度也可能受到影響。
3.2 關閉CPU folding的好處:
對於分割槽sizing非常完美的情形下,比如EC:VP始終控制在不低於1:2,而且處理器池資源從未受限,這時關閉folding可能獲得一定的效能收益(主要是通過減少VPM管理開銷,以及避免unfold展開CPU延遲)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2141427/,如需轉載,請註明出處,否則將追究法律責任。

相關文章