作業系統的CPU監控,基於Unix/linux系統
linux/unix上系統的監控,主要使用的工具—————— > vmstat 、 top 、ps
vmstat工具的使用:
vmstat - Report virtual memory statistics
//用於報告虛擬的記憶體的資料
vmstat命令是最常見的Linux/Unix監控工具(好像在mac上是沒有這個命令的),
作用:可以展現給定時間間隔的伺服器的狀態值。
(包括伺服器的CPU使用率,記憶體使用,虛擬記憶體交換情況,IO讀寫情況。)
相比top,我可以看到整個機器的CPU,記憶體,IO的使用情況,而不是單單看到各個程序的CPU使用率和記憶體使用率(使用場景不一樣)。
vmstat基本使用的格式:
vmstat interval(時間間隔) count(總共的次數)
eg:vmstat 2 10 //將會顯示的是10條記錄,並且間隔的時候是2秒。
如果使用vmstat命令列沒有嗲任何的資訊的時候(或者只是帶有時間間隔和任意的技術的引數的時候),顯示的第一行為: 自系統引導重新啟動以來的平均值。
相關詳情可以檢視相應的圖片:
top也是監控中的一個比較好用的工具:
基本的命令列的使用情況:介面:
詳細講解引數:(這裡引用到別人的部落格,網址現有找到sorry)
top - 顯示Linux系統工作的任務。
top命令顯示的內容分為兩個部分:
1)(上部分)是系統整體效能
2)(下部分)顯示各個程序之間的資訊。
第一行顯示的內容和uptime命令一樣,【l】可以顯示和隱藏這個區域:
top顯示介面的第一行和update顯示的內容是一樣的。
03:04:21 up 86 days, 23:50, 1 user, load average: 0.00, 0.00, 0.00
03:04:21 系統當前時間
up 86 days, 23:50, 系統開機到現在經過了多少時間
1 user 當前2使用者線上
load average: 0.00, 0.00, 0.00 系統1分鐘、5分鐘、15分鐘的CPU負載資訊
接下來是相關的任務:
Tasks: 20 total, 1 running, 19 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1048576k total, 110792k used, 937784k free, 0k buffers
Swap: 524288k total, 0k used, 524288k free, 22248k cached
上面的內容是:
第一行:總共20個任務,1個任務在執行,19個在睡眠狀態。0個停止,0個殭屍程序。
第二行:cpu的資訊,這個可以參考vmstat的內容(vmstat的圖)。
第三行:是記憶體的資訊情況
第四行:是交換的空間情況。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12999 mysql 20 0 187m 25m 5204 S 0.0 2.4 14:32.42 mysqld
1 root 20 0 10372 748 624 S 0.0 0.1 2:12.58 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd/50776
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper/50776
PID:程序的ID
USER:程序所有者
PR:程序的優先級別,越小越優先被執行
NI nice:值
VIRT:程序佔用的虛擬記憶體
RES:程序佔用的實體記憶體
SHR:程序使用的共享記憶體
S:程序的狀態。S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程序優先值為負數
%CPU:程序佔用CPU的使用率
%MEM:程序使用的實體記憶體和總記憶體的百分比
TIME+:該程序啟動後佔用的總的CPU時間,即佔用CPU使用時間的累加值。
COMMAND:程序啟動命令名稱
Linux上top命令設定到時的命令。
q:退出top命令
<Space>:立即重新整理
s:設定重新整理時間間隔
c:顯示命令完全模式
t::顯示或隱藏程序和CPU狀態資訊
m:顯示或隱藏記憶體狀態資訊
l:顯示或隱藏uptime資訊
f:增加或減少程序顯示標誌
S:累計模式,會把已完成或退出的子程序佔用的CPU時間累計到父程序的MITE+
P:按%CPU使用率排行
T:按MITE+排
M:按%MEM排行
u:指定顯示使用者程序
r:修改程序renice值
kkill:程序
i:只顯示正在執行的程序
W:儲存對top的設定到檔案~/.toprc,下次啟動將自動呼叫toprc檔案的設定。
h:幫助命令。
3、同時我們還會用到一個命令就是ps命令,在我們入門的時候都是使用到這個命令,建檔檢視一下程序的資訊:
ps report a snapshot of the current processes.
顯示當前程序的片段。
常用搭配的情況是:
ps -ef
ps -au (這用的比較多)
程序即為涉及到相應的cpu佔用情況。
程序中的記憶體:
vmstat 本來就是用來檢視記憶體的狀態的,但是記憶體和(cpu)程序之間永遠是分不開的。
記憶體監控使用vmstat和ps就好。
vmstat -s
標準輸出摘要的報告。——————> 主要是用於顯示記憶體的具體使用情況,
所以不定時間儲存這個檔案,然後檢視相應的差值,就可以知道相應的內容的具體情況了。
ps v pid
//顯示某一個程序的詳細的資訊報告。————> 標準化
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
17122 pts/0 Ss 0:00 0 882 115125 2768 0.0 -bash
(ps:不會表示記憶體共享的的記憶體段和記憶體對映銷燬的記憶體--> 因為許多應用程式使用共享記憶體和記憶體對映段。(即為:沒有單獨標明的記憶體數目))
(即為:沒有單獨標明的記憶體數目)
這個幾個引數都還是不是很瞭解,以及他們的作用。
STAT 程序的狀態
TIME 程序銷燬的時間
COMMAND:命令的名稱和引數;
MAJFL
TRS
DRS
RSS 程序的實記憶體的大小,一般為記憶體段和記憶體頁的和的4倍。(這有待理解)
%MEM一個程序的所佔記憶體的百分比。
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
上面是有關於程序中的記憶體的一些答題主要的情況。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
看看記憶體交換空間的的檢視:
使用工具(或者說是:命令)
procinfo ——> 檢視系統的中的swap區域的。
顯示系統狀態。procinfo(process information)
linux上出現一個問題,就是管理工具經常會被佔用;
eg:
Existing lock /var/run/yum.pid: another copy is running as pid 16950.
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: PackageKit
Memory : 39 M RSS (442 MB VSZ)
Started: Thu Sep 17 00:54:43 2015 - 32:35 ago
State : Sleeping, pid: 16950
即為yum這個工具被鎖定與使用了,所以我們要找出這個程序
# 命令: ps aux | grep yum //這個命令而過程可以省略
keill -9 pid
這裡的pid是上面的16950 這個pid,不用去找了