Linux
CentOS
swap

起動時に Swap サイズを動的に変更する

CentOS でしか試していないけど、RHEL でも使えると思う。
CentOS7 以降は、rc.local に実行権を付与しないと動かないので注意。

/etc/rc.d/rc.local
SWAPFILENAME=/swapfile
MEMSIZE=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`

if [ $MEMSIZE -lt 2097152 ]; then
  SIZE=$((MEMSIZE * 2))
elif [ $MEMSIZE -lt 8388608 ]; then
  SIZE=${MEMSIZE}
elif [ $MEMSIZE -lt 67108864 ]; then
  SIZE=$((MEMSIZE / 2))
else
  SIZE=4194304
fi

if [ `df -T |awk '/ext/' |wc -l` -gt 0 ]; then
  # RHEL(CentOS)7 より前はこちらで
  fallocate -l $SIZE $SWAPFILENAME && chmod 600 $SWAPFILE && mkswap $SWAPFILENAME && swapon $SWAPFILENAME
else
  # RHEL(CentOS)7 以降はこちらで
  dd if=/dev/zero of=$SWAPFILENAME count=$SIZE bs=1K && chmod 600 $SWAPFILENAME && mkswap -c $SWAPFILENAME && swapon $SWAPFILENAME
fi