︿
Top

前言

在使用 RHEL/CentOS 時會因為它的 Memory Buffer/Cache 機制 (為了盡量減少 Disk I/O),常常會讓我覺得好像發生了 Memory Leak 的感覺,如果您覺得有這種錯覺而且真的想要手動清空目前佔用的 Memory Buffer/Cache,那麼就繼續接著看下去吧。


實作環境

  • CentOS 5.6 (64bit)



安裝及設定

安裝 CentOS 5.6 的伺服器實體記憶體有 16 GB,不過當您使用 top or free -m 指令查看 Memory 的使用量時,會發現怎麼 Memory 感覺所剩無幾 (Memory Buffer/Cache 機制!!),所以您可以使用 Drop Cache 機制來手動釋放了,預設數值為 0 您可以送入 1、2、3 進去給 /proc/sys/vm/drop_caches,並且在執行前強烈建議先執行 sync 是比較保險的作法,至於數值 1 ~ 3 所代表的意義及說明如下: 詳細說明請參考 Performance Tuning Guide - 5.4 Tuning Virtual Memory
  • 1: 釋放所有 Page Cache Memory。
  • 2: 釋放所有 Unused Slab Cache Memory。
  • 3: 釋放所有 Page Cache 及 Slab Cache Memory。

因為是上線中的機器,所以我只執行釋放所有 Page Cache Memory 而以,可以很明顯的看到釋放前 Free Memory 為 3743 MB 而釋放後為 13935 MB
free -m
                       total     used    free   shared   buffers   cached
 Mem:         15993    12249     3743       0     1384      7888
 -/+ buffers/cache:     2976    13016
 Swap:         8236        0     8236
sync;sync;sync
echo 1 > /proc/sys/vm/drop_caches
echo 0 > /proc/sys/vm/drop_caches
free -m
                     total       used    free   shared   buffers   cached
 Mem:         15993   2057      13935       0        0        47
 -/+ buffers/cache:   2009      13984
 Swap:         8236      0       8236




參考

文章標籤: