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:
    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

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix。將永久鏈結加入書籤。

Linux 手動回收 已經被 Cache 的記憶體 有 5 則回應

  1. Sam Lin 說道:

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

    非常謝謝您的幫忙!!

    Sam

    • Tsung 說道:

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

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

  2. Sam Lin 說道:

    Dear Sir,

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

    >"<

  3. Sam Lin 說道:

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

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

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

    Sam

發表迴響

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