가끔 굉장히 가벼운 작업을 하는데도, CPU 사용률이 현저히 낮음에도 loadavg가 미친듯이 높아지는 경우가 있다. 보통은 메모리가 없어서 스왑을 과도하게 사용하거나, 아니면 정말 말그대로 디스크 I/O가 과부하된 경우를 많이 봤다.
이번에는 특이하게도 Azure의 Linux VM에 아예 스왑이 잡혀있지 않았다. 따라서 swap을 만들고 삭제하는 방법을 적어둔다.
Check / Adjust the swappiness value
우선, 시스템 설정에 swap을 사용하도록 되어 있는지 확인한다.
sysctl vm.swappiness
Code language: CSS (css)
이때, 60이 기본값인데 만약 0으로 설정되어 있다면 스왑을 전혀 사용하지 않는 것으로 교정이 필요하다. 즉시 변경사항을 적용하는 방법으로는:
sysctl vm.swappiness=60
또한 영구적으로 변경하는 방법은 /etc/sysctl.conf에 아래와 같은 내용을 추가해야 한다.
vm.swappiness=60
Check if there’s a swap exists
하지만 swappiness 설정은 문제가 없었다. 그렇다면 스왑이 애초에 있긴 한 것일까? 이것을 확인하는 방법은 free -m이나 top 혹은 swapon –show 등의 명령어로 swap의 존재여부를 확인할 수 있다. free -m에서는 swap이 보이지 않고, top에서는 swap의 용량이 없고, swapon –show에서는 아무것도 보여주지 않는다면 스왑이 없는 것이다.
Create swap
없다면, 만들어야 한다. 예시는 1G의 swap을 만들도록 했다.
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
이후 /etc/fstab에 아래와 같이 추가한다.
/swapfile swap swap defaults 0 0
Remove swap
swapoff -v /swapfile
이후 /etc/fstab에서 위에 추가해두었던 내용을 삭제하고, /swapfile을 삭제해 주면 끝난다.
Leave a Reply