首頁 運維 linux運維 超全整理 - Linux效能分析工具總合集

超全整理 - Linux效能分析工具總合集

Aug 03, 2023 pm 04:20 PM
linux 性能分析工具


對Linux作業系統的興趣,以及對底層知識的強烈慾望,因此整理了這篇文章。本文也可以作為檢驗基礎知識的指標,另外文章涵蓋了一個系統的各個層面。如果沒有完善的電腦系統知識,網路知識和作業系統知識,文件中的工具,是不可能完全掌握的,另外對系統效能分析和最佳化是一個長期的系列。


本文檔主要是結合Linux 大牛,Netflix 高階效能架構師Brendan Gregg 更新Linux 效能調優工具的博文,蒐集Linux系統效能優化相關文章整理後的一篇綜合文章,主要是結合部落格文章對涉及的原理和效能測試的工具展開說明。


背景知識:具備背景知識是分析效能問題時需要了解的。例如硬體 cache;再例如作業系統核心。應用程式的行為細節往往是和這些東西互相牽扯的,這些底層的東西會以意想不到的方式影響應用程式的效能,例如某些程式無法充分利用 cache,從而導致效能下降。例如不必要地調用過多的系統調用,造成頻繁的內核 / 用戶切換等。這裡只是為本文的後續內容做一些鋪墊,關於調優還有很多東西,我所不知道的比知道的要多的多,希望大家能共同學習進步。


【效能分析工具】

#

首先來看一張圖:

超全整理 - Linux效能分析工具總合集

#上圖是Brendan Gregg 的一次效能分析的分享,這裡面的所有工具都可以透過man來獲得它的幫助文檔,下問簡單介紹介紹一下常規的用法:


▲ vmstat--虛擬記憶體統計

vmstat(VirtualMeomoryStatistics,虛擬記憶體統計) 是Linux中監控記憶體的常用工具,可監控作業系統的虛擬記憶體、行程、CPU等的整體狀況。


vmstat的常規用法:vmstat interval times即每隔interval秒採樣一次,共取樣times次,如果省略times,則一直採集數據,直到使用者手動停止為止。
簡單舉例:

超全整理 - Linux效能分析工具總合集

#可以使用ctrl c停止vmstat來擷取資料。


#

第一行顯示了系統自啟動以來的平均值,第二行開始顯示現在正在發生的情況,接下來的行會顯示每5秒間隔發生了什麼,每一列的含義在頭部,如下所示:

▪ procs:r這一列顯示了多少進程在等待cpu,b列顯示多少進程正在不可中斷的休眠(等待IO)。

▪ memory:swapd欄位顯示了多少區塊被換出了磁碟(頁面交換),剩下的欄位顯示了多少區塊是空閒的(未被使用),多少區塊正在被用作緩衝區,以及多少正在被用作作業系統的快取。

▪ swap:顯示交換活動:每秒鐘有多少區塊正在被換入(從磁碟)和換出(到磁碟)。

▪ io:顯示了多少區塊從區塊裝置讀取(bi)和寫出(bo),通常反映了硬碟I/O。

▪ system:顯示每秒中斷(in)和上下文切換(cs)的數量。

▪ cpu:顯示所有的cpu時間花費在各類別操作的百分比,包括執行使用者程式碼(非核心),執行系統程式碼(核心),空閒並等待IO。

記憶體不足的表現:free  memory急劇減少,回收buffer和cacher也無濟於事,大量使用交換分區(swpd),頁面交換(swap)頻繁,讀寫磁碟數量(io )增多,缺頁中斷(in)增多,上下文切換(cs)次數增多,等待IO的進程數(b)增多,大量CPU時間用於等待IO(wa)


▲iostat--用於報告中央處理器統計資料

iostat用於報告中央處理器(CPU)統計資料和整個系統、適配器、tty 設備、磁碟和CD-ROM 的輸入/輸出統計信息,預設顯示了與vmstat相同的cpu使用信息,使用以下命令顯示擴展的設備統計信息:

超全整理 - Linux效能分析工具總合集

##第一行顯示的是自系統啟動以來的平均值,然後顯示增量的平均值,每個裝置一行。

常見linux的磁碟IO指標的縮寫習慣:rq是request,r是read,w是write,qu是queue,sz是size,a是verage,tm是time, svc是service。

▪rrqm/s和wrqm/s:每秒合併的讀取和寫入請求,「合併的」表示作業系統從佇列中拿出多個邏輯請求合併為一個請求到實際磁碟。

▪r/s和w/s:每秒傳送到裝置的讀取和寫入請求數。

▪rsec/s和wsec/s:每秒讀取和寫入的磁區數。

▪avgrq –sz:請求的磁區數。

▪avgqu –sz:在裝置佇列中等待的請求數。

▪await:每個IO請求花費的時間。

▪svctm:實際請求(服務)時間。

▪%util:至少有一個活躍請求所佔時間的百分比。


▲dstat--系統監控工具

dstat顯示了cpu使用情況,磁碟io情況,網路發包情況和換頁情況,輸出是彩色的,可讀性較強,相對於vmstat和iostat的輸入更加詳細且較為直觀。使用時,直接輸入指令即可,當然也可以使用特定參數。

如下:dstat –cdlmnpsy

超全整理 - Linux效能分析工具總合集


▲iotop- -LINUX進程即時監控工具

iotop指令是專門顯示硬碟IO的指令,介面風格類似top指令,可以顯示IO負載具體是由哪個行程產生的。是用來監視磁碟I/O使用狀況的top類工具,具有與top相似的UI,其中包括PID、使用者、I/O、進程等相關資訊。


可以以非互動的方式使用:iotop –bod interval,檢視每個行程的I/O,可以使用pidstat,pidstat –d instat。


搜尋公眾號Linux中文社群後台回覆「私房菜”,取得驚喜禮包。


▲pidstat--監控系統資源狀況

pidstat主要用於監控全部或指定進程佔用系統資源的情況,如CPU,記憶體、設備IO、任務切換、執行緒等。

使用方法:pidstat –d interval;pidstat也可以用以統計CPU使用資訊:pidstat –u interval;統計記憶體資訊:Pidstat –r interval。


#top

top指令的匯總區域顯示了五個面向的系統效能資訊:

1.負載:時間,登陸用戶數,系統平均負載;

#2.進程:運行,睡眠,停止,殭屍;

#3.cpu:用戶狀態,核心態,NICE,空閒,等待IO,中斷等;

4.記憶體:總量,已用,空閒(系統角度),緩衝,快取;

5.交換分區:總量,已使用,空閒

任務區域預設顯示:進程ID,有效用戶,進程優先權,NICE值,進程使用的虛擬內存,物理內存和共享內存,進程狀態,CPU佔用率,內存佔用率,累計CPU時間,進程命令行資訊。


#htop

htop 是Linux系統中的一個互動的程序檢視器,一個文字模式的應用程式(在控制台或X終端機中),需要ncurses。
超全整理 - Linux效能分析工具總合集

Htop可讓使用者互動式操作,支援顏色主題,可橫向或縱向捲動進程列表,並支援滑鼠操作。

與top相比,htop有以下優點:

▪ 可以橫向或縱向捲動進程列表,以便看到所有的進程和完整的命令列。

▪ 在啟動上,比top快。

▪ 殺進程時不需要輸入進程號。

▪ htop支援滑鼠操作。


▲mpstat
#mpstat 是Multiprocessor Statistics的縮寫,是即時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CP​​Us系統裡,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。常見用法:mpstat –P ALL interval times。


netstat

Netstat用於顯示與IP、TCP、UDP和ICMP協定相關的統計數據,一般用於檢驗本機各連接埠的網路連線情況。

▲常見用法: 

#

netstat –npl   可以查看你要開啟的連接埠是否已經開啟。

netstat –rn    列印路由表資訊。

netstat –in    提供系統上的介面訊息,列印每個介面的MTU,輸入分組數,輸入錯誤,輸出分組數,輸出錯誤,衝突以及目前的輸出佇列的長度。


#ps--顯示目前行程的狀態  

ps參數太多,因此使用方法可以參考man ps,常用的方法:ps  aux  #hsserver;ps –ef |grep #hundsun

# #▪ 殺掉某程式的方法:ps  aux | grep mysqld | grep –v grep | awk '{print $2 }' xargs kill -9

#▪ 殺掉殭屍行程: ps –eal | awk '{if ($2 == “Z”){print $4}}' | xargs kill -9



strace

######

追蹤程式執行過程中產生的系統呼叫及接收到的訊號,幫助分析程式或指令執行中遇到的異常情況。

範例:查看mysqld在linux上載入哪種設定文件,可以透過執行下面的指令:strace –e stat64 mysqld –print –defaults > /dev/null


uptime

能夠列印系統總共運作了多長時間和系統的平均負載,uptime指令最後輸出的三個數字的意義分別是1分鐘,5分鐘,15分鐘內系統的平均負荷。


lsof

lsof(list open files)是一個列出目前系統開啟檔案的工具。透過lsof工具能夠查看這個清單對系統偵測及排錯,常見的用法:

查看檔案系統阻塞 lsof /boot

##查看連接埠號碼被哪個進程佔用  lsof  -i : 3306#

查看使用者開啟哪些檔案  lsof –u username

#檢視程式開啟哪些檔案  lsof –p  4838

#檢視遠端已開啟的網路連結 lsof –i @192.168.34.128


#perf

perf是Linux kernel自帶的系統效能最佳化工具。優點在於與Linux Kernel的緊密結合,它可以最先應用到加入Kernel的new feature,用於查看熱點函數,查看cashe miss的比率,從而幫助開發者來優化程式效能。


效能調校工具如perf,Oprofile 等的基本原理都是對被監控物件進行取樣,最簡單的情形是根據tick 中斷進行採樣,即在tick 中斷內觸發採樣點,在採樣點裡判斷程式當時的上下文。假如一個程式 90% 的時間都花費在函數 foo() 上,那麼 90% 的取樣點都應該落在函數 foo() 的上下文中。運氣不可捉摸,但我想只要取樣頻率夠高,取樣時間夠長,那麼以上推論就比較可靠。因此,透過 tick 觸發採樣,我們便可以了解程式中哪些地方最耗時間,從而重點分析。


想要更深的了解本工具可以參考:
http://blog.csdn .net/trochiluses/article/details/10261339

#


總結:結合以上常用的效能測試指令並聯絡文初的效能分析工具的圖,就可以初步了解到效能分析過程中哪個面向的效能使用哪方面的工具(命令)。


【常用的效能測試工具】

熟練且精通了第二部分的效能分析指令工具,引入幾個效能測試的工具,介紹之前先簡單了解幾個效能測試工具:


#▪ perf_events: 一款隨Linux核心程式碼一同發布和維護的效能診斷工具,由核心社群維護發展。 Perf 不僅可以用於應用程式的效能統計分析,還可以應用於核心程式碼的效能統計和分析。

更多參考:http://blog.sina.com.cn/s/blog_98822316010122ex.html。


▪ eBPF tools: 一款使用bcc進行的效能追蹤的工具,eBPF map可以使用客製化的eBPF程序被廣泛應用於核心調優方面,也可以讀取用戶級的非同步程式碼。重要的是這個外部的資料可以在使用者空間管理。這個k-v格式的map資料體是透過在使用者空間呼叫bpf系統呼叫來建立、新增、刪除等操作來管理的。 more: http://blog.csdn.net/ljy1988123/article/details/50444693。


▪ perf-tools: 一款基於 perf_events (perf) 和 ftrace 的Linux效能分析調優工具集。 Perf-Tools 依賴函式庫少,使用簡單。支援Linux 3.2 及以上核心版本。 more: https://github.com/brendangregg/perf-tools。


▪ bcc(BPF Compiler Collection): 一款使用eBPF的perf效能分析工具。一個用於創建高效的核心追蹤和操作程序的工具包,包括幾個有用的工具和範例。利用擴展的BPF(伯克利資料包過濾器),正式稱為eBPF,一個新的功能,首先被添加到Linux 3.15。多用途需要Linux 4.1以上BCC。

更多參考:https://github.com/iovisor/bcc#tools。


▪ ktap: 一種新型的linux腳本動態效能追蹤工具。允許用戶追蹤Linux核心動態。 ktap是設計給具有互通性,允許使用者調整操作的見解,排除故障和延長核心和應用程式。它類似於Linux和Solaris DTrace SystemTap。更多參考:https://github.com/ktap/ktap。


▪ Flame Graphs:是一款使用perf,system tap,ktap視覺化的圖形軟體,允許最頻繁的程式碼路徑快速且準確地識別,可以是使用github.com/brendangregg/flamegraph中的開發原始程式碼的程式產生。

更多參考:http://www.brendangregg.com/flamegraphs.html。

一、 Linux observability tools | Linux 效能觀測工具

超全整理 - Linux效能分析工具總合集

▪ 先學習的Basic Tool有如下:
uptime、top(htop)、mpstat、isstat、vmstat、free 、ping、nicstat、dstat。


▪ 高階的指令如下:
sar、netstat、pidstat、strace、 tcpdump、blktrace、iotop、slabtop、sysctl、/proc。

更多參考:http://www.open-open.com/lib/view/open1434589043973.html,詳細的指令使用方法可以參考man

二、Linux benchmarking tools | Linux 效能評估工具

超全整理 - Linux效能分析工具總合集

##是一款效能評估工具,對於不同模組的效能測試可以使用對應的工具,想要深入了解,可以參考最下文的附件文件。


三、Linux tuning tools | Linux 效能調優工具

超全整理 - Linux效能分析工具總合集
是一款效能調優工具,主要是從linux核心原始碼層進行的調優,想要深入了解,可以參考下文附件文件。


四、Linux observability sar | linux效能觀測工具

超全整理 - Linux效能分析工具總合集

##sar(System Activity Reporter系統活動狀況報告)是目前LINUX上最為全面的系統效能分析工具之一,可以從多方面對系統的活動進行報告,包括:檔案的讀寫情況、系統呼叫的使用情況、磁碟I/O、 CPU效率、記憶體使用狀況、行程活動及IPC相關的活動等面向。


sar的常歸使用方式:sar  [options] [-A] [-o file]  t [n]
其中:
t為取樣間隔,n為取樣次數,預設值為1;
-o file表示將指令結果以二進位格式存放在檔案中,file 是檔案名稱。
options 為命令列選項

以上是超全整理 - Linux效能分析工具總合集的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

centos和ubuntu的區別 centos和ubuntu的區別 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

centos如何安裝 centos如何安裝 Apr 14, 2025 pm 09:03 PM

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

Centos停止維護2024 Centos停止維護2024 Apr 14, 2025 pm 08:39 PM

CentOS將於2024年停止維護,原因是其上游發行版RHEL 8已停止維護。該停更將影響CentOS 8系統,使其無法繼續接收更新。用戶應規劃遷移,建議選項包括CentOS Stream、AlmaLinux和Rocky Linux,以保持系統安全和穩定。

Centos停止維護後的選擇 Centos停止維護後的選擇 Apr 14, 2025 pm 08:51 PM

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

docker原理詳解 docker原理詳解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

docker desktop怎麼用 docker desktop怎麼用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

centos停止維護後怎麼辦 centos停止維護後怎麼辦 Apr 14, 2025 pm 08:48 PM

CentOS 停止維護後,用戶可以採取以下措施應對:選擇兼容髮行版:如 AlmaLinux、Rocky Linux、CentOS Stream。遷移到商業發行版:如 Red Hat Enterprise Linux、Oracle Linux。升級到 CentOS 9 Stream:滾動發行版,提供最新技術。選擇其他 Linux 發行版:如 Ubuntu、Debian。評估容器、虛擬機或云平台等其他選項。

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

See all articles