ubuntu實體記憶體不足,磁碟空間轉換虛擬記憶體
- total used free shared buffers cached
- Mem: 1944 1801 143 0 557 706
- -/+ buffers/cache: 536 1407
- Swap: 255 7 248
也即記憶體為2G,虛擬記憶體為256M,這太小了尤其是編譯android原始碼的時候。因此將其增加到1G大小。具體步驟是:
1,新建/swap資料夾。然後cd進去,終端輸入:sudo dd if=/dev/zero of=swapfile bs=1024 count=1000000
[html] view plain copy print?- sudo dd if=/dev/zero of=swapfilebs=1024count=<spanstyle="font-size:18px;">1</span>000000
最後的count就是虛擬記憶體的大小,後面有6個0,前面是1,表示1G. 坑爹的文件http://www.hx95.com/Article/Tech/201205/55661.html後面只有5個0還說表示1G. 稍等約1分鐘看到如下資訊:
- 記錄了1000000+0 的讀入
- 記錄了1000000+0 的寫出
- 1024000000位元組(1.0 GB)已複製,27.2124 秒,37.6 MB/秒
2,這個時候在swap目錄下就生成了swapfile檔案。終端輸入:du -h swapfile 可以檢視生成的檔案swapfile大小為977M. [html] view plain copy print?
- [email protected]:/swap$ du -h swapfile
- 977M swapfile
接下來需要將swapfile轉換成Swap檔案,終端輸入:sudo mkswap -f swapfile (mkswap是命令,後面的swapfile是swap資料夾下新生成的檔名字)
- [email protected]:/swap$ sudo mkswap -f swapfile
- Setting up swapspace version 1, size = 999996 KiB
- no label, UUID=a1363520-df39-4cdf-9e99-198fdf1eb17c
3,啟用swap檔案
終端輸入:sudo swapon swapfile(swapon是命令,swapfile是檔案名字)
然後再輸入 free -m可以看到:
[html] view plain copy print?- [email protected]:/swap$ free -m
- total used free shared buffers cached
- Mem: 1944 1808 135 0 511 758
- -/+ buffers/cache: 538 1405
- Swap: 1232 7 1224
Swap的大小1232 = 255(原來的) + 977 (新增加的)
如果要修改或者刪除這個swapfile檔案,需要先解除安裝這個swapfile。進入到swap目錄,然後終端輸入:sudo sawpoff swapfile,這就解除安裝了。swapfile檔案就可以刪除了,否則會提示正在使用或忙 無法刪除。
如果要一直保持這個新增的swap,通過切換到root,gedit /etc/fstab,
在裡面增加一句:/swap/swapfile none swap defaults 0 0
。關於這句話,參考1的命令是/swap/swapfile
none swap defaults 0 0,參考2的命令/swap/swapfile
/swap swap defaults 0 0。個人覺的第二個引數表示原來系統的swap資料夾,如果原系統沒有swap資料夾,則用參考1裡的命令。如果原系統本來就有/swap檔案夾了,也即本來就有swap空間然後又新增加了一個,就用參考2的命令。
Ubuntu12.04上原本沒有/swap資料夾,因此用參考1的命令。
參考:1,http://blog.csdn.net/mznewfacer/article/details/7334592
2,http://www.linuxidc.com/Linux/2010-09/28915.htm
另外,注意上面新建swap使用後,現有swap是兩者之和。http://www.blogjava.net/zygcs/archive/2011/09/02/357845.html這裡的方法大同小異,只不過是先cd /host/ubuntu/disks/ 可以看到有個swap.disk, 利用du -h swap.disk檢視大小為255M,然後sudo swapoff swap.disk取消使用這個系統自帶的交換空間。然後刪除掉,通過以下步驟:
4.
sudo dd if=/dev/zero of=swap.disk bs=1M count=1k (建立1G的swap, 這步比較慢)
5. sudo mkswap -f swap.disk
6. sudo swapon /host/ubuntu/disks/swap.disk (這步更慢,大概1分鐘不到)
這是在/host/ubuntu/disks/目錄下建立的,名字為swap.disk. 本質是一樣的。 再就是建立swap時大小是bs*count,如果bs=1M 則count =1k表示1G,如果bs=1024, count=1000000 表示1G,我覺的前者更精確。
接下來是優化swap的使用引數,linux裡有個引數swappiness。當值為0時最大限度的使用實體記憶體,實體記憶體使用完後再使用swap記憶體。為100時,最大限度的使用swap,並將記憶體中的資料也要搬到swap裡處理,這是兩個極端。預設的引數是60,根據這裡將其改為10較優。步驟如下:
1,檢視當前的swappiness
終端輸入:cat
/proc/sys/vm/swappiness
2.修改swappiness值為10$ sudo sysctl vm.swappiness=10
但是這只是臨時性的修改,在你重啟系統後會恢復預設的60,所以,還要做一步:$ sudo gedit /etc/sysctl.conf
在這個文件的最後加上這樣一行:vm.swappiness=10
然後儲存,重啟。ok,你的設定就生效了。