Linux程序實時監控監控工具
背景說明:
一、htop是TOP的增強版;
二、dstat 是一個可以取代vmstat,iostat,netstat和ifstat這些命令的多功能產品;
三、perf是一款Linux效能分析工具。Linux效能計數器是一個新的基於核心的子系統,它提供一個性能分析框架,比如硬體(CPU、PMU(Performance Monitoring Unit))功能和軟體(軟體計數器、tracepoint)功能。=》效能剖析(performance profiling)和程式碼優化
四、iotop
一、htop
1、安裝GCC及其編譯的庫
如果沒有安裝gcc,按如下來安裝 yum install -y gcc 安裝後,編譯htop需要安裝一個編譯Linux核心的庫 yum install -y ncurses-devel
2、HTOP下載,編譯和安裝
htop下載
wget http://sourceforge.net/projects/htop/files/latest/download
解壓
tar -zxf download
cd htop-1.0.2
./configure && make && make install
執行./configure; 如果執行報錯 configure: error: You may want to use --disable-unicode or install libncursesw. , 表明缺少lib 包, 安裝lib包:yum install ncurses-devel
3、htop 引數
鍵入htop 命令,開啟htop。
# htop
上面左上角顯示CPU、記憶體、交換區的使用情況,右邊顯示任務、負載、開機時間,下面就是程序實時狀況。
下面是 F1~F10 的功能和對應的字母快捷鍵。
Shortcut Key | Function Key | Description | 中文說明 |
h, ? | F1 | Invoke htop Help | 檢視htop使用說明 |
S | F2 | Htop Setup Menu | htop 設定 |
/ | F3 | Search for a Process | 搜尋程序 |
\ | F4 | Incremental process filtering | 增量程序過濾器 |
t | F5 | Tree View | 顯示樹形結構 |
<, > | F6 | Sort by a column | 選擇排序方式 |
[ | F7 | Nice - (change priority) | 可減少nice值,這樣就可以提高對應程序的優先順序 |
] | F8 | Nice + (change priority) | 可增加nice值,這樣就可以降低對應程序的優先順序 |
k | F9 | Kill a Process | 可對程序傳遞訊號 |
q | F10 | Quit htop | 結束htop |
命令列選項(COMMAND-LINE OPTIONS)
-C --no-color 使用一個單色的配色方案
-d --delay=DELAY 設定延遲更新時間,單位秒
-h --help 顯示htop 命令幫助資訊
-u --user=USERNAME 只顯示一個給定的使用者的過程
-p --pid=PID,PID… 只顯示給定的PIDs
-s --sort-key COLUMN 依此列來排序
-v –version 顯示版本資訊
互動式命令(INTERACTIVE COMMANDS)
上下鍵或PgUP, PgDn 選定想要的程序,左右鍵或Home, End 移動欄位,當然也可以直接用滑鼠選定程序;
Space 標記/取消標記一個程序。命令可以作用於多個程序,例如 "kill",將應用於所有已標記的程序
U 取消標記所有程序
s 選擇某一程序,按s:用strace追蹤程序的系統呼叫
l 顯示程序開啟的檔案: 如果安裝了lsof,按此鍵可以顯示程序所開啟的檔案
I 倒轉排序順序,如果排序是正序的,則反轉成倒序的,反之亦然
+, - When in tree view mode, expand or collapse subtree. When a subtree is collapsed a "+" sign shows to the left of the process name.
a (在有多處理器的機器上) 設定 CPU affinity: 標記一個程序允許使用哪些CPU
u 顯示特定使用者程序
M 按Memory 使用排序
P 按CPU 使用排序
T 按Time+ 使用排序
F 跟蹤程序: 如果排序順序引起選定的程序在列表上到處移動,讓選定條跟隨該程序。這對監視一個程序非常有用:通過這種方式,你可以讓一個程序在螢幕上一直可見。使用方向鍵會停止該功能。
K 顯示/隱藏核心執行緒
H 顯示/隱藏使用者執行緒
Ctrl-L 重新整理
Numbers PID 查詢: 輸入PID,游標將移動到相應的程序上
4、htop 使用
4.1. 顯示自帶幫助
滑鼠點選Help或者按F1 顯示自帶幫助
4.2. htop 設定
滑鼠點選Setup或者按下F2 之後進入htop 設定的頁面,Meters 頁面設定了頂端的一些資訊顯示,頂端的顯示又分為左右兩側,到底能顯示些什麼可以在最右側那欄新增,要新增到上方左側(F5)或是右側(F6)都可以,這就是個人設定的範圍了。這裡多加了一個時鐘。
上方左右兩欄的顯示方式分為Text Bar Graph Led 四種,下圖我就把 cpu memory swap 改成文字模式顯示,然後右欄的改成Bar 顯示,clock 用LED方式顯示。資料顯示都差不多,只是這樣看有點不習慣了。
關於Display options 的設定,可要根據管理者自己的需要來設定。
顏色選擇,除了基本的顏色顯示之外,htop 還提供了換面板的功能,其實也只是改變一些色彩顯示的設定,雖然說不能自定義到細部的顏色顯示,但是至少提供了幾種風格可以選擇。
最後一項的設定是調整 Columns 的顯示,就是在一般htop 指令進來希望可以看到的什麼樣的資料及資訊,欄位的調整可以在這邊做個人化的設定,一般使用系統預設值就好了。
4.3. 搜尋程序
滑鼠點選Search 或者按下F3 或者輸入"/", 輸入程序名進行搜尋,例如搜尋ssh
4.4. 過濾器
按下F4,進入過濾器,相當於關鍵字搜尋,不區分大小寫,例如過濾dev
4.5. 顯示樹形結構
輸入"t"或按下F5,顯示樹形結構,意思跟pstree 差不多,能看到所有程式樹狀執行的結構,這對於系統管理來說相當方便,理清程式是如何產生的,當然樹狀結構的瀏覽也可以依照其他資料來排序。
4.6. 選擇排序方式
按下F6 就可以選擇依照什麼來排序,最常排序的內容就是cpu 和memory 吧!
4.7 操作程序
F7、F8分別對應nice-和nice+,F9對應kill給程序發訊號,選好訊號回車就OK了
4.8. 顯示某個使用者的程序,在左側選擇使用者
輸入"u",在左側選擇使用者
5、Alias top
也許你用慣了top,我們也可以用top來開啟htop。
編輯/root/.bashrc檔案,新增如下程式碼
if [ -f /usr/local/bin/htop ]; then alias top=’/usr/local/bin/htop’ fi
# source /root/.bashrc
二、dstat
1、安裝
官網下載地址:http://dag.wieers.com/rpm/packages/dstat
wget http://dag.wieers.com/rpm/packages/dstat/dstat-0.6.7-1.rh7.rf.noarch.rpm rpm -ivh dstat-0.6.7-1.rh7.rf.noarch.rpm
OR
yum install dstat
2、
安裝完後就可以使用了,dstat非常強大,可以實時的監控cpu、磁碟、網路、IO、記憶體等使用情況。
直接使用dstat,預設使用的是-cdngy
引數,分別顯示cpu、disk、net、page、system資訊,預設是1s顯示一條資訊。可以在最後指定顯示一條資訊的時間間隔,如dstat 5
是沒5s顯示一條,dstat 5 10
表示沒5s顯示一條,一共顯示10條。
dstat ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 99 0 0 0|7706B 164k| 0 0 | 0 0 | 189 225 0 0 100 0 0 0| 0 0 |4436B 826B| 0 0 | 195 248 1 0 99 0 0 0| 0 0 |4744B 346B| 0 0 | 203 242 0 0 100 0 0 0| 0 0 |5080B 346B| 0 0 | 206 242 0 1 99 0 0 0| 0 0 |5458B 444B| 0 0 | 214 244 1 0 99 0 0 0| 0 0 |5080B 346B| 0 0 | 208 242
CPU狀態:CPU的使用率。這項報告更有趣的部分是顯示了使用者,系統和空閒部分,這更好地分析了CPU當前的使用狀況。如果你看到"wait"一欄中,CPU的狀態是一個高使用率值,那說明系統存在一些其它問題。當CPU的狀態處在"waits"時,那是因為它正在等待I/O裝置(例如記憶體,磁碟或者網路)的響應而且還沒有收到。
磁碟統計:磁碟的讀寫操作,這一欄顯示磁碟的讀、寫總數。
網路統計:網路裝置傳送和接受的資料,這一欄顯示的網路收、發資料總數。
分頁統計:系統的分頁活動。分頁指的是一種記憶體管理技術用於查詢系統場景,一個較大的分頁表明系統正在使用大量的交換空間,或者說記憶體非常分散,大多數情況下你都希望看到page in(換入)和page out(換出)的值是0 0。
系統統計:這一項顯示的是中斷(int)和上下文切換(csw)。這項統計僅在有比較基線時才有意義。這一欄中較高的統計值通常表示大量的程序造成擁塞,需要對CPU進行關注。你的伺服器一般情況下都會執行執行一些程式,所以這項總是顯示一些數值。
下面對顯示出來的部分資訊作一些說明:
- cpu:hiq、siq分別為硬中斷和軟中斷次數。
- system:int、csw分別為系統的中斷次數(interrupt)和上下文切換(context switch)。
三、perf
perf top
預設情況下perf top是無法顯示資訊的,需要sudo perf top或者echo -1 > /proc/sys/kernel/perf_event_paranoid(在Ubuntu16.04,還需要echo 0 > /proc/sys/kernel/kptr_restrict)。
即可以正常顯示perf top如下:
第一列:符號引發的效能事件的比例,指佔用的cpu週期比例。
第二列:符號所在的DSO(Dynamic Shared Object),可以是應用程式、核心、動態連結庫、模組。
第三列:DSO的型別。[.]表示此符號屬於使用者態的ELF檔案,包括可執行檔案與動態連結庫;[k]表述此符號屬於核心或模組。
第四列:符號名。有些符號不能解析為函式名,只能用地址表示。
關於perf top介面常用命令如下:
h:顯示幫助,即可顯示詳細的幫助資訊。
UP/DOWN/PGUP/PGDN/SPACE:上下和翻頁。
a:annotate current symbol,註解當前符號。能夠給出組合語言的註解,給出各條指令的取樣率。
d:過濾掉所有不屬於此DSO的符號。非常方便檢視同一類別的符號。
P:將當前資訊儲存到perf.hist.N中。
perf top常用選項有:
-e <event>:指明要分析的效能事件。
-p <pid>:Profile events on existing Process ID (comma sperated list). 僅分析目標程序及其建立的執行緒。
-k <path>:Path to vmlinux. Required for annotation functionality. 帶符號表的核心映像所在的路徑。
-K:不顯示屬於核心或模組的符號。
-U:不顯示屬於使用者態程式的符號。
-d <n>:介面的重新整理週期,預設為2s,因為perf top預設每2s從mmap的記憶體區域讀取一次效能資料。
-g:得到函式的呼叫關係圖。
perf top --call-graph [fractal],路徑概率為相對值,加起來為100%,呼叫順序為從下往上。
perf top --call-graph graph,路徑概率為絕對值,加起來為該函式的熱度。
四、iotop
Total DISK read: 0.00 B/s | Total DISK write: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> command 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init [3] 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] 7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] 8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0] 10 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/1] 11 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper] 2572 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bluetooth]