1. 程式人生 > >鯤鵬效能優化十板斧——鯤鵬處理器NUMA簡介與效能調優五步法

鯤鵬效能優化十板斧——鯤鵬處理器NUMA簡介與效能調優五步法

1.1 鯤鵬處理器NUMA簡介

隨著現代社會資訊化、智慧化的飛速發展,越來越多的裝置接入網際網路、物聯網、車聯網,從而催生了龐大的計算需求。但是功耗牆問題以功耗和冷卻兩大限制極大的影響了單核算力的發展。為了滿足智慧世界快速增長的算力需求,多核架構成為最重要的演進方向。

傳統的多核方案採用的是SMP(Symmetric Multi-Processing)技術,即對稱多處理器結構,如圖1-1所示。在對稱多處理器架構下,每個處理器的地位都是平等的,對記憶體的使用許可權也相同。任何一個程式或程序、執行緒都可以分配到任何一個處理器上執行,在作業系統的支援下,可以達到非常好的負載均衡,讓整個系統的效能、吞吐量有較大提升。但是,由於多個核使用相同的匯流排訪問記憶體,隨著核數的增長,匯流排將成為瓶頸,制約系統的擴充套件性和效能。

圖1-1 對稱多處理器SMP架構

 

鯤鵬處理器支援NUMA(Non-uniform memory access, 非統一記憶體訪問)架構,能夠很好的解決SMP技術對CPU核數的制約。NUMA架構將多個核結成一個節點(Node),每一個節點相當於是一個對稱多處理機(SMP),一塊CPU的節點之間通過On-chip Network通訊,不同的CPU之間採用Hydra Interface實現高頻寬低時延的片間通訊,如圖1-2所示。在NUMA架構下,整個記憶體空間在物理上是分散式的,所有這些記憶體的集合就是整個系統的全域性記憶體。每個核訪問記憶體的時間取決於記憶體相對於處理器的位置,訪問本地記憶體(本節點內)會更快一些。Linux核心從2.5版本開始支援NUMA架構,現在的作業系統也提供了豐富的工具和介面,幫助我們完成就近訪問記憶體的優化和配置。所以,使用鯤鵬處理器所實現的計算機系統,通過適當的效能調優,既能夠達成很好的效能,又能夠解決SMP架構下的匯流排瓶頸問題,提供更強的多核擴充套件能力,以及更好更靈活的計算能力。

圖1-2 NUMA架構

 

1.2 效能調優五步法

效能優化通常可以通過如表1-1五個步驟完成。

表1-1 效能優化的通用步驟

序號

步驟

說明

1

建立基準

在進行優化或者開始進行監視之前,首先要建立一個基準資料和優化目標。這個基準包括硬體配置、組網、測試模型、系統執行資料(CPU/記憶體/IO/網路吞吐/響應延時等)。我們需要對系統做全面的評估和監控,才能更好的分析系統性能瓶頸,以及實施優化措施後系統的效能變化。優化目標即是基於當前的軟硬體架構所期望系統達成的效能目標。效能調優是一個長期的過程,在優化工作的初期,很容易識別瓶頸並實施有效的優化措施,優化成果往往也很顯著,但是越到後期優化的難度就越大,優化措施更難尋找,效果也將越來越弱。因此我們建議有一個合理的平衡點。

2

壓力測試與監視瓶頸

使用峰值工作負載或專業的壓力測試工具,對系統進行壓力測試。使用一些效能監視工具觀察系統狀態。在壓力測試期間,建議詳細記錄系統和程式的執行狀態,精確的歷史記錄將更有助於分析瓶頸和確認優化措施是否有效。

3

確定瓶頸

壓力測試和監視系統的目的是為了確定瓶頸。系統的瓶頸通常會在CPU過於繁忙、IO等待、網路等待等方面出現。需要注意的是,識別瓶頸是分析整個測試系統,包括測試工具、測試工具與被測系統之間的組網、網路頻寬等。有很多“效能危機”的專案其實是由於測試工具、測試組網等這些很容易被忽視的環節所導致的,在效能優化時應該首先花一點時間排查這些環節。

4

實施優化

確定了瓶頸之後,接著應該對其進行優化。本文總結了筆者所在團隊在專案中所遇到的常見系統瓶頸和優化措施。我們需要注意的是,系統調優的過程是在曲折中前進,並不是所有的優化措施都會起到正面效果,負優化也是經常遇到的。所以我們在準備好優化措施的同時,也應該準備好將優化措施回滾的操作指導。避免因為實施了一些不可逆的優化措施導致重新恢復環境而浪費大量的時間和精力。

5

確認優化效果

實施優化措施後,重新啟動壓力測試,準備好相關的工具監視系統,確認優化效果。產生負優化效果的措施要及時回滾,調整優化方案。如果有正優化效果,但未達到優化目標,則重複步驟2“壓力測試與監視瓶頸”,如達成優化目標,則需要將所有有效的優化措施和引數總結、歸檔,進入後續生產系統的版本釋出準備等工作中。

 

在效能調優經驗比較少或者對系統的軟硬體並不是非常瞭解時,可以參考使用五步法的模式逐步展開效能調優的工作。對於有豐富調優經驗的工程師,或者對系統的效能瓶頸已經有深入洞察的專家,也可以採用其他方法或過程展開優化工作。