
-
- 排查順序
- 方法論
- 性能分析工具
- CPU分析思路
- 內(nèi)存分析思路
- IO分析思路
- 網(wǎng)絡(luò)分析思路
- 基準(zhǔn)測(cè)試工具
- 參考
排查順序
整體情況:-
top/htop/atop
命令查看進(jìn)程/線程、CPU、內(nèi)存使用情況,CPU使用情況; -
dstat 2
查看CPU、磁盤IO、網(wǎng)絡(luò)IO、換頁(yè)、中斷、切換,系統(tǒng)I/O狀態(tài); -
vmstat 2
查看內(nèi)存使用情況,內(nèi)存狀態(tài); -
iostat -d -x 2
查看所有磁盤的IO情況,系統(tǒng)I/O狀態(tài); -
iotop
查看IO靠前的進(jìn)程,系統(tǒng)的I/O狀態(tài); -
perf top
查看占用CPU最多的函數(shù),CPU使用情況; -
perf record -ag -- sleep 15;perf report
查看CPU事件占比,調(diào)用棧,CPU使用情況; -
sar -n DEV 2
查看網(wǎng)卡的吞吐,網(wǎng)卡狀態(tài); -
/usr/share/bcc/tools/filetop -C
查看每個(gè)文件的讀寫(xiě)情況,系統(tǒng)的I/O狀態(tài); -
/usr/share/bcc/tools/opensnoop
顯示正在被打開(kāi)的文件,系統(tǒng)的I/O狀態(tài); -
mpstat -P ALL 1
單核CPU是否被打爆; -
ps aux --sort=-%cpu
按CPU使用率排序,找出CPU消耗最多進(jìn)程; -
ps -eo pid,comm,rss | awk '{m=$3/1e6;s["*"]+=m;s[$2]+=m} END{for (n in s) printf"%10.3f GB %s\n",s[n],n}' | sort -nr | head -20
統(tǒng)計(jì)前20內(nèi)存占用;
-
awk 'NF>3{s["*"]+=s[$1]=$3*$4/1e6} END{for (n in s) printf"%10.1f MB %s\n",s[n],n}' /proc/slabinfo | sort -nr | head -20
統(tǒng)計(jì)內(nèi)核前20slab的占用;
-
pidstat 2 -p 進(jìn)程號(hào)
查看可疑進(jìn)程CPU使用率變化情況; -
pidstat -w -p 進(jìn)程號(hào) 2
查看可疑進(jìn)程的上下文切換情況; -
pidstat -d -p 進(jìn)程號(hào) 2
查看可疑進(jìn)程的IO情況; -
lsof -p 進(jìn)程號(hào)
查看進(jìn)程打開(kāi)的文件; -
strace -f -T -tt -p 進(jìn)程號(hào)
顯示進(jìn)程發(fā)起的系統(tǒng)調(diào)用;
-
ethtool -S
查看網(wǎng)卡硬件情況; -
cat/proc/net/softnet_stat/ifconfig eth1
查看網(wǎng)卡驅(qū)動(dòng)情況; -
netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
查看連接狀態(tài)分布; -
ss -ntp
或者netstat -ntp
查看連接隊(duì)列; -
查看協(xié)議棧情況;netstat -s
方法論
RED方法:監(jiān)控服務(wù)的請(qǐng)求數(shù)(Rate)、錯(cuò)誤數(shù)(Errors)、響應(yīng)時(shí)間(Duration)。Weave Cloud在監(jiān)控微服務(wù)性能時(shí)提出的思路。USE方法:監(jiān)控系統(tǒng)資源的使用率(Utilization)、飽和度(Saturation)、錯(cuò)誤數(shù)(Errors)。
性能分析工具

CPU分析思路
首先,從 CPU 的角度來(lái)說(shuō),主要的性能指標(biāo)就是 CPU 的使用率、上下文切換以及 CPU Cache 的命中率等。下面這張圖就列出了常見(jiàn)的 CPU 性能指標(biāo)。


內(nèi)存分析思路
接著我們來(lái)看內(nèi)存方面。從內(nèi)存的角度來(lái)說(shuō),主要的性能指標(biāo),就是系統(tǒng)內(nèi)存的分配和使用、進(jìn)程內(nèi)存的分配和使用以及 SWAP 的用量。下面這張圖列出了常見(jiàn)的內(nèi)存性能指標(biāo)。

IO分析思路
從文件系統(tǒng)和磁盤 I/O 的角度來(lái)說(shuō),主要性能指標(biāo),就是文件系統(tǒng)的使用、緩存和緩沖區(qū)的使用,以及磁盤 I/O 的使用率、吞吐量和延遲等。下面這張圖列出了常見(jiàn)的 I/O 性能指標(biāo)。


網(wǎng)絡(luò)分析思路
從網(wǎng)絡(luò)的角度來(lái)說(shuō),主要性能指標(biāo)就是吞吐量、響應(yīng)時(shí)間、連接數(shù)、丟包數(shù)等。根據(jù) TCP/IP 網(wǎng)絡(luò)協(xié)議棧的原理,我們可以把這些性能指標(biāo),進(jìn)一步細(xì)化為每層協(xié)議的具體指標(biāo)。這里我同樣用一張圖,分別從鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層,列出了各層的主要指標(biāo)。


基準(zhǔn)測(cè)試工具
除了性能分析外,很多時(shí)候,我們還需要對(duì)系統(tǒng)性能進(jìn)行基準(zhǔn)測(cè)試。比如,- 在文件系統(tǒng)和磁盤 I/O 模塊中,我們使用 fio 工具,測(cè)試了磁盤 I/O 的性能。
- 在網(wǎng)絡(luò)模塊中,我們使用 iperf、pktgen 等,測(cè)試了網(wǎng)絡(luò)的性能。
- 而在很多基于 Nginx 的案例中,我們則使用 ab、wrk 等,測(cè)試 Nginx 應(yīng)用的性能。

參考
- 相當(dāng)一部分內(nèi)容來(lái)自極客時(shí)間出品的倪鵬飛專欄《Linux性能優(yōu)化》, 這是之前這個(gè)專欄的學(xué)習(xí)筆記。
- 另一份資料是IBM紅寶書(shū)Linux性能調(diào)優(yōu)指南。
- 此外,The Linux Documentation Project是一個(gè)非常好的資料庫(kù)。
- 將硬件中斷的處理任務(wù)分配個(gè)多個(gè)CPU:SMP affinity and proper interrupt handling in Linux
- Hidden Costs of Memory Allocation
- https://www.lijiaocn.com/soft/linux/
END
ARM嵌入式開(kāi)發(fā) · 嵌入式產(chǎn)品與方案
開(kāi)發(fā)板/核心板/主板/整機(jī)
OEM/ODM
原文標(biāo)題:Linux問(wèn)題分析與性能優(yōu)化
文章出處:【微信公眾號(hào):?jiǎn)P(yáng)ARM嵌入式開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213840
發(fā)布評(píng)論請(qǐng)先 登錄
推進(jìn)電機(jī)端蓋結(jié)構(gòu)的抗沖擊分析及優(yōu)化
開(kāi)源系統(tǒng)適配:聚徽分享國(guó)產(chǎn)工控平板在 Linux / 鴻蒙系統(tǒng)下的技術(shù)優(yōu)化
鴻蒙5開(kāi)發(fā)寶藏案例分享---Grid性能優(yōu)化案例
鴻蒙5開(kāi)發(fā)寶藏案例分享---性能優(yōu)化案例解析
VirtualLab:光柵的優(yōu)化與分析
Linux系統(tǒng)配置優(yōu)化技巧
HarmonyOS NEXT 原生應(yīng)用/元服務(wù)-DevEco Profiler性能優(yōu)化過(guò)程
VirtualLab Fusion應(yīng)用:光柵的魯棒性分析與優(yōu)化
如何優(yōu)化emc存儲(chǔ)性能
如何優(yōu)化SOC芯片性能
使用Arthas火焰圖工具的Java應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)

評(píng)論