If you occasionally find that your EC2 instance runs out of memory & you don’t wanna upgrade to a larger instance, consider adding swap space (a.k.a. paging) to it!
Paging works by creating an area on your hard drive & using it for extra memory. This is much slower than normal memory but a lot more of it is available.
To create swap, run these at a terminal:
sudo /bin/dd if=/dev/zero of=/var/swap bs=1M count=1024 sudo /sbin/mkswap /var/swap sudo chmod 600 /var/swap sudo /sbin/swapon /var/swap
That creates 1G swap. Increase the 1024 above to get more.
if is “input file”,
of is “output file”,
bs is “block size” &
count is the number of blocks you want to allocate. See
dd‘s man page here.
dd command says “copy from /dev/zero to /var/swap 1024 blocks of size 1 MB each”. It’s a quick way to create a 1 GB file full of zeroes.
To auto-enable swap on reboot, add this to /etc/fstab:
/var/swap swap swap defaults 0 0
free -m or
cat /proc/meminfo to see if the swap is active.
Swap space should be placed on ephemeral instance storage disk, not on an EBS volume. Swapping causes a lot of I/O & will increase EBS cost (only for provisioned IOPS volumes). EBS is also slower than instance store, introduces more latency & comes free with certain types of EC2 Instances.
To create swap on instance store:
sudo mount /dev/xvda2 /mnt sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096 sudo chown root:root /mnt/swapfile sudo chmod 600 /mnt/swapfile sudo mkswap /mnt/swapfile sudo swapon /mnt/swapfile sudo swapon -a
And in fstab:
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2 /mnt/swapfile swap swap defaults 0 0
Also see Instance store swap volumes & How do I allocate memory to work as swap space in an Amazon EC2 instance by using a swap file?.