<span id="vexk9"><table id="vexk9"></table></span>

      free

      顯示內存的使用情況

      補充說明

      free命令 可以顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區。

      語法

      free(選項)
      

      選項

      -b # 以Byte為單位顯示內存使用情況;
      -k # 以KB為單位顯示內存使用情況;
      -m # 以MB為單位顯示內存使用情況;
      -g # 以GB為單位顯示內存使用情況。 
      -o # 不顯示緩沖區調節列;
      -s<間隔秒數> # 持續觀察內存使用狀況;
      -t # 顯示內存總和列;
      -V # 顯示版本信息。
      

      實例

      free -t    # 以總和的形式顯示內存的使用信息
      free -s 10 # 周期性的查詢內存使用信息,每10s 執行一次命令
      

      顯示內存使用情況

      free -m
                   total       used       free     shared    buffers     cached
      Mem:          2016       1973         42          0        163       1497
      -/+ buffers/cache:        312       1703
      Swap:         4094          0       4094
      

      第一部分Mem行解釋:

      total:內存總數;
      used:已經使用的內存數;
      free:空閑的內存數;
      shared:當前已經廢棄不用;
      buffers Buffer:緩存內存數;
      cached Page:緩存內存數。
      

      關系:total = used + free

      第二部分(-/+ buffers/cache)解釋:

      (-buffers/cache) used內存數:第一部分Mem行中的 used – buffers – cached
      (+buffers/cache) free內存數: 第一部分Mem行中的 free + buffers + cached
      

      可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。

      第三部分是指交換分區。

      輸出結果的第四行是交換分區SWAP的,也就是我們通常所說的虛擬內存。 區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在于使用的角度來看,第一行是從OS的角度來看,因為對于OS,buffers/cached 都是屬于被使用,所以他的可用內存是2098428KB,已用內存是30841684KB,其中包括,內核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.

      第三行所指的是從應用程序角度來看,對于應用程序來說,buffers/cached 是等于可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。

      所以從應用程序的角度來說,可用內存=系統free memory+buffers+cached。 如本機情況的可用內存為:

      18007156=2098428KB+4545340KB+11363424KB

      接下來解釋什么時候內存會被交換,以及按什么方交換。

      當可用內存少于額定值的時候,就會開會進行交換。如何看額定值:

      cat /proc/meminfo
      
      MemTotal:       16140816 kB
      MemFree:          816004 kB
      MemAvailable:    2913824 kB
      Buffers:           17912 kB
      Cached:          2239076 kB
      SwapCached:            0 kB
      Active:         12774804 kB
      Inactive:        1594328 kB
      Active(anon):   12085544 kB
      Inactive(anon):    94572 kB
      Active(file):     689260 kB
      Inactive(file):  1499756 kB
      Unevictable:      116888 kB
      Mlocked:          116888 kB
      SwapTotal:       8191996 kB
      SwapFree:        8191996 kB
      Dirty:                56 kB
      Writeback:             0 kB
      AnonPages:      12229228 kB
      Mapped:           117136 kB
      Shmem:             58736 kB
      Slab:             395568 kB
      SReclaimable:     246700 kB
      SUnreclaim:       148868 kB
      KernelStack:       30496 kB
      PageTables:       165104 kB
      NFS_Unstable:          0 kB
      Bounce:                0 kB
      WritebackTmp:          0 kB
      CommitLimit:    16262404 kB
      Committed_AS:   27698600 kB
      VmallocTotal:   34359738367 kB
      VmallocUsed:      311072 kB
      VmallocChunk:   34350899200 kB
      HardwareCorrupted:     0 kB
      AnonHugePages:   3104768 kB
      HugePages_Total:       0
      HugePages_Free:        0
      HugePages_Rsvd:        0
      HugePages_Surp:        0
      Hugepagesize:       2048 kB
      DirectMap4k:      225536 kB
      DirectMap2M:    13279232 kB
      DirectMap1G:     5242880 kB
      

      交換將通過三個途徑來減少系統中使用的物理頁面的個數: 

      1. 減少緩沖與頁面cache的大小,
      2. 將系統V類型的內存頁面交換出去, 
      3. 換出或者丟棄頁面。(Application 占用的內存頁,也就是物理內存不足)。

      事實上,少量地使用swap是不是影響到系統性能的。

      那buffers和cached都是緩存,兩者有什么區別呢?

      為了提高磁盤存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉換), 還采取了兩種主要Cache方式:

      Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。 磁盤的操作有邏輯級(文件系統)和物理級(磁盤塊),這兩種Cache就是分別緩存邏輯和物理級數據的。

      Page cache實際上是針對文件系統的,是文件的緩存,在文件層面上的數據會緩存到page cache。文件的邏輯層需要映射到實際的物理磁盤,這種映射關系由文件系統來完成。當page cache的數據需要刷新時,page cache中的數據交給buffer cache,因為Buffer Cache就是緩存磁盤塊的。但是這種處理在2.6版本的內核之后就變的很簡單了,沒有真正意義上的cache操作。

      Buffer cache是針對磁盤塊的緩存,也就是在沒有文件系統的情況下,直接對磁盤進行操作的數據會緩存到buffer cache中,例如,文件系統的元數據都會緩存到buffer cache中。

      簡單說來,page cache用來緩存文件數據,buffer cache用來緩存磁盤數據。在有文件系統的情況下,對文件操作,那么數據會緩存到page cache,如果直接采用dd等工具對磁盤進行讀寫,那么數據會緩存到buffer cache。

      所以我們看linux,只要不用swap的交換空間,就不用擔心自己的內存太少.如果常常swap用很多,可能你就要考慮加物理內存了.這也是linux看內存是否夠用的標準.

      如果是應用服務器的話,一般只看第二行,+buffers/cache,即對應用程序來說free的內存太少了,也是該考慮優化程序或加內存了。

      主站蜘蛛池模板: 久久婷婷五月综合色99啪ak| 国产成人综合网在线观看| 涩涩色中文综合亚洲| 综合久久久久久中文字幕| 亚洲色图综合在线| 亚洲色图综合网站| 一本色道久久99一综合| 欧美激情综合亚洲一二区| 狠狠色噜噜狠狠狠狠色综合久| 天天影视色香欲综合免费| 伊人不卡久久大香线蕉综合影院| 久久久久久久尹人综合网亚洲| 色五月丁香五月综合五月4438| 久久综合综合久久狠狠狠97色88| 天天综合网天天做天天受| 亚洲国产综合第一精品小说| 久久精品综合一区二区三区| 色综合久久久无码中文字幕波多| 亚洲综合无码一区二区| 国产激情综合在线观看| 色爱区综合激情五月综合色 | 亚洲国产精品综合久久20| 一本一道久久综合狠狠老| 六月丁香婷婷综合| 97久久综合精品久久久综合| 香蕉综合在线视频91| 亚洲狠狠婷婷综合久久蜜芽| 亚洲 欧洲 日韩 综合在线 | 色综合久久中文字幕无码| 亚洲综合伊人久久综合| 久久婷婷五月综合97色直播| 中文字幕亚洲综合久久菠萝蜜 | 一本久道久久综合狠狠躁AV| 婷婷激情综合色五月久久| 亚州AV综合色区无码一区| 狠狠色丁香久久婷婷综合_中| 色青青草原桃花久久综合| 色婷婷久久综合中文久久蜜桃| 狠狠做深爱婷婷久久综合一区| 免费国产综合视频在线看| 伊人久久综合精品无码AV专区|