那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時儲存到Swap空間中,等到那些程式要運行時,再從Swap中恢複儲存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時,才進行Swap交換。 其實,Swap的調整對Linux伺服器,特別是Web伺服器的效能至關重要。通過調整Swap,有時可以越過系統效能瓶頸,節省系統升級費用。SWAP是Linux中的虛擬記憶體,用於擴充實體記憶體不足而用來儲存臨時資料存在的。它類似於Windows中的虛擬記憶體。在Windows中,只可以使用檔案來當作虛擬記憶體。而linux可以檔案或者分區來當作虛擬記憶體。
首先查看當前的記憶體和swap 空間大小(預設單位為k, -m 單位為M):
free -m
此處可以看到總記憶體是503M,SWAP不存在。
查看swap資訊,包括檔案和分區的詳細資料
# swapon -s或者
# cat /proc/swaps如果都沒有,我們就需要手動添加交換分區。注意,OPENVZ架構的VPS是不支援手動添加交換分區的。
添加交換空間有兩種選擇:添加一個交換分區或添加一個分頁檔。推薦你添加一個交換分區;不過,若你沒有多少空閑空間可用, 則添加分頁檔。
一、增加swap分頁檔
1、使用dd命令建立一個swap分頁檔
dd if=/dev/zero of=/home/swap bs=1024 count=1024000這樣就建立一個/home/swap的分區檔案,大小為1G。
2、製作為swap格式檔案:
mkswap /home/swap3、再用swapon命令把這個檔案分區掛載swap分區
/sbin/swapon /home/swap我們用free -m命令看一下,發現已經有交換分區了。
但是重啟系統後,swap分區又變成0了。
4、為防止重啟後swap分區變成0,要修改/etc/fstab檔案
vi /etc/fstab在檔案末尾(最後一行)加上
/home/swap swap swap default 0 0這樣就算重啟系統,swap分區還是有值。
刪除swap分頁檔
1、先停止swap分區
/sbin/swapoff /home/swap2、刪除swap分區檔案
rm -rf /home/swap3、刪除自動掛載配置命令
vi /etc/fstab這行刪除
/home/swap swap swap default 0 0這樣就能把手動增加的分頁檔刪除了。
注意:
1、增加刪除swap的操作只能使用root使用者來操作。
2、裝系統時分配的swap分區貌似刪除不了。
3、swap分區一般為記憶體的2倍,但最大不超過2G
二、使用分區來做SWAP(虛擬記憶體).
1 使用fdisk來建立交換分區(假設 /dev/sdb2 是建立的交換分區)
2 使用 mkswap 命令來設定交換分區:
# mkswap /dev/sdb23 啟用交換分區:
# swapon /dev/sdb24 寫入/etc/fstab,以便在引導時啟用:
/dev/sdb2 swap swap defaults 0 0刪除交換分區
步驟如下:
1、先停止swap分區
/sbin/swapoff /dev/sdb22、刪除自動掛載配置命令
vi /etc/fstab這行刪除
/dev/sdb2 swap swap defaults 0 0這樣就能把手動增加的交換分區刪除了。
總結
其實可以認為,程式使用的記憶體,都是用的虛擬記憶體,因此也就沒有了實體記憶體的限制(但還是限制於電腦的定址位元,比如32位和64位,因為虛擬記憶體系統需要使用到實體記憶體)。他可以把自己的一部分放在實體記憶體中,還有一部分當做緩衝放到磁碟中。另外,虛擬記憶體有相應的虛擬位址,因此,他就可以做到對於每一個程式來說,使用的都是相同的虛擬位址,這些虛擬位址,則可以映射到不同的物理地址,也就是說每個程式都可以把自己想象成自己擁有整台機器的記憶體。