溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux 性能分析 top iostat vmstat free

發布時間:2020-10-04 10:12:16 來源:網絡 閱讀:681 作者:1216621479 欄目:移動開發

最近看到一大牛的分析報告,才知道筆者以前認識這4個命令是多么膚淺,其實要讀懂內存的信息,是要一些功力的。

1、top

Linux 性能分析  top iostat vmstat free

VIRT 虛擬內存總量,VIRT=SWAP+RES

SWAP 使用的虛擬內存中被換出的大小

RES 進程使用的、未被換出的物理內存大小

SHR 共享內存大小,單位kb

S 進程狀態

%MEM 進程使用的物理內存百分比

%CPU CPU時間占用百分比

Mem: 191272k total 物理內存總量

173656k used 使用的物理內存總量

17616k free 空閑內存總量

22052k buffers 用作內核緩存的內存量

Swap: 192772k total 交換區總量

0k used 使用的交換區總量

192772k free 空閑交換區總量

123988k cached緩沖的交換區總量。內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在于內存中的交換區的大小。相應的內存再次被換出時可不必再對交換區寫入。


2、free

Linux 性能分析  top iostat vmstat free主要關注值

Mem 物理內存統計

total 物理內存總量。

used 總計分配給緩存(包含buffers 與cache )使用的數量

free 未被分配的內存
shared 共享內存
buffers 系統分配但未被使用的buffers 數量,
兩種主要Cache方式之一,針對磁盤塊的讀寫(塊設備緩存)
cached 系統分配但未被使用的cache 數量,
兩種主要Cache方式之一,針對文件inode的讀寫(文件系統緩存)

-/+buffers/cached 物理內存的緩存統計

used (第一行Mem值)used - buffers -cached ,系統實際使用的內存總量

free (第一行Mem值)buffers + cached ,系統當前實際可用內存

Mem 從操作系統層面分析,buffers cached是已分配的(已使用)內存

-/+ buffers/cached 從應用程序層面分析,buffers cached是隨時都可以拿來用的,而且是優先使用的

Swap交換分區的使用情況


3、vmstat

Linux 性能分析  top iostat vmstat free

r 表示運行隊列, 值超過了CPU數目,就會出現CPU瓶頸

b 表示阻塞的進程,觀察iowait值,通常是由于IO等待引起

swpd 虛擬內存已使用的大小,如果大于0,表示物理內存不足,注意程序內存泄露

free 空閑的物理內存的大小

buff

cache 直接記憶打開的文件,給文件做緩沖,Linux/Unix把空閑的物理內存的一部分拿來做文件和目錄的緩存,是為了提高程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用

如果cache值較大,相應的bi會減少

si 每秒從磁盤讀入虛擬內存的大?。ㄋ追Q換進),值大于0,表示物理內存不夠或者內存泄露

so 每秒虛擬內存寫入磁盤的大?。ㄋ壮鰮Q出),值大于0,表示物理內存不夠或者內存泄露

如果swpd值不為0,但si so值長期為0,這種情況不會影響系統性能,但如果值長期大于0,CPU資源和IO資源都會受影響,系統性能下降

bi 從塊設備讀入的數據總量(讀磁盤)(KB/s)

bo 寫入到塊設備的數據總理(寫磁盤)(KB/s)

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

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

us 用戶CPU時間

sy 系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁

id 空閑 CPU時間

wt 等待IOCPU時間


4、iostat

iostat option <interval> <count>

-c 顯示CPU

-d 顯示Device,通常指磁盤

-p 顯示磁盤分區信息,不能與-x同時使用

-k 單位為KB

-m 單位為MB

-n 顯示NFS信息

-t 顯示時間,與AIX的時間顯示有差別

-x 顯示更詳細信息

常用命令1:iostat

Linux 性能分析  top iostat vmstat free

常用命令2:iostat -x

Linux 性能分析  top iostat vmstat free

rrqm/s 每秒進行 merge 的讀操作數目,即 delta(rmerge)/s
wrqm/s
每秒進行 merge 的寫操作數目,即 delta(wmerge)/s
r/s
每秒完成的讀 I/O 設備次數,即 delta(rio)/s
w/s
每秒完成的寫 I/O 設備次數。即delta(wio)/s

兩值相加=iops,磁盤性能三大分析因素之一,尤其是小文件的系統
rsec/s 每秒讀扇區數,即delta(rsect)/s
wsec/s:
每秒寫扇區數,即delta(wsect)/s
rkB/s 每秒讀K字節數,是 rsect/s 的一半,因為每扇區大小為512字節
wkB/s 每秒寫K字節數,是 wsect/s 的一半
avgrq-sz 平均每次設備I/O操作的數據大小(扇區),delta(rsect+wsect)/delta(rio+wio)
avgqu-sz 平均I/O隊列長度,即delta(aveq)/s/1000 (因為aveq的單位為毫秒)。

await 平均每次設備I/O操作的等待時間 (毫秒), delta(ruse+wuse)/delta(rio+wio)
svctm
平均每次設備I/O操作的服務時間 (毫秒), delta(use)/delta(rio+wio)

服務時間,俗稱響應時間,數據庫尤其注得此值

%util: 一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的


僅讀懂上述每個參數的意義是不夠的,我們應該分析參數之間的關聯關系,即一個參數的變化會引起另一個參數的上下波動

從而找出系統真正的瓶勁,好對癥下藥。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女