為了加速操作和減少磁盤I/O,內核通常會盡可能多地緩存內存,這部分內存就是Cache Memory(緩存內存)。根據設計,包含緩存數據的頁面可以按需重新用于其他用途(例如,應用程序)。
緩存內存在程序運行結束后不會自動釋放。這可能會導致程序頻繁讀寫文件后可用物理內存變得很少,必要時(比如內存確實不夠用),需要主動釋放緩存內存。
注意:一般情況下,是不推薦主動釋放緩存內存的,除非你有非常明確的需求,比如測試程序緩存內存的使用情況,因為對同一應用程序來說,緩存內存是可用的。
釋放緩存內容
可以通過修改系統控制文件/proc/sys/vm/drop_caches釋放緩存內存。
1、釋放pagecache(頁面緩存)
echo 1 > /proc/sys/vm/drop_caches
2、釋放reclaimable slab objects (includes dentries and inodes)(可回收slab對象(包括dentry,inode))
echo 2 > /proc/sys/vm/drop_caches
3、釋放slab對象和pagecache
echo 3 > /proc/sys/vm/drop_caches
這是一種非破壞性操作(non-destructive operation),不會釋放任何臟對象。如果要增加此操作釋放的對象數量,可以在寫入/proc/sys/vm/drop_cache之前運行sync。這將最大限度地減少系統上臟對象的數量,并創建更多待刪除的候選對象。
需要注意的是/proc/sys/vm/drop_caches不是用于控制,各種內核緩存(inodes,dentries,pagecache等等)增長的方法。當系統其它地方需要內存時,Linux內核會自動回收這些對象。
使用該文件可能引發性能問題。因為它會刪除緩存對象,可能需要消耗大量的I/O和CPU才能重新創建被刪除的對象,尤其是這些對象被大量使用的情況下。因此,不建議在測試或調試環境之外使用。
實踐測試
# free -m total used free shared buff/cache available Mem: 7794 2373 1478 431 3942 4691 Swap: 3967 0 3967 # echo 1 > /proc/sys/vm/drop_caches # free -m total used free shared buff/cache available Mem: 7794 2373 2600 431 2821 4705 Swap: 3967 0 3967 # echo 2 > /proc/sys/vm/drop_caches # free -m total used free shared buff/cache available Mem: 7794 1635 5527 431 631 5495 Swap: 3967 0 3967 # echo 3 > /proc/sys/vm/drop_caches # free -m total used free shared buff/cache available Mem: 7794 1635 5529 431 630 5496 Swap: 3967 0 3967
鏈接:https://www.cnblogs.com/shouke/p/16156335.html
-
Linux
+關注
關注
87文章
11329瀏覽量
209967 -
服務器
+關注
關注
12文章
9255瀏覽量
85755 -
內存
+關注
關注
8文章
3042瀏覽量
74177
原文標題:Linux服務器卡頓救星:一招釋放Cache內存,性能提升30%!
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論