NUMA架構下的預估系統性能優化
圖片來源:http://unsplash.com/photos/RgufvmXe4G4
作者:瑜鋒
1. 背景
在推薦業務中,經典的分層邏輯為三層:召回、精排、重排,其中精排層無疑又是最複雜、最具挑戰性的一個環節,預估系統主要是為精排業務提供線上推理的服務。
當前雲音樂線上預估系統經過三年多時間的不斷迭代,已經接入包括音樂、搜尋、直播、創新業務等多個場景模型。
預估系統主要的邏輯包含三個部分:
- 特徵查詢:根據業務從分散式儲存中查詢使用者、場景、item等特徵,解析之後準備下一階段的特徵抽取;
- 特徵抽取:根據模型定義的輸入特徵,對上一階段查詢回來的特徵逐個計算,轉換成模型需要的資料格式,例如embedding、hash等;
- 前向推理:將特徵抽取後的資料輸入機器學習庫,經過一系列的矩陣運算等操作,最後輸出一個使用者對一個item的得分;
三個階段中,特徵查詢屬於IO密集型,其他兩個階段屬於CPU密集型,尤其是前向推理階段,需要完成大量的矩陣相乘等操作,並且期間有大量的記憶體申請和讀寫邏輯。
當前雲音樂線上預估系統部署數十線網叢集,上線數百物理機。系統上線初期主要使用至強E5 56核機器,去年開始採購的都是至強Gold 96核機器,兩種機型具體配置如下:
對比兩種機型配置,高配機器的計算能力至少是低配機器的兩倍。但是在上線執行時的效能表現以及日常壓測資料顯示,高配機器在實際業務處理能力上並沒有成線性增加,存在較大的效能損失。
下表中對比了兩個場景模型在兩種機型上的業務處理能力:
2. NUMA架構
當單核處理器計算能力無法滿足日益增長的算力需求,處理器製造廠商開始朝著多核的方向發展。
單機伺服器架構經歷了從 一致性訪存(UMA) 到 非一致性訪存(NUMA) 架構的演變。
在UMA架構中,多路CPU無主次關係,共享記憶體、匯流排、作業系統等資源,此時每個CPU訪問記憶體任何地址所耗費的時間是相等的。由於所有CPU共享記憶體,導致了單機的擴充套件能力有限,隨著CPU數量增加,記憶體訪問衝突也會大大增加。
為了進一步提高單機CPU數量,同時還能保證計算資源利用率,於是NUMA架構出現,通過犧牲記憶體的訪問延時來提高機器的擴充套件性。
在NUMA架構中,每個CPU都有本地記憶體,同時可以通過高速交換矩陣實現其他CPU本地記憶體的訪問。這種架構的特點就是CPU訪問自己的本地記憶體速度非常高,但是訪問遠端的CPU本地記憶體因為需要經過的匯流排更長,延時也會有相應的增加。
通過lscpu命令檢視,當前線上的伺服器都是配置的2個CPU節點的NUMA架構,接下來將會測試是否是NUMA架構的訪存特性,導致在高配機器上單機處理能力無法達到預期的提升一倍的問題。
3. 親核性測試
為驗證在NUMA架構下的親核性對預估系統性能的影響,決定對單機三種部署方式進行測試:單節點、雙節點不綁核、雙節點綁核。綁核通過使用Linux作業系統上的numactl命令來實現。
測試的模型選擇了一個複雜場景(模型A)和簡單場景(模型B),測試這兩個模型在三種不同的部署方式下,CPU利用率達到60%時,單機的請求處理能力。
3.1 低配機器測試結果
模型 A:
模型 B:
雙節點綁核相對於單節點部署方式有10%~20%左右的單機請求量提升,但是模型A在雙節點綁核部署方式上平均耗時也增加約10%;同時在模型B上,雙節點不綁核相對於單節點部署方式,反而單機請求量降低了10%。
總體上看,在低配機器上,NUMA架構的親核性對系統的效能影響不明顯,主要原因是因為計算資源還比較少,預估系統產生的訪存競爭不大。
3.2 高配機器測試結果
模型 A:
模型 B:
無論在模型A還是模型B,雙節點綁核相較於單節點部署,單機請求處理能力有比較明顯提升,分別帶來了75%和49%的提升;同時雙節點不綁核效能表現最差,主要是因為雙節點的執行緒數相較於單節點有較大增加,導致了訪存的競爭、執行緒切換開銷更為明顯。
4. 測試結論
相較於低配機器上的單節點部署方式,高配機器通過採用雙節點綁核的部署方式,在模型A和模型B上,分別帶來了169%和112%的效能提升,符合計算資源增加一倍情況下請求處理能力相應提升的預期。
高配機器上效能提升相較於低配機器更為明顯,三種部署方式效能排序:雙節點綁核 > 單節點 > 雙節點不綁核。
本文釋出自網易雲音樂技術團隊,文章未經授權禁止任何形式的轉載。我們常年招收各類技術崗位,如果你準備換工作,又恰好喜歡雲音樂,那就加入我們 [email protected] 。
- 雲音樂FeatureStore建設與實踐
- 雲音樂預估系統建設與實踐
- 直播活動系統:基於訊息匯流排的組合能力
- systrace 統計方法耗時
- NUMA架構下的預估系統性能優化
- NUMA架構下的預估系統性能優化
- React 元件庫 CSS 樣式方案分析
- React 元件庫 CSS 樣式方案分析
- Disruptor在雲音樂特徵服務中的應用
- Disruptor在雲音樂特徵服務中的應用
- Chrome外掛:雲音樂聽歌識曲
- App 出海 —— Google 結算系統面面觀
- CIKM 2021 | 雲音樂提出與模型無關的冷啟動推薦框架: MAIL
- Chrome DevTools Inspector 擴充套件實踐
- 從跨模態和上升通道談富媒體內容的冷啟動
- 從跨模態和上升通道談富媒體內容的冷啟動
- 冷啟動算法系列-雲音樂歌曲冷啟動初探
- 冷啟動算法系列-雲音樂歌曲冷啟動初探
- 打造輕量級 WebIDE,看這一篇文章就夠啦
- 打造輕量級 WebIDE,看這一篇文章就夠啦