1. 程式人生 > >LINUX 查看當前系統的內存使用情況 vmstat

LINUX 查看當前系統的內存使用情況 vmstat

內存不足 tro 文件和目錄 -m 監控 存儲 ces 通過 包括

Linux vmstat 命令

Vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。

相比top,我可以看到整個機器的CPU,內存,IO的使用情況,而不是單單看到各個進程的CPU使用率和內存使用率(使用場景不一樣)

> 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

0 0 0 323208 290276 5500528 0 0 0 2 0 0 0 0 100 0 0

一般、vmstat工具的使用是通過兩個參數來完成的、

第一個參數為采樣的時間、單位是秒、第二個采樣的次數

> vmstat 2 1 // 表示:每隔兩秒、采集一次服務器狀態

[[email protected] ~]$ vmstat 2 1

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 0 323084 290276 5500528 0 0 0 2 0 0 0 0 100 0 0

實際項目中、我們一般是在一段時間內一直監控、不想監控、直接結束就ok

> vmstat 2 // 表示每隔兩秒采集一次數據、一直采集(直到主動結束程序)

[[email protected] ~]$ vmstat 2

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 0 323208 290276 5500528 0 0 0 2 0 0 0 0 100 0 0

0 0 0 323192 290276 5500528 0 0 0 0 248 341 0 0 100 0 0

0 0 0 323192 290276 5500528 0 0 0 0 225 333 0 0 100 0 0

2 0 0 323192 290276 5500528 0 0 0 0 225 332 0 0 100 0 0

^C

具體的、每一個參數所代表的內容如下:

r

表示運行隊列;

當這個值超過了CPU數目,就會出現CPU瓶頸了;

一般負載超過了3就高了、超過了5個就比較高、超過了10個就不正常了、服務器就比較危險了;

top的負載類似每秒運行的隊列。如果隊列過大、表示CPU很忙、

b

表示阻塞的進程、

swpd

表示虛擬內存使用的大小

如果大於0、表示機器物理內存不足、如果不是內存泄漏的原因、就應該升級內存、或者遷移內存;

free

表示空閑內存的大小

buff

表示用來存儲目錄裏面的內容、權限等緩存;

cache

表示緩存的大小、cache直接用來記錄我們打開的文件、給文件做緩存;

(將空閑的物理內存的一部分拿來坐文件和目錄的緩存、提高程序執行的性能)

(當程序使用內存時、buff/cache會很快地被使用)

si

表示每秒從磁盤讀入虛擬內存的大小;

如果這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉;

so

表示每秒虛擬內存寫入磁盤的大小;

bi

表示塊設備每秒接收的塊數量;

這裏的塊設備是指系統上所有的磁盤和其他塊設備;

bo

表示塊設備每秒發送的塊數量;

例如我們讀取文件,bo就要大於0。bi和bo一般都要接近0,不然就是IO過於頻繁,需要調整。

in

表示每秒CPU的中斷次數、包括時間中斷;

cs

表示每秒上下文切換次數、

當調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換;

這個值要越小越好,太大了,要考慮調低線程或者進程的數目;

us

表示用戶CPU時間、

sy

表示系統CPU時間;

如果太高,表示系統調用時間長

id

表示空閑CPU時間;

一般的 id + us + sy = 100

可以理解為:id是空閑CPU使用率、us是用戶CPU使用率、sy是系統CPU使用率;

wt

表示等待IO、CPU時間;

LINUX 查看當前系統的內存使用情況 vmstat