Linux 效能優化筆記

GetaChan發表於2020-01-06

分享根據課程圖片整理的筆記,有興趣的也可以去購買學習該門課程 《Linux效能優化》

前言

實驗環境:ubuntu 18.04、切換至root許可權下操作

檢視命令詳細使用方法,可以:man xxx
提及到路徑的話,一般可以 cat /x/xx/xxx
提及到工具的話,如果沒安裝,可以:apt-get install xxx

CPU篇

CPU效能指標

Linux 效能優化

根據指標找工具

效能指標 工具 說明
平均負載 uptime
top
uptime最簡單;
top提供了更全的指標
系統整體CPU使用率 vmstat
mpstat
top
sar
/proc/stat
top、vmstat、mpstat只可以動態檢視,

/proc/stat/是其他效能工具的資料來源
程式CPU使用率 top
pidstat
ps
htop
atop
top和ps可以按CPU使用率給程式排序,
而pidstat只顯示實際用了CPU的程式

htop和atop以不同顏色顯示更為直觀
系統上下文切換 vmstat 除了上下文切換次數,
還提供執行狀態和不可中斷狀態程式的數量
程式上下文切換 pidstat 注意加上-w 選項
軟中斷 top
/proc/softirqs
mpstat
top提供軟中斷CPU使用率,
而/proc/softirqs和mpstat提供了各種軟中斷在每個CPU上的執行次數
硬中斷 vmstat
/proc/interrupts
vmstat提供總的中斷次數,
而/proc/interrupts提供各種中斷在每個CPU上執行的累積次數
網路 dstat
sar
tcpdump
dstat和sar提供總的網路接收和傳送情況,
而tcpdump則是動態抓取正在進行的網路通訊
I/O dstat
sar
dstat和sar都提供了I/O的整體情況
CPU個數 /proc/cpuinfo
lscpu
lscpu更直觀
事件剖析 perf
execsnoop
perf可以用來分析CPU的快取以及核心呼叫鏈,execsnoop用來監控短時程式

根據工具查指標

效能工具 CUP效能指標
uptime 平均負載
top 平均負載、執行佇列、整體的CPU使用率以及每個程式的狀態和
CPU使用率
htop top增強版,以不同顏色區分不同型別的程式,更直觀
atop CPU、記憶體、磁碟和網路等各種資源的全面監控
vmstat 系統整體的CPU使用率、上下文切換次數、中斷次數、
還包括處於執行和不可中斷狀態的程式數量
mpstat 每個CPU的使用率和軟中斷次數
pidstat 程式和執行緒的CPU使用率、中斷上下文切換次數
/proc/softirqs 軟中斷型別和在每個CPU上的累積中斷次數
/proc/interrupts 硬中斷型別和在每個CPU上的累積中斷次數
ps 每個程式的狀態和CPU使用率
pstree 程式的父子關係
dstat 系統整體的CPU使用率
sar 系統的整體CPU使用率,包括可配置的歷史資料
strace 程式的系統呼叫
perf CPU效能事件剖析,如呼叫鏈分析、CPU快取、CPU排程
execsnoop 監控短時程式

CPU效能優化分析

Linux 效能優化

記憶體篇

記憶體效能指標

Linux 效能優化

根據指標找工具

記憶體指標 效能工具
系統已用、可用、剩餘記憶體 free
vmstat
sar
/proc/meminfo
程式虛擬記憶體、常駐記憶體、共享記憶體 ps
top
程式記憶體分佈 pmap
程式Swap換出記憶體 top
/proc/pid/status
程式缺頁異常 ps
top
系統換頁情況 sar
快取(Cache)/緩衝區(Buffer)用量 free
vmstat
sar
cachestat
快取(Cache)/緩衝區(Buffer)用量 cachetop
SWAP已用空間和剩餘空間 free
sar
Swap換入換出 vmstat
記憶體洩漏檢測 memleak
valgrind
指定檔案的快取大小 pcstat

根據工具查指標

效能工具 記憶體指標
free
/proc/meninfo
系統已用、可用、剩餘記憶體以及快取和緩衝區的使用量
top
ps
程式虛擬、常駐、共享記憶體以及缺頁異常
vmstat 系統剩餘記憶體、快取、緩衝區、換入、換出
sar 系統部分記憶體換頁情況、記憶體使用率、快取和緩衝區用量
以及Swap
cachestat 系統快取和緩衝區的命中率
cachetop 程式快取和緩衝區的命中率
slabtop 系統Slab快取使用情況
/proc/pid/status 程式Swap記憶體等
/proc/pid/smaps
pmap
程式地址空間和記憶體狀態
valgrind 程式記憶體錯誤檢查器,用來檢測記憶體初始化、洩漏、
越界訪問等各種記憶體錯誤
memleak 記憶體洩漏檢測
pcstat 檢視指定檔案的快取情況

記憶體效能優化分析

Linux 效能優化

I/O篇

I/O效能指標

Linux 效能優化

根據指標找工具

效能指標 工具 說明
檔案系統空間容量、使用量以及剩餘空間 df 詳細文件見
info coreutils 'df invocation'
索引結點容量、使用量以及剩餘量 df 使用 -i 選項
頁面快取和可回收Slab快取 /proc/meminfo
sar、vmstat
使用 sar -r 選項
緩衝區 /proc/meminfo
sar、vmstat
使用 sar -r 選項
目錄項、索引節點以及檔案系統的快取 /proc/slabinfo
slabtop
slabtop更直觀
磁碟I/O使用率、IOPS、
吞吐量、響應時間、I/O平均大小
以及等待佇列長度
iostat
sar、dstat
使用 iostat -d -x 或 sar -d 選項
程式I/O大小以及I/O延遲 pidstat
iotop
使用 pidstat -d 選項
塊裝置I/O事件跟蹤 blktrace 示例:blktrace -d /dev/sda -o- (管道符) blkparse -i-
程式I/O系統呼叫跟蹤 strace 通過系統呼叫跟蹤程式的I/O
程式塊裝置I/O大小跟蹤 biosnoop
biotop
需要安裝bcc軟體包

根據工具查指標

效能工具 效能指標
iostat 磁碟I/O使用率、IOPS、吞吐量、響應時間、I/O平均大小以及等待佇列長度
pidstat 程式I/O大小以及I/O延遲
sar 磁碟I/O使用率、IOPS、吞吐量以及響應時間
dstat 磁碟I/O、IPOS以及吞吐量
iotop 按I/O大小對程式排序
slabtop 目錄項、索引結點以及檔案系統的快取
/proc/slabinfo 目錄項、索引結點以及檔案系統的快取
/proc/meminfo 頁快取和可回收Slab快取
/proc/diskstats 磁碟的IOPS、吞吐量以及延遲
/proc/pid/io 程式IOPS、I/O大小以及I/O延遲
vmstat 快取和緩衝區用量彙總
blktrace 跟蹤塊裝置I/O事件
biosnoop 跟蹤程式的塊裝置I/O大小
biotop 跟蹤程式的並按I/O大小排序
strace 跟蹤程式的I/O系統呼叫
perf 跟蹤核心中的I/O事件
df 磁碟空間和索引結點使用量和剩餘量
mount 檔案系統的掛載路徑以及掛載引數
du 目錄佔用的磁碟空間大小
tune2fs 顯示和設定檔案系統引數
hdparam 顯示和設定磁碟引數

I/O效能優化分析

Linux 效能優化

網路篇

根據指標找工具

效能指標 工具 說明
吞吐量(BPS) sar
nethogs
iftop
分別可以檢視網路介面、程式以及IP地址的網路吞吐量
PPS sar
/proc/net/dev
檢視網路介面的PPS
連線數 nestat
ss
檢視網路連線數
延遲 ping
hping3
通過ICMP、TCP等測試網路延遲
連線跟蹤數 conntrack 檢視和管理連線跟蹤狀況
路由 mtr
route
traceroute
檢視路由並測試鏈路資訊
DNS dig
nslookup
排查DNS解析問題
防火牆和NAT iptables 配置和管理防火牆及NAT規則
網路卡功能 ethtool 檢視和配置網路介面的功能
抓包 tcpdump
Wireshark
抓包分析網路流量
核心協議棧跟蹤 bcc
systemtap
動態跟蹤核心協議棧的行為

根據工具查指標

效能工具 主要功能
ifconfig
ip
配置和檢視網路介面
ss 檢視網路連線數
sar
/proc/net/dev/sys/class/net/eth0/statistics
檢視網路介面的收發情況
nethogs 檢視程式的網路收發情況
iftop 檢視IP的網路收發情況
ethool 檢視和配置網路介面
conntrack 檢視和管理連線跟蹤狀況
nslookup
dig
排查DNS解析問題
mtr
route
traceroute
檢視路由並測試鏈路資訊
ping
hping3
測試網路延遲
tcpdump 網路抓包工具
Wireshark 網路抓包和圖形介面分析工具
iptables 配置和管理防火牆及NAT規則
perf 剖析核心協議棧的效能
systemtap
bcc
動態追蹤核心協議棧的行為

結語

“紙上得來終覺淺,絕知此事要躬行。”

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章