效能測試 vmstat解析

2021-09-25 13:53:55 字數 2016 閱讀 9770

效能測試 - vmstat解析

2019-07

vmstat檢視檢視b引數(等待資源的程序數)和wa引數(i/o等待所占用的cpu時間的百分比,高過30%時i/o壓力高)

vmstat命令是最常見的linux/unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的cpu使用率,記憶體使用,虛擬記憶體交換情況,io讀寫情況。這個命令是我檢視linux/unix最喜愛的命令,乙個是linux/unix都支援,二是相比top,我可以看到整個機器的cpu,記憶體,io的使用情況,而不是單單看到各個程序的cpu使用率和記憶體使用率(使用場景不一樣)。

r表示執行佇列(就是說多少個進**的分配到cpu),我測試的伺服器目前cpu比較空閒,沒什麼程式在跑,當這個值超過了cpu數目,就會出現cpu瓶頸了。這個也和top的負載有關係,一般負載超過了3就比較高,超過了5就高,超過了10就不正常了,伺服器的狀態很危險。top的負載類似每秒的執行佇列。如果執行佇列過大,表示你的cpu很繁忙,一般會造成cpu使用率很高。

b表示阻塞的程序,這個不多說,程序阻塞,大家懂的。

swpd虛擬記憶體已使用的大小,如果大於0,表示你的機器物理記憶體不足了,如果不是程式記憶體洩露的原因,那麼你該公升級記憶體了或者把耗記憶體的任務遷移到其他機器。

free空閒的物理記憶體的大小,我的機器記憶體總共8g,剩餘3415m。

bufflinux/unix系統是用來儲存,目錄裡面有什麼內容,許可權等的快取,我本機大概占用300多m

cachecache直接用來記憶我們開啟的檔案,給檔案做緩衝,我本機大概占用300多m(這裡是linux/unix的聰明之處,把空閒的物理記憶體的一部分拿來做檔案和目錄的快取,是為了提高 程式執行的效能,當程式使用記憶體時,buffer/cached會很快地被使用。)

si每秒從磁碟讀入虛擬記憶體的大小,如果這個值大於0,表示物理記憶體不夠用或者記憶體洩露了,要查詢耗記憶體程序解決掉。我的機器記憶體充裕,一切正常。

so每秒虛擬記憶體寫入磁碟的大小,如果這個值大於0,同上。

bi塊裝置每秒接收的塊數量,這裡的塊裝置是指系統上所有的磁碟和其他塊裝置,預設塊大小是1024byte,我本機上沒什麼io操作,所以一直是0,但是我曾在處理拷貝大量資料(2-3t)的機器上看過可以達到140000/s,磁碟寫入速度差不多140m每秒

bo塊裝置每秒傳送的塊數量,例如我們讀取檔案,bo就要大於0。bi和bo一般都要接近0,不然就是io過於頻繁,需要調整。

in每秒cpu的中斷次數,包括時間中斷

cs每秒上下文切換次數,例如我們呼叫系統函式,就要進行上下文切換,執行緒的切換,也要程序上下文切換,這個值要越小越好,太大了,要考慮調低執行緒或者程序的數目,例如在apache和nginx這種web伺服器中,我們一般做效能測試時會進行幾千併發甚至幾萬併發的測試,選擇web伺服器的程序可以由程序或者執行緒的峰值一直下調,壓測,直到cs到乙個比較小的值,這個程序和執行緒數就是比較合適的值了。系統呼叫也是,每次呼叫系統函式,我們的**就會進入核心空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁呼叫系統函式。上下文切換次數過多表示你的cpu大部分浪費在上下文切換,導致cpu幹正經事的時間少了,cpu沒有充分利用,是不可取的。

us使用者cpu時間,我曾經在乙個做加密解密很頻繁的伺服器上,可以看到us接近100,r執行佇列達到80(機器在做壓力測試,效能表現不佳)。

sy系統cpu時間,如果太高,表示系統呼叫時間長,例如是io操作頻繁。

id空閒 cpu時間,一般來說,id + us + sy = 100,一般我認為id是空閒cpu使用率,us是使用者cpu使用率,sy是系統cpu使用率。

wt等待io cpu時間。

原文

效能分析命令 vmstat

usage vmstat options delay count delay代表每過多少秒顯示一條,count代表要顯示的總條數 options a,active active inactive memory f,forks number of forks since boot m,slabs sl...

vmstat 效能分析工具

vmstat 全面的效能分析工具,可以觀察到系統的程序狀態 記憶體使用 虛擬記憶體使用 磁碟的io 中斷 上下文切換 cpu使用等。在系統中使用root身份,執行vmstat 1 命令,觀察效能狀況。各引數值含義見下方 vmstat procs 執行的和等待 cpu時間片 執行的程序數,這個值也可以...

效能監控指令vmstat

監控通常分為機器監控和服務監控,機器監控是基礎監控,目的是為了獲得系統當前的執行狀態,服務監控則是主要目的,也是最應該關心的監控,機器監控也是為了更好的服務監控而存在,簡單來說,服務監控和系統上部署的具體服務有關,但監控模式可以統一。監控是為了獲得相關的目標資料,獲得資料是為了異常情況下作出分析,分...