LINUX的內存管理機制,一般情況下不需要特意去釋放已經使用的cache。Cache機制的存在,使得Linux對磁盤的讀寫速度是有較大的好處的。 在 Linux 操作系統中,當應用程序需要讀取文件中的數據時,操作系統先分配一些內存,將數據從存儲設備讀入到這些內存中,然后再將數據分發給應用程序;當需要往文件 中寫數據時,操作系統先分配內存接收用戶數據,然后再將數據從內存寫到磁盤上。
下面介紹兩種方法來回收cache:
一,使用命令手動回收
sync????????????????????????????????????????????????????????????##釋放前最好sync一下,防止丟數據echo 3 > /proc/sys/vm/drop_caches???????? ##cache釋放
二,調整系統vm配置
風險預警:調整以下系統配置可能會對系統性能造成負面影響,請仔細測試并謹慎操作.
/etc/sysctl.conf里有幾個對內存管理影響比較大的配置,以下配置項的文檔見vm.txt。
vm.vfs_cache_pressure
系統在進行內存回收時,會先回收page cache, inode cache, dentry cache和swap cache。vfs_cache_pressure越大,每次回收時,inode cache和dentry cache所占比例越大
vfs_cache_pressure默認是100,值越大inode cache和dentry cache的回收速度會越快,越小則回收越慢,為0的時候完全不回收(OOM!)。
vm.min_free_kbytes
系統的"保留內存"的大小,"保留內存"用于低內存狀態下的"atomic memory allocation requests"(eg. kmalloc + GFP_ATOMIC),該參數也被用于計算開始內存回收的閥值,默認在開機的時候根據當前的內存計算所得,越大則表示系統會越早開始內存回收。
min_free_kbytes過大可能會導致OOM,太小可能會導致系統出現死鎖等問題。
vm.swappiness
該配置用于控制系統將內存swap out到交換空間的積極性,取值范圍是[0, 100]。swappiness越大,系統的交換積極性越高,默認是60,如果為0則不會進行交換。