Linux下和Windows下的性能監控

Linux --

uptime命令

top命令:可以知道每個進程佔CPU的情況

total 進程總數
running 正在運行的進程數
sleeping 睡眠的進程數
stopped 停止的進程數
zombie 殭屍進程數
Cpu(s): 
0.1% us 用戶空間佔用CPU百分比
0.2% sy 內核空間佔用CPU百分比
0.0% ni 用戶進程空間內改變過優先級的進程佔用CPU百分比
98.8% id 空閒CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0%hi:硬件CPU中斷佔用百分比
0.0%si:軟中斷佔用百分比
0.0%st:虛擬機佔用百分比

 

vmstat命令:可以統計系統的CPU,內存,swap,io等情況

Procs
     r: The number of processes waiting for run time.
       等待運行的進程數。如果等待運行的進程數越多,意味着CPU非常繁忙。另外,如果該參數長期大於和等於邏輯cpu個數,則CPU資源可能存在較大的瓶頸。
     b: The number of processes in uninterruptible sleep. 
       處在非中斷睡眠狀態的進程數。意味着進程被阻塞。主要是指被資源阻塞的進程對列數(比如IO資源、頁面調度等),當這個值較大時,需要根據應用程序來進行分析,比如數據庫產品,中間件應用等。
Memory
     swpd: the amount of virtual memory used.
       已使用的虛擬內存大小。如果虛擬內存使用較多,可能系統的物理內存比較吃緊,需要採取合適的方式來減少物理內存的使用。swapd不爲0,並不意味物理內存吃緊,如果swapd沒變化,si、so的值長期爲0,這也是沒有問題的     
     free: the amount of idle memory.
       空閒的物理內存的大小
     buff: the amount of memory used as buffers.
       用來做buffer(緩存,主要用於塊設備緩存)的內存數,單位:KB
     cache: the amount of memory used as cache.
       用來做cache(緩存,主要用於緩存文件)的內存,單位:KB
     inact: the amount of inactive memory. (-a option)
       inactive memory的總量
     active: the amount of active memory. (-a option)
       active memroy的總量。
Swap
     si: Amount of memory swapped in from disk (/s).
        從磁盤交換到swap虛擬內存的交換頁數量,單位:KB/秒。如果這個值大於0,表示物理內存不夠用或者內存泄露了  
     so: Amount of memory swapped to disk (/s).
        從swap虛擬內存交換到磁盤的交換頁數量,單位:KB/秒,如果這個值大於0,表示物理內存不夠用或者內存泄露了
   內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。
   當看到空閒內存(free)很少的或接近於0時,就認爲內存不夠用了,這個是不正確的。不能光看這一點,還要結合si和so,
   如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。 
 
   當內存的需求大於RAM的數量,服務器啓動了虛擬內存機制,通過虛擬內存,可以將RAM段移到SWAP DISK的特殊磁盤段上,
   這樣會 出現虛擬內存的頁導出和頁導入現象,頁導出並不能說明RAM瓶頸,虛擬內存系統經常會對內存段進行頁導出,
   但頁導入操作就表明了服務器需要更多的內存了, 頁導入需要從SWAP DISK上將內存段複製回RAM,導致服務器速度變慢。
IO
     bi: Blocks received from a block device (blocks/s).
        每秒從塊設備接收到的塊數,單位:塊/秒 也就是讀塊設備。
     bo: Blocks sent to a block device (blocks/s).
        每秒發送到塊設備的塊數,單位:塊/秒  也就是寫塊設備。
System
     in: The number of interrupts per second, including the clock.
        每秒的中斷數,包括時鐘中斷 
     cs: The number of context switches per second. 
        每秒的環境(上下文)切換次數。比如我們調用系統函數,就要進行上下文切換,而過多的上下文切換會浪費較多的cpu資源,這個數值應該越小越好。
 
CPU
     These are percentages of total CPU time.
     us: Time spent running non-kernel code. (user time, including nice time)
        用戶CPU時間(非內核進程佔用時間)(單位爲百分比)。 us的值比較高時,說明用戶進程消耗的CPU時間多
     sy: Time spent running kernel code. (system time)
        系統使用的CPU時間(單位爲百分比)。sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。
     id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
        空閒的CPU的時間(百分比),在Linux 2.5.41之前,這部分包含IO等待時間。
     wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero.
        等待IO的CPU時間,在Linux 2.5.41之前,這個值爲0 .這個指標意味着CPU在等待硬盤讀寫操作的時間,用百分比表示。wait越大則機器io性能就越差。說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。
    st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

pidstat命令:需要安裝(sudo apt-get install sysstat), 可以細緻觀察進程,監控CPU,監控IO,監控內存

示例1:

PID:進程ID
%usr:進程在用戶空間佔用cpu的百分比
%system:進程在內核空間佔用cpu的百分比
%guest:進程在虛擬機佔用cpu的百分比
%CPU:進程佔用cpu的百分比
CPU:處理進程的cpu編號
Command:當前進程對應的命令

示例2:

 示例3: