Linux效能檢視與分析 命令列工具介紹

2022-05-22 11:24:11 字數 3377 閱讀 3015

本文介紹工作中常用的幾個linux效能檢視命令:top,sar,vmstat,iostat,pidstat等。

top是最常用的linux效能分析工具,它能夠實時的顯示系統中各個程序的資源占用情況。top命令的部分輸出如下:

top的互動命令有以下幾個:

(1)f 選擇顯示的列

(2)o或o 改變列的顯示順序

(3)l 切換顯示平均負載和啟動時間資訊

(4)m 切換顯示記憶體資訊

(5)t 切換顯示程序和cpu狀態資訊

(6)c 切換顯示命令名稱和完整命令列

(7)m 根據駐留記憶體大小進行排序k

(8)p 根據cpu使用百分比大小進行排序

(10)h 顯示幫助資訊

(11)q 退出

(12)數字1 顯示所有cpu的負載情況

top命令引數:

top [-] [d] [p] [q] [c] [c] [s] [s] [n]

d 指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動命令來改變之。

p 通過指定監控程序id來僅僅監控某個程序的狀態。

q該選項將使top沒有任何延遲的進行重新整理。如果呼叫程式有超級使用者許可權,那麼top將以盡可能高的優先順序執行。

s 指定累計模式

s 使top命令在安全模式中執行。這將去除互動命令所帶來的潛在危險。

i 使top不顯示任何閒置或者僵死程序。

c 顯示整個命令列而不只是顯示命令名

sar週期性的對記憶體和cpu的使用情況進行取樣。基本語法如下:

sar [option]   

-a:所有報告的總和

-u:輸出cpu使用情況的統計資訊

-v:輸出inode、檔案和其他核心表的統計資訊

-d:輸出每乙個塊裝置的活動資訊

-r:輸出記憶體和交換空間的統計資訊

-b:顯示i/o和傳送速率的統計資訊

-a:檔案讀寫情況

-c:輸出程序統計資訊,每秒建立的程序數

-r:輸出記憶體頁面的統計資訊

-y:終端裝置活動情況

-w:輸出系統交換活動資訊

-n:網路的統計資訊

-o:取樣結果輸出到檔案

例如:每10秒取樣一次,連續取樣3次,觀察cpu 的使用情況,並將取樣結果以二進位制形式存入當前目錄下的檔案test中 :sar -u -o test 10 3 

檢視二進位制檔案test中的內容:sar -u -f test

每10秒取樣一次,連續取樣3次,觀察核心表的狀態:sar -v 10 3

每10秒取樣一次,連續取樣3次,監控記憶體分頁:sar -r 10 3

每10秒取樣一次,連續取樣3次,監控記憶體分頁:sar -b 10 3

每10秒取樣一次,連續取樣3次,報告緩衝區的使用情況:sar -b 10 3

每10秒取樣一次,連續取樣3次,監控程序佇列長度和平均負載狀態:sar -q 10 3

每10秒取樣一次,連續取樣3次,監控系統交換活動資訊:sar -w 10 3

每10秒取樣一次,連續取樣3次,報告裝置使用情況:sar -d 10 3 –p

要判斷系統瓶頸問題,有時需幾個 sar 命令選項結合起來

懷疑cpu存在瓶頸,可用 sar -u 和 sar -q 等來檢視

懷疑記憶體存在瓶頸,可用 sar -b、sar -r 和 sar -w 等來檢視

懷疑i/o存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來檢視

**有乙個改進版的sar叫tsar,可以收集和報告效能和應用的資料,並保持到mysql裡。

vmstat可以統計cpu、記憶體使用情況、swap使用情況、i/o操作、上下文切換、時鐘中斷等資訊。

使用如:vmstat 1 3

iostat主要檢視磁碟io資訊。

tps: 每秒鐘傳送到的i/o請求數.

blk_read /s: 每秒從裝置讀取的block數.

blk_wrtn/s: 每秒向裝置寫入的block數.

blk_read: 讀入的block總數.

blk_wrtn: 寫入的block總數

使用:iostat -d 1 2

iostat -x 1 2

是sysstat的元件之一,可以檢測程序和執行緒的效能情況。

程序檢視工具。

ps表示程序的5種狀態碼:

d 不可中斷 uninterruptible sleep (usually io) 

r 執行 runnable (on run queue) 

s 中斷 sleeping 

t 停止 traced or stopped 

z 僵死 a defunct (」zombie」) process 

ps引數:

a  顯示所有程序

-a 顯示同一終端下的所有程式

-a 顯示所有程序

c  顯示程序的真實名稱

-n 反向選擇

-e 等於「-a」

e  顯示環境變數

f  顯示程式間的關係

-h 顯示樹狀結構

r  顯示當前終端的程序

t  顯示當前終端的所有程式

u  指定使用者的所有程序

-au 顯示較詳細的資訊

-aux 顯示所有包含其他使用者的行程 

-c《命令》 列出指定命令的狀況

--lines《行數》 每頁顯示的行數

--width《字元數》 每頁顯示的字元數

--help 顯示幫助資訊

--version 顯示版本顯示

示例:1.顯示所有程序資訊

ps -a

2.顯示指定使用者資訊

ps -u root

3.顯示所有程序資訊,包括命令列

ps -ef

4.將目前屬於您自己這次登入的 pid 與相關資訊列示出來

ps -l

5.列出目前所有的正在記憶體當中的程式

ps -aux

6.列出類似程式樹的程式顯示

ps -axjf

網路連線狀態檢視工具。

用netstat命令去統計伺服器目前的網路連線狀態

netstat -n|awk '/^tcp/end'

netstat -an | awk '/:80/' | sort | uniq -c

檔案描述符檢視工具。

查詢開啟檔案最多的資訊如下: 

lsof -n|awk ''|sort|uniq -c |sort -nr|more

檢視各個程序開啟的檔案資料量:

lsof -n |awk ' " " $3'|sort|uniq -c |sort -nr|more

參考:竹子-部落格

Linux命令列與命令

linux的命令是很重要的工具,也往往是初學者最大的瓶頸。有朋友用了很長時間的linux圖形介面,基本不使用命令列輸入命令執行,所以裝的linux最終成了擺設。這裡總結一些命令列下常使用的命令,希望能有用。什麼是命令 我們通常所說的linux命令列是執行在終端 terminal 的shell 閱讀l...

Linux 命令列檢視CPU資訊

幾個cpu more proc cpuinfo grep physical id uniq wc l 每個cpu是幾核 假設cpu配置相同 more proc cpuinfo grep physical id grep 0 wc l cat proc cpuinfo grep processor 1...

Linux 下檢視命令列歷史

linux中,bash輸入的歷史記錄,會存在.bash history 或者說root bash history 通過history檢視。可以看到,不僅可以輸出正確的命令,還可以輸入錯誤的 如abc 而且輸出的是history之前所有的命令 including history bash histor...