軟體調優方法有哪些?看看飛騰技術專家怎麼說 | 龍蜥技術
編者按:飛騰作為國內 CPU 設計的領先企業,其 CPU 在各行各業已經獲得的廣泛應用。為了廣大客戶更好的使用 CPU、更好的提升效能,本文將詳細介紹飛騰伺服器 CPU 的效能調優原理以及相應調優方法。整理自 龍蜥大講堂,文末附獲取 PPT 方式,歡迎檢視!
一、軟體調優的方式
• 演算法最佳化
演算法最佳化是指對演算法的有關效能進行最佳化,比如時間複雜度等。為了提升演算法的處理問題的能力,通常需要對演算法進行合理最佳化。
• 指令集最佳化
1)針對程式關鍵程式碼段嵌入彙編指令進行最佳化
2)NEON 是一種 SIMD 指令,可以運用在訊號處理,向量運算等場合
• 針對體系結構的效能最佳化
根據體系結構的特點,針對系統和應用程式進行合理配置和部署調優。本文主要介紹該調優方法。
二、CPU 內部體系結構
2.1 FT-2000+/64 內部體系結構
• 64 個 CPU 核,8 個 NUMA
• 每 NUMA 含 8 個核,一個 DDR4 控制器
• 每 4 個核共享 2 MB L2 cache
• 兩個 PEU 單元、PEU0 連線在 NUMA0、PEU1 連線在 NUMA6
(圖1 / FT-2000+/64 內部體系結構圖)
2.2 S2500 內部體系結構
(圖2 /S2500內部體系結構圖)
• 64 個 CPU 核、8 個 NUMA
• 每 NUMA 含 8 個核,一個 DDR4 控制器
• 每 4 個核共享 2 MB L2 cache
• 一個 PEU 單元連線在 NUMA0
• 多路互聯 DLU 連線在 NUMA6
三、CPU 體系結構影響程式效能的因素
3.1 CPU 訪存的效能
每個 NUMA 的 CPU 訪問本 NUMA DDR 控制器的記憶體效能最佳,訪問其他 NUMA 效能有一些差異。
3.2 外設訪存的效能
PEU0 上的外設訪問 NUMA0 記憶體效能最佳,PEU1 訪問 NUMA6 記憶體效能最佳。
3.3 跨路訪存的效能
CPU 和外設訪問其它 socket 的記憶體比訪問本路記憶體效能更低。
四、CPU 體系結構相關效能的調優方法
NUMA(Non Uniform Memory Access),即非一致記憶體訪問,是針對 UMA(Uniform Memory Access)提出的。NUMA 架構下,多 CPU 對主存的訪問並非對等的,每個 CPU 都有自己的主存, CPU 與自己的主存物理上距離更近,訪問速度更快,而訪問遠端儲存器的速度相對要慢。
Linux 核心支援這種特性,配置 numa 支援對驅動和應用程式來說確實會有不少的效能提升。
4.1 CPU 訪存型別最佳化方法(一)
CPU 訪存的效能
例項:多程式的音影片處理伺服器,每個程式含 6 個執行緒,各程式相互獨立。執行8個服務程式,程式延時抖動很大,效能波動。
最佳化原理:每個程式繫結到一個 NUMA 的 8 個 CPU,每個程式從本地 NUMA 分配記憶體,避免跨 NUMA 分配記憶體帶來的訪存頻寬變低和延遲的影響。
操作步驟:
使用 numcactl 繫結伺服器程式,並指定記憶體分配策略.-C 指定 cpu 號,-l 指定當前的節點分配記憶體的:
numactl -C $cpus -l 音影片伺服器。
(圖3 /程式調優部署結構圖)
4.2 CPU 訪存型別最佳化方法(二)
例項:飛騰數學處理庫,使用多執行緒進行矩陣運算,使用 NUMA API 分配記憶體提升效能。
最佳化原理:根據每個執行緒執行的 CPU 所處的 numa 分配矩陣運算所需要的記憶體,這樣運算的執行緒訪存速率最快,同時配合使用 NEON 指令集對程式進行最佳化。
4.3 IO 訪存型別(核心網路卡驅動)(一)
例項:25G 網路卡 iperf3 測試效能調優。
最佳化原理:網路卡佇列中斷親和性均衡設定到對應PEU所在的核,提升網路卡DMA訪存的效能。
操作步驟:
1)關閉 irqbalance。
systemctl stop irqbalance.service
2)查詢網路卡中斷號。
cat /proc/interrupts | grep $eth | awk -F ':' '{print $1}'
3)根據具體 CPU 的體系結構,使用 lspci -tv 確定網路卡所屬的 PEU。
4)將每個中斷分別繫結在網路卡所屬 NUMA 對應的一個核上,並且均勻分配。cpu指定 CPU 編號,irq 指定中斷編號。
echo $cpu> /proc/irq/$irq/smp_affinity_list
(圖4 / iperf3測試)
4.4 IO 訪存型別(DPDK)(二)
例項:20G 網路卡 dpdk 測試效能調優
最佳化原理:每個 pci 裝置在 pci devie 目錄下有一個 numa_node 的屬性,記錄裝置所在的 numa_node 資訊,dpdk 記憶體管理根據該資訊從對應 numa 記憶體區域分配接收緩衝區。確保系統中 numa_node 資訊分配正確,提升 IO 傳輸的效能。
操作步驟:
1)根據具體 CPU 的體系結構,使用 lspci -tv 確定網路卡所屬的 PEU。
2)檢視網路卡的 numa_node 是否正確配置,其中pci_addr表示裝置pci地址
cat /sys/bus/pci/devices/pci_addr/numa_node
3)根據網路卡所連線的 PEU,配置網路卡的 numa_node,其中 numaNode 表示 numa 編號,pci_addr 表示裝置 pci 地址。
echo $numaNode > /sys/bus/pci/devices/pci_addr/numa_node
(圖5 /dpdk testpmd 測試資料)
關於技術課件獲取方式:
【PPT課件獲取】:關注微信公眾號(OpenAnolis),回覆“龍蜥課件”即可獲取。有任何疑問請隨時諮詢龍蜥助手—小龍(微信:openanolis_assis)。
—— 完 ——
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2907183/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 軟體測試方法和技術有哪些呢?
- 技術門檻高?來看 Intel 機密計算技術在龍蜥社群的實踐 | 龍蜥技術Intel
- KeenTune的演算法之心——KeenOpt 調優演算法框架 | 龍蜥技術演算法框架
- 看看有哪些 Web 攻擊技術.Web
- RPA 技術的優缺點有哪些
- 學習Python技術有哪些優勢?Python
- 1024程式設計師節開幕,龍蜥多位技術專家參與演講程式設計師
- 助力Koordinator雲原生單機混部,龍蜥混部技術提升CPU利用率達60%|龍蜥技術
- 聊聊技術管理(一)入行之技術管理和技術專家
- 深入解讀基礎軟體雲原生面臨的挑戰 | 龍蜥技術
- 怎麼選擇學哪些技術?
- eBPF 雙子座:天使 or 惡魔?| 龍蜥技術eBPF
- SysOM 案例解析:消失的記憶體都去哪了 !| 龍蜥技術記憶體
- NFC技術與RFID技術有哪些異同點?
- 調製技術在通訊領域有哪些具體應用?
- 開箱即用!Linux 核心首個原生支援,讓你的容器體驗飛起來!| 龍蜥技術Linux
- 跨語言程式設計的探索 | 龍蜥技術程式設計
- 1269道Java技術答疑,阿里技術專家幫你Java技術進階Java阿里
- 龍蜥LoongArch架構研發全揭秘,龍芯開闢龍騰計劃技術合作新正規化架構
- 技術解讀:現代化工具鏈在大規模 C++ 專案中的運用 | 龍蜥技術C++
- 致敬 hacker :盤點記憶體虛擬化探索之路|龍蜥技術記憶體
- 來聽聽達摩院技術專家是怎麼講智慧外呼機器人技術機器人
- SDN有哪些技術特徵?-VeCloud特徵Cloud
- 大資料技術有哪些大資料
- 物聯網技術有哪些
- 軟體安全測試需要考慮哪些問題?看看專業軟體測評中心怎麼說
- 技術解讀:Dragonfly 基於 P2P 的智慧映象加速系統 | 龍蜥技術Go
- 虛擬化解決方案 virtio 的技術趨勢與 DPU 實踐解讀 | 龍蜥技術
- 龍蜥開源Plugsched:首次實現 Linux kernel 排程器熱升級 | 龍蜥技術Linux
- 龍蜥社群高效能儲存技術 SIG 11 月運營回顧 | 龍蜥 SIG
- 大資料技術特點及優勢有哪些大資料
- 與50位技術專家連線(贈技術全景圖)
- 大資料技術有什麼優勢大資料
- 學習軟體測試需要掌握哪些技術?
- 『徵文精選』技術翻譯與術語管理技術:專業人說專業話
- 直播回顧:隱私計算的關鍵技術以及行業應用技巧 | 龍蜥技術行業
- 龍蜥利器:系統運維工具 SysAK的雲上應用效能診斷 | 龍蜥技術運維
- 龍蜥開源核心追蹤利器 Surftrace:協議包解析效率提升 10 倍! | 龍蜥技術協議