歡迎來到學習啦,本文介紹Linux系統內存性能解析 ,歡迎您閱讀。
一,利用free命令監控內存
從操作系統角度和應用程序角度進行分析free命令結果。
Linux系統下對內存的調度有緩存機制,如果系統需求內存很大的話,被緩存的內存頁是可以回收的。
不過一般為了高效,是處於cache狀態。
如果你用free命令查看內存使用狀況,-/+ buffers/cache這行的數值才是你需要獲取的信息。
[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、操作系統是看 Mem
這裡的free=82才是真正沒有任何數據的(注意,不是系統的可用內存量),不涉及到Linux高效數據存取(Access)中提到的緩存。
total:內存總數
used:已使用內存數
free:空閒的內存數
shared:可以忽略,過時不用的了,總是為0
buffers:Buffer緩存內存數
cached:Page緩存內存數
關系:total=used+free
2、應用程序看-/+ buffers/cache(這行代表的就是程序真正使用內存量和剩余內存量):
這裡的free(106)表示可以被應用程序可支配的剩余內存,也就是系統還有多少內存可以被apache這類程序使用
used=Mem行中的used – buffers – cached
free=Mem行中的free + buffers + cached
可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。
當可用內存少於額定值的時候,就會開會進行交換。
3、Swap
只要不用swap的交換空間,就不用擔心自己的內存太少。如果常常swap用很多,可能你就要考慮加物理內存了。這也是linux看內存是否夠用的標准。
其實可以從二個方面來解釋:
對操作系統來講是Mem的參數.buffers/cached 都是屬於被使用的。
對應用程序來講是(-/+ buffers/cach),buffers/cached 是等同可用的,因為buffer/cached是為了提高程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。
所以,以應用來看看,以(-/+ buffers/cache)的free和used為主.所以我們看這個就好了。另外告訴大家一些常識。Linux為了提高磁盤和內存存取效率。
Linux做了很多精心的設計, 除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。
前者針對磁盤塊的讀寫,後者針對文件inode的讀寫。這些Cache能有效縮短了 I/O系統調用(比如read,write,getdents)的時間。
一般有這樣一個經驗公式:應用程序可用內存/系統物理內存>70%時,表示系統內存資源非常充足,不影響系統性能,
應用程序可用內存/系統物理內存<20%時,表示系統內存資源緊缺,需要增加系統內存,
20%<應用程序可用內存/系統物理內存<70%時,表示系統內存資源基本能滿足應用需求,暫時不影響系統性能。
二,利用vmstat命令監控內存
[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: 虛擬內存使用情況,單位:KB
如果不為0,或者比較大,但si,so一直為0,這種情況通常也不會影響系統性能。
free: 當前系統空閒的內存,單位KB
buff:表示buffers cache的內存數量,一般對塊設備的讀寫才需要緩沖。
cache:表示page cached的內存數量,一般作為文件系統cached,頻繁訪問的文件都會被cached,
如果cache值較大,說明cached的文件數較多,如果此時IO中bi比較小,說明文件系統效率比較好。
2,看swap列
si:表示從磁盤交換到內存的交換頁數量,單位:KB/秒
so:表示從內存交換到磁盤的交換頁數量,單位:KB/秒
一般情況下,si、so的值都為0,如果si、so的值長期不為0,則表示系統內存不足。需要考慮增加系統內存。