vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操做系統的虛擬內存、進程、IO讀寫、CPU活動等進行監視。它是對系統的總體狀況進行統計,不足之處是沒法對某個進程進行深刻分析。數據庫
指令所在路徑:/usr/bin/vmstat緩存
輸出字段意義:服務器
Procsoracle
r: The number of processes waiting for run time.app
等待運行的進程數。若是等待運行的進程數越多,意味着CPU很是繁忙。另外,若是該參數長期大於和等於邏輯cpu個數,則CPU資源可能存在較大的瓶頸。函數
b: The number of processes in uninterruptible sleep. 性能
處在非中斷睡眠狀態的進程數。意味着進程被阻塞。主要是指被資源阻塞的進程對列數(好比IO資源、頁面調度等),當這個值較大時,須要根據應用程序來進行分析,好比數據庫產品,中間件應用等。this
Memoryspa
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.
使用示例:
1: 查看vmstat命令的幫助信息
[root@DB-Server ~]# man vmstat
2: 顯示活動(active)與非活動(inactive)的內存
[root@DB-Server ~]# vmstat -a 2 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 242752 56264 1294680 2365840 0 0 1 18 2 2 0 2 97 0 0
1 0 242752 56504 1294676 2365736 0 0 0 0 1010 511 0 1 100 0 0
0 0 242752 55844 1294716 2366616 0 0 0 16 1011 768 1 5 94 0 0
0 0 242752 56760 1294716 2365888 0 0 0 190 1015 554 0 1 99 0 0
0 0 242752 55472 1294744 2366636 0 0 0 0 1007 751 1 6 94 0 0
0 0 242752 56636 1294748 2365904 0 0 0 16 1009 554 0 1 99 0 0
0 0 242752 55844 1294772 2366656 0 0 0 178 1020 746 1 6 93 0 0
0 0 242752 56884 1294768 2365940 0 0 0 0 1007 543 0 1 99 0 0
1 0 242752 55208 1294816 2367220 0 0 0 206 1021 726 0 4 95 0 0
0 0 242752 56760 1294796 2365960 0 0 0 16 1009 606 0 2 98 0 0
3:不加任何參數,vmstat命令只輸出一條記錄,這個數據是自系統上次重啓以後到如今的平均數值。
[root@DB-Server ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 242752 32496 112680 2724840 0 0 1 18 3 2 0 2 97 0 0
4:顯示各類事件計數器表和內存統計信息,這顯示不重複。
[oracle@mylnx01 bdump]$ vmstat -s
33011144 total memory
32799072 used memory
24606736 active memory
6175700 inactive memory
212072 free memory
52288 buffer memory
30158708 swap cache
12582904 total swap
610348 used swap
11972556 free swap
44159969 non-nice user cpu ticks
8172 nice user cpu ticks
6077972 system cpu ticks
389217442 idle cpu ticks
40807984 IO-wait cpu ticks
123964 IRQ cpu ticks
383333 softirq cpu ticks
0 stolen cpu ticks
10331447387 pages paged in
2287459081 pages paged out
1524480 pages swapped in
1433512 pages swapped out
2358479992 interrupts
1876082783 CPU context switches
1481100317 boot time
15573677 forks
5:能夠擴大字段長度,當內存較大時,默認長度不夠徹底展現內存時,會致使字段值偏移,致使查看不便
[root@DB-Server ~]# vmstat -w 2 5
procs -------------------memory------------------ ---swap-- -----io---- --system-- -----cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 243852 73556 110908 2678492 0 0 1 18 3 3 0 2 97 0 0
0 0 243852 72252 110916 2678484 0 0 0 172 1016 701 0 4 95 0 0
0 0 243852 73556 110916 2678544 0 0 0 0 1005 636 0 2 98 0 0
0 0 243852 72004 110916 2678540 0 0 0 16 1005 694 0 5 95 0 0
0 0 243852 73432 110924 2678580 0 0 0 192 1015 629 0 2 98 0 0
以下所示,因爲有些字段值較大,致使出現下面偏移,不便查看。
[root@DB-Server ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 243852 79284 110928 2678640 0 0 1 18 3 3 0 2 97 0 0
0 0 243852 78988 110928 2678648 0 0 0 0 1006 753 0 5 95 0 0
0 0 243852 80400 110936 2678696 0 0 0 194 1015 565 0 1 99 0 0
0 0 243852 78352 110936 2678748 0 0 0 16 1008 680 0 5 95 0 0
0 0 243852 79532 110936 2678748 0 0 0 0 1007 669 0 2 98 0 0
[root@DB-Server ~]#
6:顯示磁盤分區數據(disk partition statistics )
[oracle@mylnx01 ~]$ vmstat -p sdc5 2 10
sdc5 reads read sectors writes requested writes
54270570 7234336956 8939045 276196850
54270570 7234336956 8939045 276196850
54270570 7234336956 8939050 276196978
54270570 7234336956 8939053 276197074
54270574 7234337260 8939053 276197074
54270577 7234337292 8939066 276197346
54270622 7234339700 8939066 276197346
54270622 7234339700 8939069 276197442
54270859 7234342828 8939078 276197634
54271074 7234345452 8939080 276197666