1. 程式人生 > >vmstat命令用法舉例

vmstat命令用法舉例

vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、CPU活動進行監控。
他是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。vmstat 工具提供了一種低開銷的系統性能觀察方式。
因為vmstat本身就是低開銷工具,在非常高負荷的伺服器上,你需要檢視並監控系統的健康情況,在控制視窗還是能夠使用vmstat輸出結果。
在學習vmstat命令前,我們先了解一下Linux系統中關於實體記憶體和虛擬記憶體相關資訊。

實體記憶體和虛擬記憶體區別:

我們知道,直接從實體記憶體讀寫資料要比從硬碟讀寫資料要快的多,因此,我們希望所有資料的讀取和寫入都在記憶體完成,而記憶體是有限的,這樣就引出了實體記憶體與虛擬記憶體的概念。

實體記憶體就是系統硬體提供的記憶體大小,是真正的記憶體,相對於實體記憶體,在linux下還有一個虛擬記憶體的概念,虛擬記憶體就是為了滿足實體記憶體的不足而提出的策略,它是利用磁碟空間虛擬出的一塊邏輯記憶體

用作虛擬記憶體的磁碟空間被稱為交換空間(Swap Space)。

作為實體記憶體的擴充套件,linux會在實體記憶體不足時,使用交換分割槽的虛擬記憶體,更詳細的說,就是核心會將暫時不用的記憶體塊資訊寫到交換空間,這樣以來,實體記憶體得到了釋放,這塊記憶體就可以用於其它目的,

當需要用到原始的內容時,這些資訊會被重新從交換空間讀入實體記憶體。

linux的記憶體管理採取的是分頁存取機制,為了保證實體記憶體能得到充分的利用,核心會在適當的時候將實體記憶體中不經常使用的資料塊自動交換到虛擬記憶體中,而將經常使用的資訊保留到實體記憶體。

要深入瞭解linux記憶體執行機制,需要知道下面提到的幾個方面:

首先,Linux系統會不時的進行頁面交換操作,以保持儘可能多的空閒實體記憶體,即使並沒有什麼事情需要記憶體,Linux也會交換出暫時不用的記憶體頁面。這可以避免等待交換所需的時間。

其次,linux進行頁面交換是有條件的,不是所有頁面在不用時都交換到虛擬記憶體,linux核心根據"最近最經常使用"演算法,僅僅將一些不經常使用的頁面檔案交換到虛擬記憶體,有時我們會看到這麼一個現象:linux實體記憶體還有很多,但是交換空間也使用了很多。其實,這並不奇怪,例如,一個佔用很大記憶體的程序執行時,需要耗費很多記憶體資源,此時就會有一些不常用頁面檔案被交換到虛擬記憶體中,但後來這個佔用很多記憶體資源的程序結束並釋放了很多記憶體時,剛才被交換出去的頁面檔案並不會自動的交換進實體記憶體,除非有這個必要,那麼此刻系統實體記憶體就會空閒很多,同時交換空間也在被使用,就出現了剛才所說的現象了。關於這點,不用擔心什麼,只要知道是怎麼一回事就可以了。

最後,交換空間的頁面在使用時會首先被交換到實體記憶體,如果此時沒有足夠的實體記憶體來容納這些頁面,它們又會被馬上交換出去,如此以來,虛擬記憶體中可能沒有足夠空間來儲存這些交換頁面,最終會導致linux出現假宕機、服務異常等問題,

linux雖然可以在一段時間內自行恢復,但是恢復後的系統已經基本不可用了。因此,合理規劃和設計linux記憶體的使用,是非常重要的。

虛擬記憶體原理:

在系統中執行的每個程序都需要使用到記憶體,但不是每個程序都需要每時每刻使用系統分配的記憶體空間。當系統執行所需記憶體超過實際的實體記憶體,核心會釋放某些程序所佔用但未使用的部分或所有實體記憶體,

將這部分資料儲存在磁碟上直到程序下一次呼叫,並將釋放出的記憶體提供給有需要的程序使用。

在Linux記憶體管理中,主要是通過"調頁Paging"和"交換Swapping"來完成上述的記憶體排程。調頁演算法是將記憶體中最近不常使用的頁面換到磁碟上,把活動頁面保留在記憶體中供程序使用。交換技術是將整個程序,而不是部分頁面,全部交換到磁碟上。

分頁(Page)寫入磁碟的過程被稱作Page-Out,分頁(Page)從磁碟重新回到記憶體的過程被稱作Page-In。當核心需要一個分頁時,但發現此分頁不在實體記憶體中(因為已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。

當系統核心發現可執行記憶體變少時,就會通過Page-Out來釋放一部分實體記憶體。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷的發生,直到當核心管理分頁的時間超過執行程式的時間時,系統效能會急劇下降。

這時的系統已經執行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。


1.命令格式:

vmstat [-a] [-n] [-S unit] [delay [ count]]

vmstat [-s] [-n] [-S unit]

vmstat [-m] [-n] [delay [ count]]

vmstat [-d] [-n] [delay [ count]]

vmstat [-p disk partition] [-n] [delay [ count]]

vmstat [-f]

vmstat [-V]

2.命令功能:

用來顯示虛擬記憶體的資訊

3.命令引數:

-a:顯示活躍和非活躍記憶體

-f:顯示從系統啟動至今的fork數量 。

-m:顯示slabinfo

-n:只在開始時顯示一次各欄位名稱。

-s:顯示記憶體相關統計資訊及多種系統活動數量。

delay:重新整理時間間隔。如果不指定,只顯示一條結果。

count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。

-d:顯示磁碟相關統計資訊。

-p:顯示指定磁碟分割槽統計資訊

-S:使用指定單位顯示。引數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576位元組(byte)。預設單位為K(1024 bytes)

-V:顯示vmstat版本資訊。

4.使用例項:
4.1 顯示虛擬記憶體使用情況
命令:vmstat

[[email protected] ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0  21628 2792212 313796 2992420    0    0     0     2    0    1  2  1 97  0  0
[[email protected] ~]$ 


說明:
Procs(程序):
r:  執行佇列中程序數量
b:  等待IO的程序數量

Memory(記憶體):
swpd: 使用虛擬記憶體大小
free: 可用記憶體大小
buff: 用作緩衝的記憶體大小
cache: 用作快取的記憶體大小

Swap(交換分割槽):
si: 每秒從交換區寫到記憶體的大小
so: 每秒寫入交換區的記憶體大小
IO:(現在的Linux版本塊的大小為1024bytes)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數

system(系統):
in: 每秒中斷數,包括時鐘中斷。
cs: 每秒上下文切換數。

CPU(以百分比表示):
us: 使用者程序執行時間(user time)
sy: 系統程序執行時間(system time)
id: 空閒時間(包括IO等待時間),中央處理器的空閒時間 。以百分比表示。
wa: 等待IO時間


備註: 
如果r經常大於4,且id經常少於40,表示cpu的負荷很重。
如果bi,bo 長期不等於0,表示記憶體不足。
如果disk經常不等於0, 且在 b中的佇列大於3,表示 io效能不好。
Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴充套件性,能夠針對不同的應用和硬體環境調整,優化出滿足當前應用需要的最佳效能。
因此企業在維護Linux系統、進行系統調優時,瞭解系統性能分析工具是至關重要的。

命令:vmstat 5 5

表示在5秒時間內進行5次取樣。將得到一個數據彙總他能夠反映真正的系統情況。
[[email protected] ~]$ vmstat 5 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  21628 3654224 307220 2158200    0    0     0     2    1    2  2  1 97  0  0
 0  0  21628 3654364 307228 2158220    0    0     0    10  169  305  0  0 99  0  0
 0  0  21628 3654364 307228 2158220    0    0     0     5  165  307  0  0 100  0  0
 0  0  21628 3654404 307228 2158220    0    0     0     3  176  315  0  0 100  0  0
 0  0  21628 3654420 307228 2158220    0    0     0     2  181  317  0  0 100  0  0
 
4.2 顯示活躍和非活躍記憶體,命令:vmstat -a
[[email protected] ~]$ vmstat -a 2 5
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  21628 3653880 2651816 1472832    0    0     0     2    1    2  2  1 97  0  0
 0  0  21628 3653880 2651816 1472824    0    0     0     0  129  274  0  0 100  0  0
 0  0  21628 3653880 2651816 1472860    0    0     0    12  215  328  0  0 100  0  0
 0  0  21628 3643884 2651816 1482480    0    0     0     0  316  400  1  1 99  0  0
 0  0  21628 3653328 2651824 1472736    0    0     2    10 3266 1924  6  5 88  0  0

說明:
使用-a選項顯示活躍和非活躍記憶體時,所顯示的內容除增加inact和active外,其他顯示內容與例子1相同。

欄位說明:
Memory(記憶體):
inact: 非活躍記憶體大小(當使用-a選項時顯示)
active: 活躍的記憶體大小(當使用-a選項時顯示)

4.3 檢視系統已經fork了多少次,命令:vmstat -f
[[email protected] ~]$ vmstat -f
6785236 forks

說明:這個資料是從/proc/stat中的processes欄位裡取得的

4.4 檢視記憶體使用的詳細資訊,命令:vmstat -s
[[email protected] ~]$ vmstat -s
      8062400  total memory
      4409016  used memory
      1472664  active memory
      2651876  inactive memory
      3653384  free memory
       307408  buffer memory
      2158904  swap cache
     16777208  total swap
        21628  used swap
     16755580  free swap
     38821150 non-nice user cpu ticks
         5375 nice user cpu ticks
     10563914 system cpu ticks
   1766370025 idle cpu ticks
      2527736 IO-wait cpu ticks
          387 IRQ cpu ticks
       235518 softirq cpu ticks
            0 stolen cpu ticks
      7790033 pages paged in
     42014372 pages paged out
          990 pages swapped in
         5887 pages swapped out
   2028124293 interrupts
   2306495642 CPU context switches
   1475154609 boot time
      6785316 forks

說明:這些資訊的分別來自於/proc/meminfo,/proc/stat和/proc/vmstat。


例項5:檢視磁碟的讀/寫,命令:vmstat -d
[[email protected] ~]$ vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
sr0        0      0       0       0      0      0       0       0      0      0
sda   229824  58456 15576242 3427818 5206705 5292200 84030849 83720033      0  24011
dm-0    1314      0   10512   31310   5887      0   47096  205961      0     18
dm-1  259909      0 13500850 4575168 5366976      0 42926193 1192128686      0  13071
dm-2   26176      0 2037914  456542 5132169      0 41057352 1354015879      0  12025
dm-3     238      0    1898    1781     16      0     128     163      0      0

說明:這些資訊主要來自於/proc/diskstats.
merged:表示一次來自於合併的寫/讀請求,一般系統會把多個連線/鄰近的讀/寫請求合併到一起來操作.

4.6 檢視/dev/sda1磁碟的讀/寫: df    --可以參考df的用法
[[email protected] ~]$ df
Filesystem                          1K-blocks       Used Available Use% Mounted on
/dev/mapper/rootvg-root_lv           20642428   15740548   3853304  81% /
tmpfs                                 4031200         72   4031128   1% /dev/shm
/dev/mapper/rootvg-was_lv            41284928     180092  39007684   1% /websphere
/dev/sda1                              495844      39907    430337   9% /boot
/dev/mapper/rootvg-tmp_lv            10321208     358008   9438912   4% /tmp
10.14.49.126:/UAT1_shared           104857600   55238656  49618944  53% /home/ap/ods/shared
10.14.49.123:/UAT1_data_public_ods 1610612736 1398217728 212395008  87% /data_public_ods
10.14.49.125:/UAT1_data_to_ods     2147483648 1296939008 850544640  61% /data_to_ods
10.14.49.127:/UAT1_PABank_DCC      1610612736  742995968 867616768  47% /PABank_DCC

說明:這些資訊主要來自於/proc/diskstats。
reads:來自於這個分割槽的讀的次數。
read sectors:來自於這個分割槽的讀扇區的次數。
writes:來自於這個分割槽的寫的次數。
requested writes:來自於這個分割槽的寫請求次數。

相關推薦

vmstat命令用法舉例

vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、CPU活動進行監控。 他是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。vmstat 工具提供了一種低開銷的系統性能觀察方式。 因為v

more命令用法舉例

more命令 1.命令格式:more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]  2.命令功能: 2.1 more命令功能類似cat: cat命令是整個檔案的內容從上到下顯示在螢幕上, more會以一頁

traceroute命令用法舉例

通過traceroute我們可以知道資訊從你的計算機到網際網路另一端的主機是走的什麼路徑。 當然每次資料包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。l inux系統中,我們稱

chgrp命令用法舉例

在lunix系統裡,檔案或目錄的許可權的掌控以擁有者及所訴群組來管理。 可以使用chgrp指令取變更檔案與目錄所屬群組,這種方式採用群組名稱或群組識別碼都可以。 Chgrp命令就是change group的縮寫!要被改變的組名必須要在/etc/group檔案記憶體在才行。

nc命令用法舉例

網絡 nbsp 域名服務 stat 窗口 之前 telnet 輸出 輸入密碼 什麽是nc nc是netcat的簡寫,有著網絡界的瑞士軍刀美譽。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網絡工具 nc的作用 (1)實現任意TCP/UDP端口的偵聽,nc可以作為s

vmstat 命令用法說明(總)

vmstat 命令的用法說明 用途 報告虛擬記憶體統計資訊。 語法 vmstat [ -f ] [ -i ] [ -s ] [ -I ] [ -t ] [ -v ] [ PhysicalVolume ... ] [ Interval [ Count ] ] 描述 vmstat 命令

Linux vmstat命令實戰詳解

上下文切換 span 一次 過多 sta log 讀取文件 負載 監控 vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。這個命令是我查看Linux/Unix最喜

wmic命令用法小例

brief isa 讀者 用戶名 creation not 詳細信息 services cname wmic就是wmic.exe,位於windows目錄底下,是一個命令行程序。WMIC可以以兩種模式執行:交互模式(Interactive mode)和非交互模式(Non-In

Linux中more和less命令用法

時間 quit ron 忽略 分頁 page tab 易用 linux中 一、more命令 more功能類似 cat ,cat命令是整個文件的內容從上到下顯示在屏幕上。 more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按

ubuntu 中wget (下載)命令用法

-i nload linux用戶 .cn 寬帶 not found ould 包括 nod 轉載自:http://www.cnblogs.com/wuheng1991/p/5332764.html Linux wget是一個下載文件的工具,它用在命令行下。 對於Lin

Jar命令用法

虛擬機 人的 程序 打包成 exe lin pat 自動安裝 常見 JAR文件 JAR文件 全稱:Java Archive File , 意思是Java檔案文件。通常JAR文件是一種壓縮文件,與常見的ZIP壓縮文件兼容,通常被稱為JAR包。 JAR文件和ZIP文件的區別:在

#26 Linux kernel(內核)詳解與uname、lsmod、modinfo、depmod、insmod、rmmod、modprobe...命令用法

linux kernel(內核)詳解與uname、lsmod、modinfo、depmod、insmod、rmmod、modprobe...命令用法Linux kernel: 內核設計流派: 單內核設計,但是充分借鑒了微內核體系設計的優點,為內核引入了模塊化機制,內核高度模塊化; 內核被模塊化之

LINUX 筆記-vmstat命令

runnable locks idle log linux 筆記 interrupt pre waiting logs procs -----------memory---------- ---swap-- -----io---- -system-- ------cp

tee命令用法

lin 常用 格式 保存到文件 不存在 多個 標準輸入 tee font 用途說明 在執行Linux命令時,我們可以把輸出重定向到文件中,比如 ls >a.txt,這時我們就不能看到輸出了,如果我們既想把輸出保存到文件中,又想在屏幕上看到輸出內容,就可以使用tee命

vmstat命令淺析

發送 調整 內存交換 mov 原理 目錄 大量 host 性能測試   vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。這個命令是我查看Linux/Unix最喜

find命令用法整理

find命令find命令 可以定位文件,配合參數可以快速定位所要找的文件使用方法:find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]常用的幾個[expression]

關於linux的進階命令用法之來自noob的小結(1)

linux命令 寫的很雜,先這樣,下午再來細細排版與貼圖umask 查詢當前shell的mask值umask xxx 可以設置當前目錄的mask值vim .bashrc 可以編輯當前用戶shell的mask值並且永久保存,source 後生效-S 可以用rwx顯示出當前的去掉的

0.1 使用w查看系統負載 - 10.2 vmstat命令 - 10.3 top命令 - 10.4 sar命令 - 10.5 nload命令

使用 查看 系統負載 - 10.1 使用w查看系統負載 - 10.2 vmstat命令 - 10.3 top命令 - 10.4 sar命令 - 10.5 nload命令 # 10.1 使用w查看系統負載 ![mark](http://oqxf7c508.bkt.clouddn.com/blo

性能測試中vmstat命令的常見使用。

比較 程序 例如 -s read pen 負載 寫入 線程數 vmstat是Linux中常用的一個命令,尤其是在進行性能測試時,使用該命令,往往能輔助我們進行性能問題定位。 我們先看一下這個命令執行得到的數據。 [[email protected] ~]# vms

linux中wc命令用法

字節 統計字符 -- 幫助信息 linux系統 count 沒有 標準 讀取 Linux系統中的wc(Word Count)命令的功能為統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。 1.命令格式: wc [選項]文件... 2.命令功能: 統計指定文件中的字節