2013年11月26日 星期二

linux 使用swap memory

最近嘗試在aws ec2 上deploy 一個ror的project

但因為使用的是free trail instace所以memory很小,deploy的時候會噴cannot allocate memory

要切一塊disk空間作為swap memory以解決這個問題


首先先確認是否已經存在swap memory:

sudo swapon -s


如果沒有會顯示如下
Filename    Type  Size Used Priority


在確認沒有swap memory後檢查我們是否有足夠的硬碟空間,我們要做一塊512mb的swap memory所以要至少這麼多

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  3.5G  4.1G  47% /
udev            288M   12K  288M   1% /dev
tmpfs           119M  176K  118M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            296M     0  296M   0% /run/shm


開始建立swap memory

sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
sudo mkswap /swapfile
執行完會顯示
Setting up swapspace version 1, size = 262140 KiB
no label, UUID=xxxxxxxxxxxxxxxxxxxxxxxxxxx

接著使用這個空間
sudo swapon /swapfile

不過只是這樣重開機的話會失去效用,所以要把這塊swap memory加入fstab(file system table)中
sudo vim /etc/fstab

加入這行
 /swapfile       none    swap    sw      0       0 

記得把Swappiness設定為0, 這樣可以確保os只有在緊急的時候(例如不swap就噴out of memory)才做swap動作,增加效能

sudo su -
echo 0 > /proc/sys/vm/swappiness
exit



沒有留言:

張貼留言