出于對Linux操作系統的興趣,以及對底層知識的強烈欲望,因此整理了這篇文章。本文也可以作為檢驗基礎知識的指標,另外文章涵蓋了一個系統的方方面面。如果沒有完善的計算機系統知識,網絡知識和操作系統知識,文檔中的工具,是不可能完全掌握的,另外對系統性能分析和優化是一個長期的系列。
本文檔主要是結合Linux 大牛,搜集Linux系統性能優化相關文章整理后的一篇綜合性文章,主要是結合博文對涉及到的原理和性能測試的工具展開說明。
背景知識:具備背景知識是分析性能問題時需要了解的。比如硬件 cache;再比如操作系統內核。應用程序的行為細節往往是和這些東西互相牽扯的,這些底層的東西會以意想不到的方式影響應用程序的性能,比如某些程序無法充分利用 cache,從而導致性能下降等等。
性能分析工具
首先來看一張圖:
上圖是Brendan Gregg 的一次性能分析的分享,這里面的所有工具都可以通過 man
來獲得它的幫助文檔,下面簡單介紹介紹一下常規的用法:
1,vmstat--虛擬內存統計
vmstat(VirtualMeomoryStatistics,虛擬內存統計)是 Linux 中監控內存的常用工具,可對操作系統的虛擬內存、進程、CPU 等的整體情況進行監視。vmstat 的常規用法:vmstat interval times
即每隔 interval
秒采樣一次,共采樣 times
次,如果省略 times
,則一直采集數據,直到用戶手動停止為止。簡單舉個例子:
可以使用 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 和 cache 也無濟于事,大量使用交換分區(swpd),頁面交換(swap)頻繁,讀寫磁盤數量(io)增多,缺頁中斷(in)增多,上下文切換(cs)次數增多,等待IO的進程數(b)增多,大量CPU時間用于等待IO(wa)
iostat 用于報告中央處理器(CPU)統計信息和整個系統、適配器、tty 設備、磁盤和 CD-ROM 的輸入/輸出統計信息,默認顯示了與 vmstat 相同的 cpu 使用信息,使用以下命令顯示擴展的設備統計:
第一行顯示的是自系統啟動以來的平均值,然后顯示增量的平均值,每個設備一行。
常見 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:至少有一個活躍請求所占時間的百分比。
3, dstat--系統監控工具
dstat 顯示了 cpu 使用情況,磁盤 io 情況,網絡發包情況和換頁情況,輸出是彩色的,可讀性較強,相對于 vmstat 和iostat 的輸入更加詳細且較為直觀。在使用時,直接輸入命令即可,當然也可以使用特定參數。
4,iotop--LINUX進程實時監控工具
iotop命令是專門顯示硬盤IO的命令,界面風格類似top命令,可以顯示IO負載具體是由哪個進程產生的。是一個用來監視磁盤I/O使用狀況的top類工具,具有與top相似的UI,其中包括PID、用戶、I/O、進程等相關信息。
可以以非交互的方式使用:
iotop –bod interval
查看每個進程的 I/O
,可以使用
pidstat,pidstat –d instat
5, pidstat--監控系統資源情況
pidstat 主要用于監控全部或指定進程占用系統資源的情況,如 CPU,內存、設備 IO、任務切換、線程等。
使用方法:
pidstat –d interval
pidstat 還可以用以統計CPU使用信息:
pidstat –u interval
統計內存信息:
pidstat –r interval
6,top
- top 命令的匯總區域顯示了五個方面的系統性能信息:
- 負載:時間,登陸用戶數,系統平均負載;
- 進程:運行,睡眠,停止,僵尸;
- cpu:用戶態,核心態,NICE,空閑,等待IO,中斷等;
- 內存:總量,已用,空閑(系統角度),緩沖,緩存;
- 交換分區:總量,已用,空閑
任務區域默認顯示:進程 ID,有效用戶,進程優先級,NICE 值,進程使用的虛擬內存,物理內存和共享內存,進程狀態,CPU 占用率,內存占用率,累計 CPU 時間,進程命令行信息。
7,htop
htop 是 Linux 系統中的一個互動的進程查看器,一個文本模式的應用程序(在控制臺或者X終端中),需要 ncurses。
Htop 可讓用戶交互式操作,支持顏色主題,可橫向或縱向滾動瀏覽進程列表,并支持鼠標操作。
與 top 相比,htop 有以下優點:
- 可以橫向或者縱向滾動瀏覽進程列表,以便看到所有的進程和完整的命令行。
- 在啟動上,比top更快。
- 殺進程時不需要輸入進程號。
- htop支持鼠標操作。
8,mpstat
mpstat 是 Multiprocessor Statistics的縮寫,是實時系統監控工具。其報告CPU的一些統計信息,這些信息存放在 /proc/stat
文件中。在多 CPUs 系統里,其不但能查看所有 CPU 的平均狀況信息,而且能夠查看特定 CPU 的信息。常見用法:
mpstat –P ALL interval times
-
Linux
+關注
關注
87文章
11345瀏覽量
210395 -
計算機
+關注
關注
19文章
7536瀏覽量
88641 -
操作系統
+關注
關注
37文章
6892瀏覽量
123744
發布評論請先 登錄
相關推薦
Linux性能分析工具匯總
最常用的Linux命令盤點
常用的嵌入式工具軟件有哪些
OpenHarmony常用的性能分析工具
盤點那些常用的Linux性能分析工具2
![<b class='flag-5'>盤點</b><b class='flag-5'>那些</b><b class='flag-5'>常用</b>的<b class='flag-5'>Linux</b><b class='flag-5'>性能</b><b class='flag-5'>分析</b><b class='flag-5'>工具</b>2](https://file.elecfans.com/web2/M00/90/F5/poYBAGPsdsqAMzQPAAL-yBrU0ns765.jpg)
Linux常用遠程連接工具
![<b class='flag-5'>Linux</b><b class='flag-5'>常用</b>遠程連接<b class='flag-5'>工具</b>](https://file1.elecfans.com/web2/M00/8B/C0/wKgaomSePpCAVhqBAABC0pCf400801.png)
評論