Linux 當記憶體被大量使用, 然後這些記憶體又被當 cache 用, 於是記憶體不足時無法回收, 就會出現問題.
手動回收 Cached Memory
有下述兩種方式可以手動做回收記憶體:
- 參考此文: 回收 Linux cached memory
echo 1 > /proc/sys/vm/drop_caches or sysctl -w vm.drop_caches=1
- 之前 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
- $ sudo sh -c 'free -m && echo 1 > /proc/sys/vm/drop_caches && free -m' # 看記憶體前後變化
Linux 查看 Cache 的記憶體使用量
Linux 下述有幾個命令可以看到 cache 的記憶體使用量:
- htop 的 Help 會看到這個說明: (第三欄的 cache used)
- Memory bar: [used/buffers/cache used/total].
- top 看到的數字: (右下角的 cached Mem)
- KiB Mem: 32704316 total, 32311364 used, 392952 free, 721316 buffers
- KiB Swap: 78903288 total, 824512 used, 78078776 free. 24875720 cached Mem
- free -m 的 cached 對應的 Mem 欄位
- total used free shared buffers cached
- Mem: 31937 31566 371 958 704 24295
您好唷~~ 您有寫過很多 Linux 文章都很適用很專業, 能否請教一下 如果我要調低系統 cache memory 使用的最大值時, 是否有參數可以讓我做調整呢 @@?
非常謝謝您的幫忙!!
Sam
這個我沒有去研究耶!因為 cache memory 最佳設定就是讓 kernel 自己去分配。
為何會需要調低 cache memory 的最大值呢?
Dear Sir,
那是因為 客戶一直覺得 他的 memory 都被 cache memory 吃滿了, 解釋了也沒用, 他們一直看到 memory 所剩無幾, 才會想說有沒有值可以去 reduce cache memory 的上限.
>"<
吃滿了很好阿,速度才會快阿。
重點是吃滿後有造成什麼問題嗎?有造成其它程式掛掉嗎?
好~ 我在跟工程師確認一下~~~!!!
看了 /proc/sys/vm/ 下面一堆值可以調整, 調整不好可能系統就會崩潰了, 感覺很危險 ~!!
謝謝 Tsung, 您這個網站的 Linux 資訊 真的幫助了很多 Linux 工程師, 謝謝您 ^_^
Sam