萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux系統內存性能解析

Linux系統內存性能解析

  歡迎來到學習啦,本文介紹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,則表示系統內存不足。需要考慮增加系統內存。

copyright © 萬盛學電腦網 all rights reserved