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“壓力測試與監視瓶頸”,如達成優化目標,則需要將所有有效的優化措施和參數總結、歸檔,進入后續生產系統的版本發布准備等工作中。 |
在性能調優經驗比較少或者對系統的軟硬件並不是非常了解時,可以參考使用五步法的模式逐步展開性能調優的工作。對於有豐富調優經驗的工程師,或者對系統的性能瓶頸已經有深入洞察的專家,也可以采用其他方法或過程展開優化工作。