分享根據課程圖片整理的筆記,有興趣的也可以去購買學習該門課程 《Linux效能優化》
前言
實驗環境:ubuntu 18.04、切換至root許可權下操作
檢視命令詳細使用方法,可以:man xxx
提及到路徑的話,一般可以 cat /x/xx/xxx
提及到工具的話,如果沒安裝,可以:apt-get install xxx
CPU篇
CPU效能指標
根據指標找工具
效能指標 | 工具 | 說明 |
---|---|---|
平均負載 | 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效能優化分析
記憶體篇
記憶體效能指標
根據指標找工具
記憶體指標 | 效能工具 |
---|---|
系統已用、可用、剩餘記憶體 | 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 | 檢視指定檔案的快取情況 |
記憶體效能優化分析
I/O篇
I/O效能指標
根據指標找工具
效能指標 | 工具 | 說明 |
---|---|---|
檔案系統空間容量、使用量以及剩餘空間 | 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效能優化分析
網路篇
根據指標找工具
效能指標 | 工具 | 說明 |
---|---|---|
吞吐量(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 協議》,轉載必須註明作者和本文連結