日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux-手动释放linux内存cache

發布時間:2025/3/21 linux 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux-手动释放linux内存cache 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作

執行以下命令

[root@entel2 ~]# sync [root@entel2 ~]# echo 3 > /proc/sys/vm/drop_caches

重新查詢


探究

free的用法

[root@entel2 rh]# free -help free: invalid option -- 'h' usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]-b,-k,-m,-g show output in bytes, KB, MB, or GB -l show detailed low and high memory statistics -o use old format (no -/+buffers/cache line) -t display total for RAM + swap -s update every [delay] seconds -c update [count] times -V display version information and exit

以M為單位顯示內存

我們先來探究一下參數含義

  • total 內存總數
  • used 已經使用的內存數
  • free 空閑的內存數
  • shared 多個進程共享的內存總額
  • buffers Buffer Cache和cached Page Cache 磁盤緩存的大小
  • -buffers/cache (已用)的內存數:used - buffers - cached
  • +buffers/cache(可用)的內存數:free + buffers + cached
  • 可用的memory=free memory+buffers+cached

當在Linux下頻繁存取文件后,物理內存會很快被用光,當程序結束后,內存不會被正常釋放,而是一直作為caching。

手動釋放緩存

/proc是一個虛擬文件系統,我們可以通過對它的讀寫操作做為與kernel實體間進行通信的一種手段。也就是說可以通過修改/proc中的文件,來對當前kernel的行為做出調整。

那么我們可以通過調整/proc/sys/vm/drop_caches來釋放內存。操作如下:

# cat /proc/sys/vm/drop_caches 0

首先,/proc/sys/vm/drop_caches的值,默認為0。

# sync

手動執行sync命令(描述:sync 命令運行 sync 子例程。如果必須停止系統,則運行sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件)

# echo 3 > /proc/sys/vm/drop_caches # cat /proc/sys/vm/drop_caches 3

將/proc/sys/vm/drop_caches值設為3


/proc/sys/vm/drop_caches用法

/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 first


意見總結

從man可以看到,這值從2.6.16以后的核心版本才提供,也就是老版的操作系統,如紅旗DC 5.0、RHEL 4.x之前的版本都沒有;若對于系統內存是否夠用的觀察,我還是原意去看swap的使用率和si/so兩個值的大小;

用戶常見的疑問是,為什么free這么小,是否關閉應用后內存沒有釋放?但實際上,我們都知道這是因為Linux對內存的管理與Windows不同,free小并不是說內存不夠用了,應該看的是free的第二行最后一個值:-/+ buffers/cache: 58 191,這才是系統可用的內存大小。

實際項目中告訴我們,如果因為是應用有像內存泄露、溢出的問題,從swap的使用情況是可以比較快速可以判斷的,但free上面反而比較難查看。

一般情況下,應用在系統上穩定運行了,free值也會保持在一個穩定值的,雖然看上去可能比較小。

當發生內存不足、應用獲取不到可用內存、OOM錯誤等問題時,還是更應該去分析應用方面的原因,如用戶量太大導致內存不足、發生應用內存溢出等情況,否則,清空buffer,強制騰出free的大小,可能只是把問題給暫時屏蔽了。

我覺得,排除內存不足的情況外,除非是在軟件開發階段,需要臨時清掉buffer,以判斷應用的內存使用情況;或應用已經不再提供支持,即使應用對內存的時候確實有問題,而且無法避免的情況下,才考慮定時清空buffer。(可惜,這樣的應用通常都是運行在老的操作系統版本上,上面的操作也解決不了)。而生產環境下的服務器可以不考慮手工釋放內存,這樣會帶來更多的問題。記住內存是拿來用的,不是拿來看的。

我們看linux,只要不用swap的交換空間,就不用擔心自己的內存太少。如果常常swap用很多,可能你就要考慮加物理內存了,這也是linux看內存是否夠用的標準.

總結

以上是生活随笔為你收集整理的Linux-手动释放linux内存cache的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。