Linux 性能優化基礎

文章目錄

    • 常見指標分類(USE法)
    • 常見性能工具
      • CPU性能工具
      • 內存性能工具
      • 文件系統和磁盤I/O性能工具
      • 網絡性能工具
    • 根據指標找工具
      • CPU性能
      • 內存性能
      • 文件系統和磁盤I/O
      • 網絡性能
    • 根據工具找指標
      • CPU性能
      • 內存性能
      • 文件系統和磁盤I/O
      • 網絡性能
    • CPU性能分析一般步驟
    • 內存性能分析一般步驟
    • I/O性能分析一般步驟
    • 網絡性能分析一般步驟
    • 參考

常見指標分類(USE法)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

資源類型性能指標
CPU使用率CPU使用率
CPU飽和度運行隊列長度或平均負載
CPU錯誤數硬件cpu錯誤數
內存使用率已用內存百分比或SWAP用量百分比
內存飽和度內存換頁量
內存錯誤數內存分配失敗或OOM
存儲設備I/O使用率設備I/O事件百分比
存儲設備I/O飽和度等待隊列產犢或延遲
存儲設備I/O錯誤數I/O錯誤數
文件系統使用率已用容量百分比
文件系統飽和度已用容量百分比
文件系統錯誤數文件讀寫錯誤數
網絡使用率帶寬使用率
網絡飽和度重傳報文數
網絡錯誤數網卡收發錯誤數、丟包數
文件描述符使用率已用文件描述符數百分比
連接跟蹤使用率已用連接跟蹤數百分比
連接數飽和度TIMEWAIT狀態連接數

常見性能工具

CPU性能工具

性能指標性能工具說明
平均負載uptime、top、/proc/loadavguptime最簡單;top提供更全的指標;/proc/loadavg常用于監控系統
系統CPU使用率vmstat, mpstat, top, sar, /proc/stattop、vmstat、mpstat只可以動態查看,而sar還可以記錄歷史數據;/proc/stat是其他性能工具的數據來源,也常用于監控
進程CPU使用率top, ps, pidstat, htop, atoptop和ps可以按CPU使用率給進程排序,而pidstat只顯示實際用了CPU的進程;htop和atop以不同顏色顯示更直觀
系統上下文切換vmstat除了上下文切換次數,還提供運行狀態和不可中斷狀態的進程數
進程上下文切換pidstat注意加上-w參數
軟中斷top, mpstat, /proc/softirqstop提供軟中斷cpu使用率,而/proc/softirqs和mpstat提供了各種軟中斷在每個CPU上的運行次數
硬中斷vmstat, /proc/interruptsvmstat提供總的中斷次數,而/proc/interrupts提供各種中斷在每個CPU上運行的累計次數
網絡dstat, sar, tcpdumpdstat、sar提供總的網絡接受和發送情況,而tcpdump則是動態抓取正在進行的網絡通訊
I/Odstat, sardstat和sar都提佛那個了I/O的整體情況
CPU緩存perf使用perf stat子命令
CPU數lscpu, /proc/cpuinfolscpu更直觀
事件剖析perf, 火焰圖, execsnoopperf和火焰圖用來分析熱點函數以及調用棧,execsnoop用來監測短時進程
動態追蹤ftrace, bcc, systemtapftrace用于跟蹤內核函數調用棧,而bcc和systemtap則用于跟蹤內核或應用程序的執行過程(注意bcc要求內核>=4.1)

內存性能工具

性能指標性能工具說明
系統已用、可用、剩余內存free, vmstat, sar, /proc/meminfofree最為簡單,而vmstat、sar更為全面;/proc/meminfo是其他工具的數據來源,也常用于監控系統中
進程虛擬內存、常駐內存、共享內存ps, top, pidstat, /proc/pid/stat, /proc/pid/statusps和top最簡單,而pidstat則需要加上-r選項;/proc/pid/stat和/proc/pid/status是其他工具的數據來源,也常用于監控系統中
進程內存分布pmap, /proc/pid/maps/proc/pid/maps是pmap的數據來源
進程SWAP換出內存top, /proc/pid/status/proc/pid/status是top的數據來源
進程缺頁異常ps, top, pidstat注意給pidstat加上-r選項
系統換頁情況sar注意加上-B選項
緩存/緩沖區用量free, vmstat, sar, cachestatvmstat最常用,而cachestat需要安裝bcc
緩存/緩沖區命中率cachetop需要安裝bcc
SWAP已用空間和剩余空間free, sarfree最為簡單,而sar還可以記錄歷史
SWAP換入換出vmstat, sarvmstat最為簡單,而sar還可以記錄歷史
內存泄漏檢測memleak, valgrindmemleak需要安裝bcc,valgrind還可以在舊版本(3.x)內核中使用
指定文件的緩存大小pcstat需要從源碼下載安裝

文件系統和磁盤I/O性能工具

性能指標性能工具說明
文件系統空間容量、使用量以及剩余空間df詳細文檔可以執行info coreutils 'df invocation’命令查看
索引節點容量、使用量以及剩余量df注意加上-i選項
頁緩存和可回收Slab緩存/proc/meminfo, sar, vmstat注意sar需要加上-r選項,而/proc/meminfo是其他工具的數據來源,也常用于監控系統
緩沖區/proc/meminfo, sar, vmstat注意sar需要加上-r選項,而/proc/meminfo是其他工具的數據來源,也常用于監控系統
目錄項、索引節點以及文件系統的緩存/proc/slabinfo, slabtopslabtop更直觀,而/proc/slabinfo常用于監控
磁盤I/O使用率、IOPS、吞吐量、響應時間、I/O平均大小以及等待隊列長度iostat, sar, dstat, /proc/diskstatsiostat最為常用,注意使用iostat -d -x或sar -d選項;/proc/diskstats則是其他工具的數據來源,也常用于監控
進程I/O大小以及I/O延遲pidstat, iotop注意使用pidstat -d選項
塊設備I/O事件跟蹤blktrace需要跟blkparse配合使用,比如blktrace -d /dev/sda -o- | blkparse -|-
進程I/O系統調用跟蹤strace, perf tracestrace只可以跟蹤單個進程,而perf trace還可以跟蹤所用進程的系統調用
進程塊設備I/O大小跟蹤biosnoop, biotop需要安裝bcc
動態追蹤ftrace, bcc, systemtapftrace用于跟蹤內核函數調用棧,而bcc和systemtap則用于跟蹤內核或應用程序的執行過程(注意bcc要求內核版本>= 4.1)

網絡性能工具

性能指標性能工具說明
吞吐量(BPS)sar, nethogs, iftop, /proc/net/dev分別可以查看網絡接口、進程以及IP地址的網絡吞吐量;/proc/net/dev常用于監控
吞吐量(PPS)sar, /proc/net/dev注意使用sar -n DEV選項
網絡連接數netstat, ssss速度更快
網絡錯誤數netstat, sar注意使用netstat -s或者sar -n EDEV/EIP選項
網絡延遲ping, hping3ping基于ICMP,而hping3基于TCP協議
連接跟蹤數conntrack, /proc/sys/net/netfilter/nf_conntrack_count, /proc/sys/net/netfilter/nf_conntrack_macconntrack可用來查看所用連接跟蹤的相關信息,nf_conntrack_count只是連接跟蹤的數量,而nf_conntrack_mac則限制了總的連接跟蹤數量
路由mtr, traceroute, routeroute用于查詢路由表,而mtr和traceroute則用來排查和定位網絡鏈路中的路由問題
DNSdig, nslookup用于排查DNS解析的問題
防火墻和NATiptables用于排查防火墻及NAT的問題
網卡選項ethtool用于查看和配置網絡接口的功能選項
網絡抓包tcpdump, wireshark通常在服務器中使用tcpdump抓包后再復制出來用wireshark的圖形界面分析
動態追蹤ftrace, bcc, systemtapftrace用于跟蹤內核函數調用棧,而bcc和systemtap則用于跟蹤內核或應用程序的執行過程(注意bcc要求內核版本>= 4.1)

根據指標找工具

CPU性能

性能指標性能工具說明
平均負載uptime、topuptime最簡單、top提供了更全的指標
系統整體CPU使用率vmstat、mpstat、top、sar、/proc/stattop、vmstat、mpstat只可以動態查看,而sar還可以記錄歷史數據;/proc/stat是其他性能工具的數據來源,也常用于監控
進程CPU使用率top、pidstat、ps、htop、atoptop和ps可以按CPU使用率給進程排序,而pidstat只顯示實際用了CPU的進程;htop和atop以不同顏色顯示更直觀
系統上下文切換vmstat除了上下文切換次數,還提供運行狀態和不可中斷狀態的進程數
進程上下文切換pidstat注意加上-w參數
軟中斷top、/proc/softirq、mpstattop提供軟中斷cpu使用率,而/proc/softirqs和mpstat提供了各種軟中斷在每個CPU上的運行次數
硬中斷vmstat、/proc/interruptsvmstat提供總的中斷次數,而/proc/interrupts提供各種中斷在每個CPU上運行的累計次數
網絡dstat、sar、tcpdumpdstat、sar提供總的網絡接受和發送情況,而tcpdump則是動態抓取正在進行的網絡通訊
I/Odstat、sardstat和sar都提佛那個了I/O的整體情況
CPU個數/proc/cpuinfo、lscpulscpu更直觀
事件剖析perf、execsnoopper可以用來分析CPU的換粗以及內核調用棧,execsnoop用來監測短時進程

內存性能

性能指標性能工具
系統已用、可用、剩余內存free、vmstat、sar、/proc/meminfo
進程虛擬內存、常駐內存、共享內存ps、top
進程內存分布pmap
進程Swap換出內存top、/proc/pid/status
進程缺頁異常ps、top
系統換頁情況sar
緩存/緩沖區用量free、vmstat、sar、cachestat
緩存/緩沖區命中率cachetop
SWAP已用空間和剩余空間free、sar
Swap換入換出vmstat
內存泄漏檢測memleak、valgrind
指定文件的緩存大小pcstat

文件系統和磁盤I/O

性能指標性能工具說明
文件系統空間容量、使用量以及剩余空間df詳細文檔見info coreutils ‘df invocation’
索引節點容量、使用量以及剩余量df使用-i選項
頁緩存和可回收slab緩存/proc/meminfo、sar、vmstat使用sar -r選項
緩沖區/proc/meminfo、sar、vmstat使用sar -r選項
目錄項、索引節點以及文件系統的緩存/proc/slabinfo、slabtopslabtop更直觀
磁盤I/O使用率、IOPS、吞吐量、響應時間、I/O平均大小以及等待隊列長度iostat、sar、dstat使用iostat -d -x或sar -d選項
進程I/O大小以及I/O延遲pidstat、iotop使用pidstat -d選項
塊設備I/O系統調用跟蹤blktraceblktrace -d /dev/sda -o-|blkparse -i-
進程I/O系統調用跟蹤strace通過系統調用跟蹤進程I/O
進程塊設備I/O大小跟蹤biosnoop、biotop需要安裝bcc軟件包

網絡性能

性能指標性能工具說明
吞吐量(BPS)sar、nethogs、iftop分別可以查看網絡接口、進程以及IP地址的網絡吞吐量
PPSsar、/proc/net/dev查看網絡接口的PPS
連接數netstat、ss查看網絡連接數
延遲ping、hping3通過ICMP、TCP等測試網絡延遲
連接跟蹤數conntrack查看和管理連接跟蹤情況
路由mtr、route、traceroute查看路由并測試鏈路信息
DNSdig、nslookup排查DNS解析問題
防火墻和NATiptables配置和管理防火墻及NAT規則
網卡功能ethtool查看和配置網絡接口的功能
抓包tcpdump、wireshark抓包分析網絡流量
內核協議棧跟蹤bcc、systemtap動態跟蹤內核協議棧的行為

根據工具找指標

CPU性能

性能工具CPU性能指標
uptime平均負載
top平均負載、運行隊列、整體的CPU使用率以及每個進程的狀態和CPU使用率
htoptop增強版,以不同顏色區分不同類型的進程
atopCPU、內存、磁盤和網絡等各種資源的全面監控
vmstat系統整體的CPU使用率、上下文切換次數、中斷次數,還包括處于運行和不可中斷狀態的進程數量
mpstat每個CPU的使用率和軟中斷次數
pidstat進程和線程的CPU使用率、中斷上下文切換次數
/proc/softirq軟中斷類型和在每個CPU上的累積中斷次數
/proc/interrupts軟中斷類型和在每個CPU上的累積中斷次數
ps每個進程的狀態和CPU使用率
pstree進程的父子關系
dstat系統整體的CPU使用率
sar系統整體的CPU使用率,包括可配置的歷史數據
strace進程的系統調用
perfCPU性能事件剖析,如調用鏈分析、CPU緩存、CPU調度等
execsnoop監控短時進程

內存性能

性能工具內存指標
free、/proc/meminfo系統已用、可用、剩余內存以及緩存和緩沖區的使用量
top、ps進程虛擬、常駐、共享內存以及缺頁異常
vmstat系統剩余內存、緩存、緩沖區、換入、換出
sar系統內存換頁情況、內存使用率、緩存和緩沖區用量以及Swap使用情況
cachestat系統緩存和緩沖區的命中率
cachetop進程緩存和緩沖區的命中率
slabtop系統slab緩存使用情況
/proc/pid/status進程swap內存等
/proc/pid/smaps、pmap進程地址空間和內存狀態
valgrind進程內存錯誤檢查器,用來檢測內存初始化、泄漏、越界訪問等各種內存錯誤
memleak內存泄漏檢測
pcstat查看指定文件的緩存情況

文件系統和磁盤I/O

性能工具性能指標性能工具性能指標
iostat磁盤I/O使用率、IOPS、吞吐量、響應時間、I/O平均大小以及等待隊列長度blktrace跟蹤塊設備I/O事件
pidstat進程I/O大小以及I/O延遲biosnoop跟蹤進程的塊設備I/O大小
sar磁盤I/O使用率、IOPS、吞吐量以及響應時間biotop跟蹤進程塊I/O并按照I/O大小排序
dstat磁盤I/O使用率、IOPS以及吞吐量strace跟蹤進程的I/O系統調用
iotop按I/O大小對進程排序perf跟蹤內核中的I/O事件
slabtop目錄項、索引節點以及文件系統的緩存df磁盤空間和索引節點使用量和剩余量
/proc/slabinfo目錄項、索引節點以及文件系統的緩存mount文件系統的掛在路徑以及掛載參數
/proc/meminfo頁緩存和可回收的slab緩存du目錄占用的磁盤空間大小
/proc/diskstats磁盤的IOPS、吞吐量以及延遲tune2fs顯示和設置文件系統參數
/proc/pid/io進程IOPS、I/O大小以及I/O延遲hdparam顯示和設置磁盤參數
vmstat緩存和緩沖區用量匯總

網絡性能

性能工具主要功能
ifconfig、ip配置和查看網絡接口
ss查看網絡連接數
sar、/proc/net/dev/sys/class/net/eth0/statistics/查看網絡接口的網絡收發情況
nethogs查看進程的網絡收發情況
iftop查看IP的網絡收發情況
ethtool查看和配置網絡接口
conntrack查看和管理連接跟蹤情況
nslookup、dig排查DNS解析問題
mtr、route、traceroute查看路由并測試鏈路信息
ping、hping3測試網絡延遲
tcpdump網絡抓包工具
wireshark網絡抓包和圖形界面分析工具
iptables配置和管理防火墻及NAT規則
perf剖析內核協議棧的性能
systemtap、bcc動態追蹤內核協議棧的行為

CPU性能分析一般步驟

在這里插入圖片描述

內存性能分析一般步驟

在這里插入圖片描述

I/O性能分析一般步驟

在這里插入圖片描述

網絡性能分析一般步驟

在這里插入圖片描述

參考

Phoronix Test Suite
OpenBenchmarking.org
Linux 性能優化實戰
性能之巔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24235.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24235.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24235.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++題解】1254. 求車速

問題:1254. 求車速 類型:簡單循環 題目描述: 一輛以固定速度行駛的汽車,司機在上午 10 點看到里程表上的讀數是一個對稱數(即這個數從左向右讀和從右向左讀是完全一樣的),為95859 。 兩小時后里程表上 出現了一個新的…

不明確的unicode字符

不明確的unicode字符 起因:一個Demo源碼,也不知道是用什么編輯器編的,中文注釋非常全面。就打算原來的基礎上改改就用,特別是里面大量接口、類的定義,真沒必要重寫。但是在VS Code里面打開,出現“本文檔包含…

k-means聚類模型的優缺點

一、k-means聚類模型的優點 1. 簡單高效:k-means算法思想簡單直觀,易于實現。它通過迭代計算樣本點與聚類中心之間的距離,并不斷調整聚類中心的位置,直至滿足終止條件。由于其計算過程相對直接,所以具有較高的執行效率…

控制臺輸入javac命令輸出的結果中的中文亂碼解決方式

默認字符編碼UTF-8無法解析中文。設置環境變量中 “JAVA_TOOL_OPTIONS” 的值為"UTF-8" 即可。 具體配置步驟: 桌面右鍵"我的電腦" --> 屬性 高級系統設置 環境變量 用戶變量中添加 JAVA_TOOL_OPTIONS 然后確定,保存即可。

阿里云一鍵登錄號碼認證服務

阿里云文檔:號碼認證SDK_號碼認證服務(PNVS)-阿里云幫助中心 對于后端大概流程 前端App會傳一個token過來 后端通過下面方法解析 如果解析可以獲得號碼,說明號碼認證成功,如果無法正確解析則認證失敗 /*** actoken來換取電話號碼* param token app端用戶授權actok…

WDF驅動開發-PNP和電源管理(二)

下面是一種比較典型的 PnP 和電源管理方案,WDF框架在這些情況下調用驅動程序的事件回調函數: 用戶插入設備用戶拔出設備設備進入低功耗狀態設備回到工作狀態PnP 管理器重新分發系統資源 這些幾乎是所有的和PNP、電源管理相關的場景了,它們分…

達夢8 網絡中斷對系統的影響

測試環境:三節點實時主從 版本:--03134283938-20221019-172201-20018 測試1 系統沒有啟動確認監視器 關閉節點3網卡 登錄節點1檢查主庫狀態 顯示向節點2發送歸檔成功,但無法收到節點3的消息,節點1掛起 日志報錯如下&#xf…

易于上手的requests

Python中的requests庫主要用于發送HTTP請求并獲取響應結果。在現代網絡編程中,HTTP請求是構建客戶端與服務器之間通信的基礎。Python作為一種高級編程語言,其豐富的庫支持使得它在網絡數據處理領域尤為突出。其中,requests庫以其簡潔、易用的…

力扣560. 和為 K 的子數組

Problem: 560. 和為 K 的子數組 文章目錄 題目描述思路復雜度Code 題目描述 思路 1.初始化一個哈希表preSum,用于記錄前綴和及其出現次數,ans記錄和為k的子數組數量、sum_i記錄當前前綴和; 2.將前綴和為 0 的情況存入哈希表,表示前綴和為 0 出…

【Python】認識 Python

一、計算機基礎概念 1、什么是計算機 很多老一輩的人,管下面這個叫做計算機。然而,它只是 “計算器”,和計算機是有很大區別的。 現在我們所說的計算機,不光能進行算術運算,還能進行邏輯判斷、數據存儲、網絡通信等…

遇到no module named ‘pyLDAvis.sklearn‘的解決辦法

在NLP學習中,常常用到LDA主題模型對文本進行分類,可視化經常用到的代碼有 import pyLDAvis import pyLDAvis.sklearnpanel pyLDAvis.sklearn.prepare(lda, tf_idf, tf_idf_vectorizer) pyLDAvis.save_html(panel, lda_visualization.html) pyLDAvis.di…

HTML靜態網頁成品作業(HTML+CSS)—— 節日母親節介紹網頁(5個頁面)

🎉不定期分享源碼,關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 🏷?本套采用HTMLCSS,未使用Javacsript代碼,共有5個頁面。 二、作品演示 三、代…

騎砍2霸主MOD開發(12)-游戲實例GameEntity

一.GameEntity游戲實例 <1.通用GameEntity,梯子,椅子,攻城云梯,戰車等定義為GameEntity,一個GameEntity由若干GameEntityComponets組成,例如攻城云梯的輪子是一個獨立Component,支架是一個獨立Component, GameEntity GameEntityComponent1 GameEntityComponent2 GameEntit…

前端開發之WebSocket通信

WebSocket WebSocket是一種在單個TCP連接上進行全雙工通信&#xff08;雙向同時通信&#xff09;的協議&#xff0c;它允許服務器和客戶端之間自由地交換數據&#xff0c;無需反復建立連接。其特點包括&#xff1a; 雙向通信&#xff1a;實時性強&#xff0c;支持服務器向客戶…

移動端前端開發遇到過的Andorid和IOS的差異記錄

移動端前端開發遇到過的安卓和蘋果的差異記錄 1. 引入外部資源&#xff0c;最好用https2. IOS時間戳獲取NaN問題3. 金額三位分節顯示方式4. .webp圖片支持問題 1. 引入外部資源&#xff0c;最好用https ios處于安全性的考慮&#xff0c;不大支持http引入外部資源&#xff0c;所…

【kubernetes】探索k8s集群的配置資源(secret和configma)

目錄 一、Secret 1.1Secret 有四種類型 1.2Pod 有 3 種方式來使用 secret 1.3應用場景&#xff1a;憑據 1.4創建 Secret 1.4.1用kubectl create secret命令創建Secret 1.4.2內容用 base64 編碼&#xff0c;創建Secret 1.4.2.1Base64編碼 1.4.2.2創建YAML文件 1.4.2.3…

《計算機網絡》

計算題【33】 題目:假設一個有噪聲信道的帶寬為3KHz,信噪比為30dB,則該信道的最大數據傳輸速率是多少? C = W log2(1+S/N)(bit/s)=3000Hz* log2(1+30)= 29.9kbps 題目:一個網絡中,設定的IP地址范圍是:172.88.32.1至172.88.32.254,試確定其合適的子網掩碼。 分析第…

「前端+鴻蒙」鴻蒙應用開發預覽模擬器運行

在鴻蒙應用開發中&#xff0c;預覽和模擬器運行是開發流程中的重要環節&#xff0c;它們允許開發者在不使用實體設備的情況下測試應用的界面和功能。以下是如何使用華為DevEco Studio進行預覽和在模擬器上運行鴻蒙應用的詳細步驟&#xff0c;以及相應的示例代碼。 快速體驗-預覽…

277 基于MATLAB GUI火災檢測系統

基于MATLAB GUI火災檢測系統&#xff0c;可以實現圖片和視頻的火苗檢測。火焰識別的三個特征&#xff1a;1個顏色特征&#xff0c;2個幾何特征顏色特征&#xff1a;HSV顏色空間下&#xff0c;對三個通道值進行閾值濾波&#xff0c;幾何特征1&#xff1a;長寬比&#xff0c;幾何…

用 Python 擼一個 Web 服務器-第3章:使用 MVC 構建程序

Todo List 程序介紹 我們將要編寫的 Todo List 程序包含四個頁面&#xff0c;分別是注冊頁面、登錄頁面、首頁、編輯頁面。以下分別為四個頁面的截圖。 注冊頁面&#xff1a; 注冊 登錄頁面&#xff1a; 登錄 首頁&#xff1a; 首頁 編輯頁面&#xff1a; 編輯 程序頁面非…