1. 程式人生 > >linux的虛擬記憶體swap分割槽的使用和配置

linux的虛擬記憶體swap分割槽的使用和配置

 Swap空間的作用可簡單描述為:當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來,以供當前執行的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時儲存到Swap空間中,等到那些程式要執行時,再從Swap中恢復儲存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時,才進行Swap交換。 1.使用   1)linux下程式可以使用的記憶體大小     一臺只有實體記憶體256MB,只要硬碟足夠大,並且是cpu定址夠大,理論上64位的機器可以使用到2^64B大小的"記憶體",只要修改系統的swap分割槽就可以實現。   2)雖然程式可以使用超過實體記憶體大小的記憶體空間,但是一旦使用到swap分割槽的話,程式的效能就會急劇下降,因為swap分割槽是使用硬碟空間,硬碟的讀寫速度最快也就200MBps,跟不上記憶體的GB級別的速度。不過還是得分情況,若是熱的資料會一直儲存在記憶體裡,因此當程式訪問到熱資料時,效能不會下降(相對於完全記憶體的程式),若是訪問到冷的資料時,系統會把冷資料和記憶體中熱資料進行交換,這樣冷資料就會保留在記憶體中,因此訪問冷資料時,第一次時響應時間比較慢,而第二次卻比較快,到第n次時都比較快。但是一旦資料被交換到swap分割槽時,再訪問它時效能就會下降。   3)c裡的malloc函式的返回值為NULL的判斷基本上沒有什麼用,我在程式里加了判斷沒有起到作用,因為當swap分割槽也被程式使用完畢後,linux系統會自我保護,把程式kill掉。因此沒有出現malloc為null的情況。 以上觀點是我從測試程式記憶體使用情況測試過程中得出的。 2.修改swap分割槽的大小
  1. #一、檢視系統當前的分割槽情況:
  2. free -m
  3. #二、建立用於交換分割槽的檔案:
  4. dd if=/dev/zero of=/Application/swap bs=4096 count=1572864
  5. #三、設定交換分割槽檔案:
  6. mkswap /Application/swap
  7. #四、立即啟用交換分割槽檔案:
  8. swapon /Application/swap
  9. #五、若要想使開機時自啟用,則需修改檔案/etc/fstab中的swap行:
  10. echo "LABEL=SWAP-sda /Application/swap swap swap defaults 0 0" >> /etc/fstab
  11. #六、刪除swap:
  12. swapoff /Application/swap
  13. rm -f /Application/swap
  14. #七、從fstab移除
  15. vi /etc/fstab
  16. 刪除對應的行