软件调优方法有哪些?看看飞腾技术专家怎么说 | 龙蜥技术
編者按:飛騰作為國內 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.service2)查詢網卡中斷號。
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_node3)根據網卡所連接的 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)。
—— 完 ——
加入龍蜥社群
加入微信群:添加社區助理-龍蜥社區小龍(微信:openanolis_assis),備注【龍蜥】與你同在。歡迎開發者/用戶加入龍蜥社區(OpenAnolis)交流,共同推進龍蜥社區的發展,一起打造一個活躍的、健康的開源操作系統生態!
關于龍蜥社區
龍蜥社區(OpenAnolis)由企事業單位、高等院校、科研單位、非營利性組織、個人等在自愿、平等、開源、協作的基礎上組成的非盈利性開源社區。龍蜥社區成立于 2020 年 9 月,旨在構建一個開源、中立、開放的Linux 上游發行版社區及創新平臺。
龍蜥社區成立的短期目標是開發龍蜥操作系統(Anolis OS)作為 CentOS 停服后的應對方案,構建一個兼容國際 Linux 主流廠商的社區發行版。中長期目標是探索打造一個面向未來的操作系統,建立統一的開源操作系統生態,孵化創新開源項目,繁榮開源生態。
目前,Anolis OS 8.6?已發布,更多龍蜥自研特性,支持 X86_64 、RISC-V、Arm64、LoongArch 架構,完善適配 Intel、兆芯、鯤鵬、龍芯等芯片,并提供全棧國密支持。
歡迎下載:
https://openanolis.cn/download
加入我們,一起打造面向未來的開源操作系統!
https://openanolis.cn
?總結
以上是生活随笔為你收集整理的软件调优方法有哪些?看看飞腾技术专家怎么说 | 龙蜥技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArcGIS 9.2 SP2 补丁开始提
- 下一篇: 解决飞Q 在win7下 找不到的问题