軟體調優方法有哪些?看看飛騰技術專家怎麼說 | 龍蜥技術

OpenAnolis小助手發表於2022-07-22

編者按:飛騰作為國內 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章