linux釋放內存

在Linux系統下,咱們通常不須要去釋放內存,由於系統已經將內存管理的很好。可是凡事也有例外,有的時候內存會被緩存佔用掉,致使系統使用SWAP空間影響性能,此時就須要執行釋放內存(清理緩存)的操做了。node

Linux系統的緩存機制是至關先進的,他會針對dentry(用於VFS,加速文件路徑名到inode的轉換)、Buffer Cache(針對磁盤塊的讀寫)和Page Cache(針對文件inode的讀寫)進行緩存操做。可是在進行了大量文件操做以後,緩存會把內存資源基本用光。但實際上咱們文件操做已經完成,這部分緩存已經用不到了。這個時候,咱們難道只能眼睜睜的看着緩存把內存空間佔據掉麼?docker

因此,咱們仍是有必要來手動進行Linux下釋放內存的操做,其實也就是釋放緩存的操做了。緩存

要達到釋放緩存的目的,咱們首先須要瞭解下關鍵的配置文件/proc/sys/vm/drop_caches。這個文件中記錄了緩存釋放的參數,默認值爲0,也就是不釋放緩存。他的值能夠爲0~3之間的任意數字,表明着不一樣的含義:app

0 – 不釋放
1 – 釋放頁緩存
2 – 釋放dentries和inodes
3 – 釋放全部緩存oop

知道了參數後,咱們就能夠根據咱們的須要,使用下面的指令來進行操做。性能

首先咱們須要使用sync指令,將全部未寫的系統緩衝區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。不然在釋放緩存的過程當中,可能會丟失未保存的文件。ui

echo 3 > /proc/sys/vm/drop_cachesspa

此指令輸入後會當即生效,能夠查詢如今的可用內存明顯的變多了。進程

要查詢當前緩存釋放的參數,能夠輸入下面的指令:內存

#cat /proc/sys/vm/drop_caches

 
----------------------------------------------------------------
free -m
上述是清理內存全部緩存的方法。接下來是要把SWap分區的使用移到物理內存當中。
首先肯定swap分區使用的哪一個分區
 blkid
 ls -l /dev/disk/by-uuid


[root@ /]# blkid
/dev/vda1: UUID="976105f5-f402-456c-aadd-50de49ff88f9" TYPE="ext4"
/dev/vdb1: UUID="cd2008fe-e340-4a8d-a0b3-5adbcc0c7253" TYPE="ext4"
/dev/loop0: UUID="53224e6c-45f5-4556-b839-38bbdaf8ceed" TYPE="xfs"
/dev/mapper/docker-253:1-1574349-pool: UUID="53224e6c-45f5-4556-b839-38bbdaf8ceed" TYPE="xfs"

而後能夠將swap分區關掉重開,進程使用的虛擬內存就會跑到物理內存中了

swapoff swapfile

swapon swapfile

相關文章
相關標籤/搜索