1. 程式人生 > >Linux下和Windows下的效能監控

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: