基于硬件特性的性能調優
性能優化四個方向:CPU/內存&網卡&磁盤&應用
編譯器性能優化:
指令布局優化:拆分函數代碼,按照冷熱指令重新排布,提升指令cache命中率
內存布局優化:按照內存數據訪問頻率,組合熱數據區域,提升數據cache命中率
循環優化:分析循環迭代間數據訪存依賴關系,據自動矢量化計算,加速程序運行
JDK性能優化:
JIT編譯優化,GC內存回收管理優化提升內存管理性能
JVM循環、向量化、序列化技術
Nginx綁核優化舉例
將Nginx進程分布到各個NUMA node之內,讓系統整體的負載比較均衡,按照中斷號將中斷服務和Nginx綁定在一個NUMA中。性能將會非常明顯的提升
NUMA指的是:非統一內存訪問架構
三種NUMA綁核配置方法:
1、使用系統工具numactl設置
Numactl -C 0-15 process name
-C : Core scope
2、在代碼中調用親和性設置參數
Int sched_setaffinity(pid_t pid,size_t cpusetsize,cpu_set_t*mask)
3、多數開源軟件中提供了配置接口
Nginx.conf文件中worker_cpu_affinity
基于鯤鵬壓縮加速庫:
Gzip
Zlib
ZSTD
Snappy
加解密加速
openssl
多媒體加速
X.256
Ffmpeg
HMPP
基礎加速
Glibc
Hyperscan
加速使能
業務和基礎軟件庫加速使能
內核態硬件加速件使能
針對性性能調優
CPU/RAM
調整內存頁大小
CPU預取
修改線程調度策略
硬盤
臟數據刷新
異步文件操作
文件系統參數
網卡
網卡多隊列
開啟網卡TSO
開啟網卡CSUM
應用
優化編譯選項
文件緩存機制
緩存執行結果
NEON指令結果
針對以讀為主的場景:如大數據讀場景。性能約提升10%。減少IO請求數量,減輕CPU壓力。
網卡中斷的折中是性能調優的重點,如果沒有中斷會出現數據流失。本質上中斷是一種電信號,通過總線把電信號發送給中斷控制器。
主存和CPU之間增加高速緩沖存儲器的目的是解決CPU和主存之間的速度匹配問題
硬中斷:hardirq。由網卡、硬盤等外設產生,主要用來通知操作系統外設狀態的變化。比如網卡收到數據包時就會發生一個中斷
軟中斷:softirq。方便網卡做后續操作,網卡輪詢軟中斷隊列。從內存拷貝到應用套接字中。應用檢測套接字中是否有新增數據。Linux將中斷分為兩個階段:上半部和下半部。上半部用來處理中斷;下半部用來處理上半部未完成的工作,通常以內核線程的方式運行。
就像收快遞,你不確定什么時候配送到你手上,也沒有辦法了解配送進度。但是配送員是不等人的,到了你沒取直接就走人。所以只能苦苦等著。但是你可以和配送員說好“快到了就給我打個電話”,這個電話就相當于是一個中斷,只有接到電話時才會產生中斷,并產生一個新動作“拿快遞”。
所以中斷是一種異步事件的處理機制,可以提高系統的并發處理能力。中斷會打斷其他進程。
可以通過網卡緩存機制(100個數據包再產生中斷),但是應用層收到數據包時延也會變高。
高中斷==低延遲
低中斷==高吞吐
時延、吞吐、并發尋找一個均衡點
中斷嵌套:Linux下的硬嵌套是可以嵌套的,但是沒有優先級概念;軟中斷不能嵌套,但相同類型的軟中斷可以在不同CPU上并行執行。
查看軟中斷:
proc文件系統是一種內核空間和用戶空間進行通信的機制,可以用來查看內核的數據結構,可動態修改內核的配置
查看軟中斷運行情況
查看硬終端運行情況
監控&分析&優化
監控
分析
優化
TOP
最常用的Linux性能檢測工具之一。監視進程和整體性能。系統自帶無需安裝
Pref
監控進程內的調用情況、資源消耗情況并查找分析熱點函數。需要手動安裝
Numactl
監控當前NUMA節點配置、狀態,可通過改工具將進程綁定在指定的CPU Core,由指定CPU Core運行對應進程。需要手動安裝(yum install numactl numactlstat)
Strace:程序調試工具、監控系統調用情況
Free:系統使用和空閑資源的內存情況
sar:網口網絡流量使用情況、系統調用情況、IO、RAM使用情況、進程活動情況等
EthTool:網卡狀態/驅動版本信息、收發數據信息查詢等配置查詢
Iostat:統計磁盤IO情況、飽和度、使用率等
CacheLine對齊應用層優化可以避免內存偽共享
鎖
無鎖編程
大鎖邊小鎖
高性能原子操作指令
Google Tcmalloc通過減少內存分配中的鎖以提升高并發下的性能
“使用線程緩存,尺寸小于256K的小內存申請均由ThreadCache進行分配;通過TreadCache分配過程中不需要任何鎖,可以極大的提高分配速度”
鯤鵬社區
鯤鵬文檔:案例
鯤鵬軟件:8+ OS安裝包(CentOS Ubuntu等) 200+主流軟件
鯤鵬論壇:問題求助、經驗分享。專家值班,5分鐘相應,普通問題2小時閉環
認證查詢:400+鯤鵬計算兼容性認證查詢和證書獲取
鯤鵬小智:
兼容軟件查詢:快速獲取鯤鵬平臺以兼容的軟件詳細信息以及指導文檔及源碼下載
鏡像包查詢:一鍵獲取華為鏡像站、mvn倉庫中已編譯的Jar包及組件rpm包
匯編指令查詢:快速獲取常用匯編指令,從X86歉意到鯤鵬平臺的替換指令,加速代碼遷移
經驗文檔檢索
代碼遷移工具(Porting Advisor)
C/C++源代碼文件
匯編源代碼文件
Makefile文件
準確定位代碼修改點以及修改指導
輸入
分析掃描工具(Dependency Advisor):
軟件安裝包(rpm/deb/tar軟件包、安裝路徑)
源碼文件(C/C++/JAVA/匯編源代碼文件、MakeFile文件)
輸入
提升軟件移植分析效率和準確率
性能優化工具(Tuning Kit):
CPU使用情況,DDR&Cache統計
DISK IO/NIC使用情況和質量分析
進程/線程、鎖資源占用情況
Top熱點函數
創建工作任務
配置任務屬性參數(分析類型、軟件路徑、采樣率等)
運行軟件
輸入
分析處理
圖形化輸出
兼容性查詢:1、開源軟件 2、商業軟件 3、操作系統
鯤鵬 運籌優化 軟件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。