Linux系統(tǒng)內(nèi)存性能解析
Linux系統(tǒng)內(nèi)存性能解析
歡迎來到學(xué)習(xí)啦,本文介紹Linux系統(tǒng)內(nèi)存性能解析 ,歡迎您閱讀。
一,利用free命令監(jiān)控內(nèi)存
從操作系統(tǒng)角度和應(yīng)用程序角度進行分析free命令結(jié)果。
Linux系統(tǒng)下對內(nèi)存的調(diào)度有緩存機制,如果系統(tǒng)需求內(nèi)存很大的話,被緩存的內(nèi)存頁是可以回收的。
不過一般為了高效,是處于cache狀態(tài)。
如果你用free命令查看內(nèi)存使用狀況,-/+ buffers/cache這行的數(shù)值才是你需要獲取的信息。
[root@www ~]# free -m
total used free shared buffers cached
Mem: 3920 3837 82 0 132 1947
-/+ buffers/cache: 1757 2162
Swap: 4094 1 4093
1、操作系統(tǒng)是看 Mem
這里的free=82才是真正沒有任何數(shù)據(jù)的(注意,不是系統(tǒng)的可用內(nèi)存量),不涉及到Linux高效數(shù)據(jù)存取(Access)中提到的緩存。
total:內(nèi)存總數(shù)
used:已使用內(nèi)存數(shù)
free:空閑的內(nèi)存數(shù)
shared:可以忽略,過時不用的了,總是為0
buffers:Buffer緩存內(nèi)存數(shù)
cached:Page緩存內(nèi)存數(shù)
關(guān)系:total=used+free
2、應(yīng)用程序看-/+ buffers/cache(這行代表的就是程序真正使用內(nèi)存量和剩余內(nèi)存量):
這里的free(106)表示可以被應(yīng)用程序可支配的剩余內(nèi)存,也就是系統(tǒng)還有多少內(nèi)存可以被apache這類程序使用
used=Mem行中的used – buffers – cached
free=Mem行中的free + buffers + cached
可見-buffers/cache反映的是被程序?qū)崒嵲谠诔缘舻膬?nèi)存,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù)。
當(dāng)可用內(nèi)存少于額定值的時候,就會開會進行交換。
3、Swap
只要不用swap的交換空間,就不用擔(dān)心自己的內(nèi)存太少。如果常常swap用很多,可能你就要考慮加物理內(nèi)存了。這也是linux看內(nèi)存是否夠用的標(biāo)準(zhǔn)。
其實可以從二個方面來解釋:
對操作系統(tǒng)來講是Mem的參數(shù).buffers/cached 都是屬于被使用的。
對應(yīng)用程序來講是(-/+ buffers/cach),buffers/cached 是等同可用的,因為buffer/cached是為了提高程序執(zhí)行的性能,當(dāng)程序使用內(nèi)存時,buffer/cached會很快地被使用。
所以,以應(yīng)用來看看,以(-/+ buffers/cache)的free和used為主.所以我們看這個就好了。另外告訴大家一些常識。Linux為了提高磁盤和內(nèi)存存取效率。
Linux做了很多精心的設(shè)計, 除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。
前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache能有效縮短了 I/O系統(tǒng)調(diào)用(比如read,write,getdents)的時間。
一般有這樣一個經(jīng)驗公式:應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存>70%時,表示系統(tǒng)內(nèi)存資源非常充足,不影響系統(tǒng)性能,
應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<20%時,表示系統(tǒng)內(nèi)存資源緊缺,需要增加系統(tǒng)內(nèi)存,
20%<應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<70%時,表示系統(tǒng)內(nèi)存資源基本能滿足應(yīng)用需求,暫時不影響系統(tǒng)性能。
二,利用vmstat命令監(jiān)控內(nèi)存
[root@www ~]# vmstat 2 10
procs ———–memory———- —swap– —–io—- –system– —–cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 1 1096 211184 125448 1747432 0 0 63 222 1 3 19 7 57 17 0
3 0 1096 167492 125680 1750628 0 0 1212 6 5225 2765 21 11 56 12 0
1 5 1096 202556 125880 1754964 0 0 1122 2286 5502 2252 32 6 46 16 0
3 1 1096 126464 125396 1765556 0 0 4842 88 5723 3821 38 11 33 18 0
2 4 1096 192260 125064 1752772 0 0 1958 42 4817 1868 20 6 61 14 0
1 3 1096 182900 125228 1757592 0 0 3668 4530 5513 2948 29 11 31 29 0
3 4 1096 127220 125388 1763436 0 0 3016 20 5579 2329 20 13 31 36 0
2 11 1096 138924 125616 1774812 0 0 4702 150 5871 3263 64 9 9 19 0
0 1 1096 164788 125800 1777452 0 0 3634 52 6158 2897 47 6 30 17 0
2 3 1096 175148 124992 1749708 0 0 4032 2 5698 2720 26 8 37 28 0
1,看memory列
swpd: 虛擬內(nèi)存使用情況,單位:KB
如果不為0,或者比較大,但si,so一直為0,這種情況通常也不會影響系統(tǒng)性能。
free: 當(dāng)前系統(tǒng)空閑的內(nèi)存,單位KB
buff:表示buffers cache的內(nèi)存數(shù)量,一般對塊設(shè)備的讀寫才需要緩沖。
cache:表示page cached的內(nèi)存數(shù)量,一般作為文件系統(tǒng)cached,頻繁訪問的文件都會被cached,
如果cache值較大,說明cached的文件數(shù)較多,如果此時IO中bi比較小,說明文件系統(tǒng)效率比較好。
2,看swap列
si:表示從磁盤交換到內(nèi)存的交換頁數(shù)量,單位:KB/秒
so:表示從內(nèi)存交換到磁盤的交換頁數(shù)量,單位:KB/秒
一般情況下,si、so的值都為0,如果si、so的值長期不為0,則表示系統(tǒng)內(nèi)存不足。需要考慮增加系統(tǒng)內(nèi)存。