Linux中Swap與Memory記憶體簡單介紹

2022-09-16 04:06:10 字數 1069 閱讀 3654

在詳細介紹swap之前,我們需要知道的是計算機對記憶體分為物理記憶體與虛擬記憶體(注意虛擬記憶體和虛擬位址空間的區別)。物理記憶體就是計算機的實際記憶體大小,由ram晶元組成的。虛擬記憶體則是虛擬出來的、使用磁碟代替記憶體。虛擬記憶體的出現,讓機器記憶體不夠的情況得到部分解決。當程式執行起來由作業系統做具體虛擬記憶體到物理記憶體的替換和載入(相應的頁與段的虛擬記憶體管理)。這裡的虛擬記憶體即所謂的swap

當使用者提交程式,然後產生程序,在機器上執行。機器會判斷當前物理記憶體是否還有空閒允許程序調入記憶體執行,如果有那麼則直接調入記憶體進行執行;如果沒有,那麼會根據優先順序選擇乙個程序掛起,把該程序交換到swap中等待,然後把新的程序調入到記憶體中執行。根據這種換入和換出,實現了記憶體的迴圈利用,讓使用者感覺不到記憶體的限制。從這也可以看出swap扮演了乙個非常重要的角色,就是暫存被換出的程序。記憶體與swap之間是按照記憶體頁為單位來交換資料的,一般linux中頁的大小設定為4kb。而記憶體與磁碟則是按照塊來交換資料的。

該引數可以從0-100進行設定。0就是最大限度使用記憶體,盡量不使用swap;100就是積極使用swap。這個具體的通過系統的演算法進行確定。

物理記憶體我們是無法更改的,所以swap的大小設定將會影響應用能否正常執行。那麼swap大小如何確定。根據centos官網介紹可以得出如下公式:m = amount of ram in gb, and s = amount of swap in gb, then if m < 2, s = m *2 else s = m + 2。而且其最小不應該小於32m(never less than 32 mb.)。

swap分割槽的數量對效能也有很大的影響。因為swap畢竟還是以磁碟來偽裝成記憶體,交換的操作是磁碟io的操作而不是記憶體的load與store操作。如果有多個swap交換區,每個swap會有一定的優先順序,該優先順序也可以調整。swap空間的分配會以輪流的方式操作於所有的swap,這樣會大大均衡io的負載,加快swap交換的速度。

swapon/swapoff swap-disk_name:啟動和關閉相應的swap_disk_name

swapon -s :可以檢視當期swap的使用情況,也可以通過 cat /proc/swaps命令檢視

LINUX中swap與windows中虛擬記憶體區別

很多朋友在安裝linux的時候會遇到乙個問題,那就是分割槽。其中就有乙個必須要分的區域swap,記憶體交換區域。這個區域的定義幾乎和windows的虛擬記憶體定義一致,都是為了保證在物理記憶體不夠用時,從硬碟中劃出乙個區域用來對記憶體進行補充。幾乎所有安裝linux的教程中都要求劃分這個區域,並且其...

Linux中的SWAP機制

在windows中,我們知道可以用虛擬記憶體來部分解決記憶體不足的問題,而在linux下,swap就是起到類似作用的乙個機制。當物理記憶體不足時,會將一部分磁碟內的儲存空間當作swap分割槽使用,以環節記憶體容量不足的問題。其基本操作有兩個,分別為swap out與swap in,前者時在系統發現記...

Linux中的SWAP機制

在windows中,我們知道可以用虛擬記憶體來部分解決記憶體不足的問題,而在linux下,swap就是起到類似作用的乙個機制。當物理記憶體不足時,會將一部分磁碟內的儲存空間當作swap分割槽使用,以環節記憶體容量不足的問題。其基本操作有兩個,分別為swap out與swap in,前者時在系統發現記...