linux內存交換
❶ linux內存機制(swap)
我們知道,直接從物理內存讀寫數據要比從硬碟讀寫數據要快的多,因此,我們希望所有數據的讀取和寫入都在內存完成,而內存是有限的,這樣就引出了物理內存與虛擬內存的概念。
物理內存就是系統硬體提供的內存大小,是真正的內存,相對於物理內存,在linux下還有一個虛擬內存的概念,虛擬內存就是為了滿足物理內存的不足而提出的策略,它是利用磁碟空間虛擬出的一塊邏輯內存,用作虛擬內存的磁碟空間被稱為交換空間(Swap Space)。
作為物理內存的擴展,linux會在物理內存不足時,使用交換分區的虛擬內存,更詳細的說,就是內核會將暫時不用的內存塊信息寫到交換空間,這樣以來,物理內存得到了釋放,這塊內存就可以用於其它目的,當需要用到原始的內容時,這些信息會被重新從交換空間讀入物理內存。
Linux的內存管理採取的是分頁存取機制,為了保證物理內存能得到充分的利用,內核會在適當的時候將物理內存中不經常使用的數據塊自動交換到虛擬內存中,而將經常使用的信息保留到物理內存。
要深入了解linux內存運行機制,需要知道下面提到的幾個方面:
Linux系統會不時的進行頁面交換操作,以保持盡可能多的空閑物理內存,即使並沒有什麼事情需要內存,Linux也會交換出暫時不用的內存頁面。這可以避免等待交換所需的時間。
Linux 進行頁面交換是有條件的,不是所有頁面在不用時都交換到虛擬內存,linux內核根據」最近最經常使用「演算法,僅僅將一些不經常使用的頁面文件交換到虛擬 內存,有時我們會看到這么一個現象:linux物理內存還有很多,但是交換空間也使用了很多。其實,這並不奇怪,例如,一個佔用很大內存的進程運行時,需 要耗費很多內存資源,此時就會有一些不常用頁面文件被交換到虛擬內存中,但後來這個佔用很多內存資源的進程結束並釋放了很多內存時,剛才被交換出去的頁面 文件並不會自動的交換進物理內存,除非有這個必要,那麼此刻系統物理內存就會空閑很多,同時交換空間也在被使用,就出現了剛才所說的現象了。關於這點,不 用擔心什麼,只要知道是怎麼一回事就可以了。
交換空間的頁面在使用時會首先被交換到物理內存,如果此時沒有足夠的物理內存來容納這些頁 面,它們又會被馬上交換出去,如此以來,虛擬內存中可能沒有足夠空間來存儲這些交換頁面,最終會導致linux出現假死機、服務異常等問題,linux雖 然可以在一段時間內自行恢復,但是恢復後的系統已經基本不可用了。
因此,合理規劃和設計Linux內存的使用,是非常重要的.
在Linux 操作系統中,當應用程序需要讀取文件中的數據時,操作系統先分配一些內存,將數據從磁碟讀入到這些內存中,然後再將數據分發給應用程序;當需要往文件中寫 數據時,操作系統先分配內存接收用戶數據,然後再將數據從內存寫到磁碟上。然而,如果有大量數據需要從磁碟讀取到內存或者由內存寫入磁碟時,系統的讀寫性 能就變得非常低下,因為無論是從磁碟讀數據,還是寫數據到磁碟,都是一個很消耗時間和資源的過程,在這種情況下,Linux引入了buffers和 cached機制。
buffers與cached都是內存操作,用來保存系統曾經打開過的文件以及文件屬性信息,這樣當操作系統需要讀取某些文件時,會首先在buffers 與cached內存區查找,如果找到,直接讀出傳送給應用程序,如果沒有找到需要數據,才從磁碟讀取,這就是操作系統的緩存機制,通過緩存,大大提高了操 作系統的性能。但buffers與cached緩沖的內容卻是不同的。
buffers是用來緩沖塊設備做的,它只記錄文件系統的元數據(metadata)以及 tracking in-flight pages,而cached是用來給文件做緩沖。更通俗一點說:buffers主要用來存放目錄裡面有什麼內容,文件的屬性以及許可權等等。而cached直接用來記憶我們打開過的文件和程序。
為了驗證我們的結論是否正確,可以通過vi打開一個非常大的文件,看看cached的變化,然後再次vi這個文件,感覺一下兩次打開的速度有何異同,是不是第二次打開的速度明顯快於第一次呢?接著執行下面的命令:
find / -name .conf 看看buffers的值是否變化,然後重復執行find命令,看看兩次顯示速度有何不同。
上面這個60代表物理內存在使用40%的時候才會使用swap(參考網路資料:當剩餘物理內存低於40%(40=100-60)時,開始使用交換空間) swappiness=0的時候表示最大限度使用物理內存,然後才是 swap空間,swappiness=100的時候表示積極的使用swap分區,並且把內存上的數據及時的搬運到swap空間裡面。
值越大表示越傾向於使用swap。可以設為0,這樣做並不會禁止對swap的使用,只是最大限度地降低了使用swap的可能性。
通常情況下:swap分區設置建議是內存的兩倍 (內存小於等於4G時),如果內存大於4G,swap只要比內存大就行。另外盡量的將swappiness調低,這樣系統的性能會更好。
B. 修改swappiness參數
永久性修改:
立即生效,重啟也可以生效。
一般系統是不會自動釋放內存的 關鍵的配置文件/proc/sys/vm/drop_caches。這個文件中記錄了緩存釋放的參數,默認值為0,也就是不釋放緩存。他的值可以為0~3之間的任意數字,代表著不同的含義:
0 – 不釋放 1 – 釋放頁緩存 2 – 釋放dentries和inodes 3 – 釋放所有緩存
前提:首先要保證內存剩餘要大於等於swap使用量,否則會宕機!根據內存機制,swap分區一旦釋放,所有存放在swap分區的文件都會轉存到物理內存上。通常通過重新掛載swap分區完成釋放swap。
a.查看當前swap分區掛載在哪?b.關停這個分區 c.查看狀態:d.查看swap分區是否關停,最下面一行顯示全 e.將swap掛載到/dev/sda5上 f.查看掛載是否成功
❷ linux中的交換分區是什麼意思
SWAP交換分區
我們如果沒有足夠的內存,也許就不能運行某些大型的軟體,解決的辦法是在硬碟上劃出一個區域來當作臨時的內存,好像內存變大了。Windows操作系統把這個區域叫做虛擬內存,Linux把它叫做交換分區swap。
另外,操作系統也可以把一些很久不活動的程序轉移到虛擬內存中去,留出更多的主內存給需要的程序和磁碟緩沖。
❸ 如何查看linux的物理內存和swap交換區大小
linux下更改swap大小方法:
以下操作需要root許可權,
#cd /usr/;mkdir swap
#dd if=/dev/zero of=swapfile bs=1G count=2
這條命令從硬碟里分出一個 2×1G 大小的空間,掛在swapfile上。
#mkswap swapfile
構建swap格式於/usr/swap/swapfile 上
#swapon swapfile
激活swapfile ,加入到swap分區中。
以上操作在重啟系統後swap空間將會失去swapfile ,將swapfile 加入到/etc/fstab
條目將可以使得系統在init進程中調用swapon -a 來自動掛載swapfile ,這樣每次機器重啟後swapfile
都處於有效的swap空間。
在/etc/fstab文件中加入下面這樣一行:
/usr/swap/swapfile swap swap defaults 0 0
❹ linux下16GB內存如何設置交換分區大小
目前Red Hat推薦交換分區的大小應當與系統物理內存的大小保持線性比例關系。不過在小於2GB物理內存的系統中,交換分區大小應該設置為內存大小的兩倍,如果內存大小多於2GB,交換分區大小應該是物理內存大小加上2GB。其原因在於,系統中的物理內存越大, 對於內存的負荷可能也越大。 實際上,系統中交換分區的大小並不取決於物理內存的量,而是取決於系統中內存的負荷。Red Hat Enterprise Linux 5可以在這樣的情況下工作:完全沒有交換分區,而且系統中匿名內存頁和共享內存頁小於3/4的物理內存量。在這種情況下,系統會將匿名內存頁和共享內存頁鎖定在物理內存中,而使用剩餘的物理內存來緩沖文件系統數據(pagecache),當內存耗盡時, 系統內核只會回收利用這些pagecache內存。 考慮到以下情況: 2)系統中物理內存越大,所需交換分區就會越少
❺ linux什麼情況就會使用到交換區swap,比如剩下多少內存,還有其他哪些因素
交換區可是看作是內存的一部分,只是它是從硬碟中劃分出來的。 它像windows下的虛擬內存。
它的作用是緩存數據。 劃分它時,大小設成你的物理內存的大小的兩倍。
當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。 其實,Swap的調整對Linux伺服器,特別是Web伺服器的性能至關重要。通過調整Swap,有時可以越過系統性能瓶頸,節省系統升級費用。
❻ linux內存交換速率過高
在linux中,內存使用是按照最大化原則來的,也就是說你的內存在滿足應用使用的情況下,剩餘部分會被當作高速緩存來使用。看你的內存夠不夠用關鍵看的是swap區的使用量,swap區使用量較小或者不使用則說明你的內存是足夠使用的,如果swap區不停的...
❼ linux 交換分區是什麼
linux交換分區即是linux的SWAP分區
SWAP就是LINUX下的虛擬內存分區,它的作用是在物理內存使用完之後,將磁碟空間(也就是SWAP分區)虛擬成內存來使用.
它和Windows系統的交換文件作用類似,但是它是一段連續的磁碟空間,並且對用戶不可見。
需要注意的是,雖然這個SWAP分區能夠作為"虛擬"的內存,但它的速度比物理內存可是慢多了,因此如果需要更快的速度的話,並不能寄厚望於SWAP,最好的辦法仍然是加大物理內存.SWAP分區只是臨時的解決辦法.
交換分區(swap)的合理值一般在內存的2 倍左右,可以適當加大。實際上具體還是以實際應用為准,swap為內存的2倍也不過是一種以訛傳訛的說法。如果交換分區的使用都超過4GB以上了,可想而知伺服器的性能應該差很多了。
Linux下可以創建兩種類型的交換空間,一種是swap分區,一種是swap文件。前者適合有空閑的分區可以使用,後者適合於沒有空的硬碟分區,硬碟的空間都已經分配完畢。
❽ linux編程系統中交換空間的使用情況
計算機的存儲空間問題相信大部分的管理員都有不同的處理方式。今天我們就一起來了解一下,在linux系統中,交換空間的具體使用情況是什麼。希望通過對本文的閱讀,大家對於linux系統有更多的了解,下面就開始今天的主要內容吧。
交換空間
交換空間是現代Linux系統中的二種內存類型。交換空間的主要功能是當全部的RAM被佔用並且需要更多內存時,用磁碟空間代替RAM內存。
例如,假設你有一個8GBRAM的計算機。如果你啟動的程序沒有填滿RAM,一切都好,不需要交換。假設你在處理電子表格,當添加更多的行時,你電子表格會增長,加上所有正在運行的程序,將會佔用全部的RAM。如果這時沒有可用的交換空間,你將不得不停止處理電子表格,直到關閉一些其他程序來釋放一些RAM。
內核使用一個內存管理程序來檢測近沒有使用的內存塊(內存頁)。內存管理程序將這些相對不經常使用的內存頁交換到硬碟上專門指定用於「分頁」或交換的特殊分區。這會釋放RAM,為輸入電子表格更多數據騰出了空間。那些換出到硬碟的內存頁面被內核的內存管理代碼跟蹤,如果需要,可以被分頁回RAM。
Linux計算機中的內存總量是RAM+交換分區,交換分區被稱為虛擬內存.
Linux交換分區類型
Linux提供了兩種類型的交換空間。默認情況下,大多數Linux在安裝時都會創建一個交換分區,但是也可以使用一個特殊配置的文件作為交換文件。電腦培訓http://www.kmbdqn.com/發現交換分區顧名思義就是一個標准磁碟分區,由mkswap命令指定交換空間。
如果沒有可用磁碟空間來創建新的交換分區,或者卷組中沒有空間為交換空間創建邏輯卷,則可以使用交換文件。這只是一個創建好並預分配指定大小的常規文件。然後運行mkswap命令將其配置為交換空間。除非絕對必要,否則我不建議使用文件來做交換空間。(LCTT譯註:Ubuntu近來的版本採用了交換文件而非交換空間,所以我對於這種說法保留看法)