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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux内存管理机制研究

發布時間:2024/1/17 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内存管理机制研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux內存管理機制研究
查看linux系統中處于free狀態的內存有兩個角度,一個是從內核的角度來看,一個是從應用層的角度來看的。 1.從內核的角度來看free的內存,就是內核目前可以直接分配到,不需要額外的操作,這個free值是不包括系統中處于buffer和cache狀態的內存;但是在內核需要時,或在系統運行逐步推進時,buffer和cache狀態的內存可以變為free狀態的內存。 2.從應用層的角度來看系統處于free狀態的內存,這個值是包括處于buffer和cache的,所以應用層分配內存時,可以直接從buffer和cache中拿。
IXDBA.NET社區論壇 linux系統之所以提高這種機制,是因為把內存都置為free狀態,還不如把最近使用過的內存緩存起來(如從磁盤中讀取的數據),這樣再次需要這些數據時可以直接從內存中取,而不需要有一個漫長的磁盤操作,這樣可以提高系統的整體性能。因為free狀態的內存中的內容是不可用的,與其閑置還不如發揮它們的作用。而在系統需要時,又可以快速的從這些可釋放的內存中分配,我想這種機制是非常好的。
下面我們來看看free命令的結果: total?????? used?????? free???? shared??? buffers???? cached
Mem:?????????? 500??????? 355??????? 145????????? 0????????? 67??????????? 249
-/+ buffers/cache:?????? 38???????? 462
Swap:????????? 996????????? 1??????? 994 在這個結果中的第一行是從內核角度來看系統內存使用狀態的,可以看到free的內存只有145M;
第二行是從應用層的角度來看系統內存的使用狀況,可以看到free的內存有462M; 你有沒有看到462這個值的妙處呢????462 := 145 + 249 + 67 實例二:在Linux下查看內存我們一般用command free;
[root@nonamelinux ]# free
total???? used??? free? shared?? buffers??? cached;
Mem:?????? 386024?? 377116?? 8908??? 0?????? 21280????? 155468;
-/+ buffers/cache:? 200368? 185656;
Swap:????? 393552???? 0???? 393552; 下面是對這些數值的解釋:
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。 如上例:
185656=8908+21280+155468
接下來解釋什么時候內存會被交換,以及按什么方交換。 當可用內存少于額定值的時候,就會開會進行交換。 如何看額定值(RHEL4.0):
#cat /proc/meminfo 交換將通過三個途徑來減少系統中使用的物理頁面的個數: 
1.減少緩沖與頁面cache的大小,
2.將系統V類型的內存頁面交換出去, 
3.換出或者丟棄頁面。(Application 占用的內存頁,也就是物理內存不足)。 事實上,少量地使用swap是不會影響到系統性能的。 下面是buffers與cached的區別。 buffers是指用來給塊設備做的緩沖大小,他只記錄文件系統的metadata以及 tracking in-flight pages. cached是用來給文件做緩沖。
那就是說:buffers是用來存儲,目錄里面有什么內容,權限等等。而cached直接用來記憶我們打開的文件,如果你想知道他是不是真的生效,你可以試一下,先后執行兩次命令#man X ,你就可以明顯的感覺到第二次的開打的速度快很多。 實驗:在一臺沒有什么應用的機器上做會看得比較明顯。記得實驗只能做一次,如果想多做請換一個文件名。
#free
#man X
#free
#man X
#free 你可以先后比較一下free后顯示buffers的大小。 另一個實驗:
#free
#ls /dev
#free 你比較一下兩個的大小,當然這個buffers隨時都在增加,但你有ls過的話,增加的速度會變得快,這個就是buffers/chached的區別。 實例三:
linux 優先使用物理內存,當物理內存還有空閑時,linux是不會施放內存的,即時占用內存的程序已經被關閉了(這部分內存就用來做緩存了)。也就是說,即時你有2G的內存,用過一段時間后,也會被占滿。這樣做的好處是,啟動那些剛開啟過的程序、或是讀取剛存取過得數據會比較快,對于服務器很有好處。 你可以用 free 指令查看一下輸出,用 used 減去 buffer 和 cache,才是你運行中的程序所占用的空間,這是我的輸出:
total???? used????? free??? shared?? buffers??? cached
Mem:?? 516300?? 504264? 12036???? 0?????? 88396??? 236792
-/+ buffers/cache: 179076 337224
Swap: 1544184 21276 1522908 504264 - 88396 - 236792 = 179076
也就是說目前正在被使用的內存只有 179 兆。不要被 504兆的used嚇住了。 windows則總是給內存留下一定的空閑空間,即時內存有空閑也會讓程序使用一些虛擬內存,這樣做的好處是,啟動新的程序比較快,直接分給它些空閑內存就可以了,而linux下呢?由于內存經常處于全部被使用的狀態,則要先清理出一塊內存,再分配給新的程序使用,因此,新程序的啟動會慢一些。 另外,內存是隨機訪問的,也就是說,無論你的內存占用了多少,數據的存取時間都是相同的,跟硬盤不同

轉載于:https://blog.51cto.com/johnny86/159682

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Linux内存管理机制研究的全部內容,希望文章能夠幫你解決所遇到的問題。

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