Linux系統釋放cache記憶體

zhuachen發表於2011-10-20

先看看free命令結果:

# free
total used free shared buffers cached
Mem: 1035108 500168 534940 0 5496 139120
-/+ buffers/cache: 355552 679556
Swap: 2096472 451984 1644488

第二行(mem):
total:總計實體記憶體的大小.
used:已使用多大.
free:可用有多少.
Shared:多個程式共享的記憶體總額.
Buffers/cached:磁碟快取的大小.

第三行(-/ buffers/cached):

used:已使用多大.
free:可用有多少.

第二行(mem)的used/free與第三行(-/ buffers/cache) used/free的區別.

這兩個的區別在於使用的角度來看,第二行是從OS的角度來看,對於OS, buffers/cached 都是屬於被使用,它的可用記憶體是8908KB,已用記憶體是377116KB,其中包括,核心(OS)使用 Application(X, oracle,etc)使用的 buffers cached.

第三行所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是等於可用的,buffer/cached是為了提高檔案讀取的效能,當應用程式需再用到記憶體的時候,buffer/cached會很快地被回收.

從應用程式的角度來說, 可用記憶體 = 系統free memory+ buffers+ cached.

如上例: 679556 = 534940 + 5496 + 139120


如何釋放記憶體呢?

透過調整/proc/sys/vm/drop_caches來釋放記憶體. 操作如下:

[root@server test]# cat /proc/sys/vm/drop_caches --/proc/sys/vm/drop_caches的值,預設為0
0

[root@server test]# sync
手動執行sync命令(描述:sync 命令執行 sync 子例程.假如停止系統,則執行 sync 命令以確保文件系統的完整性.sync 命令將任何未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對映文件)

[root@server test]# echo 3 > /proc/sys/vm/drop_caches
[root@server test]# cat /proc/sys/vm/drop_caches --將/proc/sys/vm/drop_caches值設為3

3

[root@server test]# free -m --檢視釋放的記憶體情況

其他參考:

/proc/sys/vm/drop_caches (since Linux 2.6.16)

Writing to this file causes the kernel to drop clean caches,

dentries and inodes from memory, causing that memory to become free.

To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;

to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;

to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches.

Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync(8) first.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23682146/viewspace-1055823/,如需轉載,請註明出處,否則將追究法律責任。

相關文章