當前位置:湖南陽光電子技術學校文章資訊顯示器維修

湖南陽光電子技術學校 簡介

學校地址:湖南省 長沙市 雨花區 車站南路紅花坡路口
來校路線:長沙火車站售票廳后坪,乘135路公交車到“紅花坡站”,即到.
學校電話:13807313137,13308461099
免費電話:13807313137
值班手機:(0)13807313137 楊老師
開課時間:我校常年面向全國招生,月月開班。每月1號,16號開學。
招生范圍:凡年滿15歲的公民,不限年齡,性別,地區。都歡迎來我校學習。
食宿問題:學校免費住宿,免費提供床上用品。食堂就餐,費用自理,約12元/天。
學校官網:www.hnygpx.net www.410014.com
專業介紹:歡迎查看我校專業課程!
收費標準:歡迎查看我校收費標準!
在線 Q Q:您想咨詢招生情況,請聯系我啊·您想咨詢招生情況,請聯系我啊
網上報名:歡迎您報讀湖南陽光電子學校!


在Linux服務器上手工釋放內存

減小字體 增大字體 作者:佚名  來源:本站整理  發布時間:2011-05-03 11:40:34

  總有很多朋友對于Linux的內存管理有疑問,之前一篇linux下的內存管理方式似乎也沒能清除大家的疑慮。而在新版核心中,似乎對這個問題提供了新的解決方法,特轉出來給大家參考一下。 后,還附上我對這方法的意見,歡迎各位一同討論。

  當在Linux下頻繁存取文件后,物理內存會很快被用光,當程序結束后,內存不會被正常釋放,而是一直作為caching。這個問題,貌似有不少人在問,不過都沒有看到有什么很好解決的辦法。那么我來談談這個問題。

  一、通常情況

  先來說說free命令:

  # free -m

  total used free shared buffers cached

  Mem: 249 163 86 0 10 94

  -/+ buffers/cache: 58 191

  Swap: 511 0 511

  其中:

  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

  有了這個基礎后,可以得知,我現在used為163MB,free為86MB,buffer和cached分別為10MB,94MB。

  那么我們來看看,如果我執行復制文件,內存會發生什么變化.

  # cp -r /etc ~/test/

  # free -m

  total used free shared buffers cached

  Mem: 249 244 4 0 8 174

  -/+ buffers/cache: 62 187

  Swap: 511 0 511

  在我命令執行結束后,used為244MB,free為4MB,buffers為8MB,cached為174MB,天吶,都被cached吃掉了。別緊張,這是為了提高文件讀取效率的做法。

  為了提高磁盤存取效率,Linux做了一些精心的設計,除了對dentry進行緩存(用于VFS,加速文件路徑名到inode的轉換),還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。

  那么有人說過段時間,linux會自動釋放掉所用的內存。等待一段時間后,我們使用free再來試試,看看是否有釋放?

  # free -m

  total used free shared buffers cached

  Mem: 249 244 5 0 8 174

  -/+ buffers/cache: 61 188

  Swap: 511 0 511

  似乎沒有任何變化。(實際情況下,內存的管理還與Swap有關)

  那么我能否手動釋放掉這些內存呢?回答是可以的!

  二、手動釋放緩存

  /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

  # free -m

  total used free shared buffers cached

  Mem: 249 66 182 0 0 11

  -/+ buffers/cache: 55 194

  Swap: 511 0 511

  再來運行free命令,會發現現在的used為66MB,free為182MB,buffers為0MB,cached為11MB。那么有效的釋放了buffer和cache。

  ◎ 有關/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.

  三、我的意見

  上述文章就長期以來很多用戶對Linux內存管理方面的疑問,給出了一個比較“直觀”的回復,我更覺得有點像是核心開發小組的妥協。

  對于是否需要使用這個值,或向用戶提及這個值,我是有保留意見的:

  1、從man可以看到,這值從2.6.16以后的核心版本才提供,也就是老版的操作系統,如紅旗DC 5.0、RHEL 4.x之前的版本都沒有;

  2、若對于系統內存是否夠用的觀察,我還是原意去看swap的使用率和si/so兩個值的大小;

  用戶常見的疑問是,為什么free這么小,是否關閉應用后內存沒有釋放?

  但實際上,我們都知道這是因為Linux對內存的管理與Windows不同,free小并不是說內存不夠用了,應該看的是free的第二行 后一個值:

  -/+ buffers/cache: 58 191

  這才是系統可用的內存大小。

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

  相反,如果在這個時候,我們告訴用戶,修改系統的一個值,“可以”釋放內存,free就大了。用戶會怎么想?不會覺得操作系統“有問題”嗎?

  所以說,我覺得既然核心是可以快速清空buffer或cache,也不難做到(這從上面的操作中可以明顯看到),但核心并沒有這樣做(默認值是0),我們就不應該隨便去改變它。

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

Tags:Linux 服務器上手工釋放內存

作者:佚名

網頁說明

    在Linux服務器上手工釋放內存這條信息,為您提供了中國 新 全的在Linux服務器上手工釋放內存信息,歡迎您免費查看在Linux服務器上手工釋放內存信息。如果您對在Linux服務器上手工釋放內存這條消息有好的意見建議請聯系我們,讓我們一起進步!
  • 熱門關鍵詞:CPU(355)  維修(198)  彩電(172)  故障(143)  招生(109)  職業中專(105)  技工學校(104)  電腦(98)  機芯(93)  開縣(91)  學校(88)  手機(87)  首選(65)  培訓(65)  筆記本(60)  云陽(58)  學主板維修哪里 好(50)  學電腦硬件哪里 好(50)  檢修(50)  MTK(43)  海爾(42)  東芝(40)  三極管(38)  硬盤(36)  模式(36)  三星(35)  液晶電視(35)  Vista(33)  工廠(33)  TCL(32)  Windows(31)  技術(31)  北京(30)  電子元件(30)  彩色(29)  BIOS(27)  電路(27)  開機(26)  win7(25)  電磁爐(25)