Linux 手動回收 已經被 Cache 的記憶體

Linux 當記憶體被大量使用, 然後這些記憶體又被當 cache 用, 於是記憶體不足時無法回收, 就會出現問題.

手動回收 Cached Memory

有下述兩種方式可以手動做回收記憶體:

  1. 參考此文: 回收 Linux cached memory
    echo 1 > /proc/sys/vm/drop_caches
    or
    sysctl -w vm.drop_caches=1
  2. 之前 AceLan 長輩指點的方式
    # And free up caches
    #
    echo Freeing the page cache:
    echo 1 > /proc/sys/vm/drop_caches
    echo Free dentries and inodes:
    echo 2 > /proc/sys/vm/drop_caches
    echo "Free the page cache, dentries and the inodes: (1+2)"
    echo 3 > /proc/sys/vm/drop_caches
  3. $ sudo sh -c 'free -m && echo 1 > /proc/sys/vm/drop_caches && free -m' # 看記憶體前後變化

Linux 查看 Cache 的記憶體使用量

Linux 下述有幾個命令可以看到 cache 的記憶體使用量:

  1. htop 的 Help 會看到這個說明: (第三欄的 cache used)
    • Memory bar: [used/buffers/cache used/total].
  2. top 看到的數字: (右下角的 cached Mem)
    • KiB Mem: 32704316 total, 32311364 used, 392952 free, 721316 buffers
    • KiB Swap: 78903288 total, 824512 used, 78078776 free. 24875720 cached Mem
  3. free -m 的 cached 對應的 Mem 欄位
    • total used free shared buffers cached
    • Mem: 31937 31566 371 958 704 24295

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Linux 手動回收 已經被 Cache 的記憶體〉中有 5 則留言

  1. 您好唷~~ 您有寫過很多 Linux 文章都很適用很專業, 能否請教一下 如果我要調低系統 cache memory 使用的最大值時, 是否有參數可以讓我做調整呢 @@?

    非常謝謝您的幫忙!!

    Sam

    1. 這個我沒有去研究耶!因為 cache memory 最佳設定就是讓 kernel 自己去分配。

      為何會需要調低 cache memory 的最大值呢?

  2. Dear Sir,

    那是因為 客戶一直覺得 他的 memory 都被 cache memory 吃滿了, 解釋了也沒用, 他們一直看到 memory 所剩無幾, 才會想說有沒有值可以去 reduce cache memory 的上限.

    >"<

  3. 好~ 我在跟工程師確認一下~~~!!!

    看了 /proc/sys/vm/ 下面一堆值可以調整, 調整不好可能系統就會崩潰了, 感覺很危險 ~!!

    謝謝 Tsung, 您這個網站的 Linux 資訊 真的幫助了很多 Linux 工程師, 謝謝您 ^_^

    Sam

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料