1. 程式人生 > >作業系統的CPU監控,基於Unix/linux系統

作業系統的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,不用去找了