Swap 이해하기 (AWS EC2 : CPU 사용률 줄이기)

yoonddo·2024년 1월 12일
1

Linux

목록 보기
1/1
post-thumbnail

Swap을 알기 전에 CPU, RAM, 하드디스크의 개념을 먼저 알면 좋다.
컴퓨터는 크게 세가지로 이루어져 있는데 그게 바로 CPU, RAM, HARD DISK(SSD)이다.
이 세가지의 역할을 알면 컴퓨터의 원리를 이해할 수 있다.
이미 아는 내용이라면 Swap 바로가기 <-- click !

1. CPU(Central Processing Unit , 중앙 처리 장치)

◼ CPU는 고속 계산 장치로 사람의 뇌와 같은 역할을 한다.
◼ 덧셈, 뺄셈을 굉장히 빠른 속도로 하는 기계이다.
◼ 0과 1만 이해하는 이진법 계산만 할 수 있다.
◼ 보통 헤르츠(Hz)라는 단위로 표시하는데 이는 1초당 깜빡이는 횟수를 의미한다. Hz로 표시된 숫자로 1초에 몇 번 깜빡이는지 알 수 있다.

2. RAM(Random Access Memory, 램)

◼ RAM은 임시 기억 장치로 CPU가 하려는 값을 잠시 저장했다가 CPU에서 계산할 때 쓴다. 사람이 무언가를 외워야 할 때 종이 또는 핸드폰에 적는 것과 같이 컴퓨터가 할 일을 다른곳에 적는데 그게 바로 RAM이다.
◼ RAM을 사용하는 이유는 경제적 이유 때문이다. CPU는 만들기도 어렵고 가격이 비싸기 때문에 이 CPU를 효율적으로 사용하기 위해 만들어졌다.
◼ RAM의 큰 문제점은 전원을 끄면 저장된 것이 삭제된다는 점이다. 잠깐 밖에 기억하지 못하기 때문에 이를 해결하기 위해 나온 게 하드디스크이다.

3. HARD DISK(하드디스크, SSD)

◼ 하드 디스크는 영구 기억장치로, 한 번 저장된 데이터는 물리적 충격이 없는 이상 계속 보존된다. 우리가 어렸을 적 배운 언어, 기억을 까먹지 않는 뇌의 장기 기억과 비슷하다.
◼ 그렇다면 이 하드디스크가 있는데도 굳이 RAM을 사용하는 이유는 바로 속도 문제 때문이다. RAM에 비하면 속도가 매우 느리기 때문이다. CPU가 바로 하드디스크에서 데이터를 찾아야 한다면 컴퓨터를 켜는데만 1시간은 걸릴 것이다.

4. 세 가지(CPU, RAM, HARD DISK)의 연관성

HARD DISK DRIVE -> RAM Memory -> Chipset -> CPU

◼ 우리가 소프트웨어(프로그램)을 사용하려면 일단 하드 디스크에 저장되었는지 확인하고 디스크에 있는 데이터를 불러온다.
◼ 램에 소프트웨어를 올리고 동작 할 준비를 한다.
◼ 필요한 만큼 CPU에서 연산을 하며 소프트웨어를 동작시킨다.

5. 요약

CPU : 계산 장치, 뇌와 유사한 기능
RAM : 단기 기억 장치, 계산 결과를 잠시 기억
DISK : 장기 기억 장치

6. Swap 이란 ?

◼ 시스템 메모리가 부족할 때 하드 디스크의 일부 공간을 활용하여 계속 작업을 할 수 있도록 도와주는 영역으로 하드 디스크의 일부를 RAM처럼 사용할 수 있도록 교환(swap)하여 사용하는 것을 말한다.
◼ 스왑 공간은 소량의 RAM을 사용하여 시스템에 도움을 주지만 RAM의 대체로 생각해서는 안된다. 하드 드라이브 상에 위치하여 RAM에 접근하는 것 보다 속도가 느리다. 비상용 느낌으로 사용해야한다.

Swapping(스와핑)?

RAM이 부족할 때 우선 하드디스크 공간으로 이용하고 메모리가 다시 여유가 생겨 사용 가능해지면 하드디스크에서 메모리로 옮겨오는 것을 의미한다.
Swapping 사용 방식
swap 파티션 방식 : 나누어진 파티션 중 하나를 스와핑 영역으로 사용
swap 파일 방식 : 일반적인 파일 시스템에 존재하는 파일을 스와핑 영역으로 사용
◼ 두 개 다 같이 스왑 공간으로 사용하는 것도 가능하다. 리눅스 운영체제에서는 swap 파티션 생성을 권장하고 있지만 없이도 정상적으로 실행된다.
◼ swap 파티션 영역의 크기는 대부분 RAM 크기의 2배 또는 그 이상을 권장한다.
◼ swap은 특수한 목적을 위한 공간이기 때문에 스왑 공간을 위한 스왑 파일 시스템이 따로 존재한다.

Swap 사용하는 이유

◼ 실제 보유하고 있는 메모리보다 훨씬 많은 양의 메모리를 사용할 수 있다.
◼ DB 또는 오픈 소스 대용량 처리 어플의 경우 swap을 많이 활용한다. 이러한 경우를 제외하면 사용하지 않는 것이 좋다.

Swap 장단점

장점 : RAM이 가득 찼을 때 보조 공간 제공, RAM처럼 빠르지는 않지만 하드보다 빠른 속도, 더 많은 공간 사용 가능
단점 : swap 파티션은 크기를 유동성 있게 조절할 수 없기 때문에 하드디스크의 공간을 차지함, 상황에 따라 스왑 활용도에 따라 다르게 사용해야함


7. Swap 공간 늘리기

이렇게 컴퓨터의 구조와 Swap(스왑)에 대해 알아보았는데 이 정보들을 정리한 이유는 AWS로 배포한 프로젝트가 요즘들어 504 gateway-timeout 오류로 접속이 안되고 putty로 ssh 터미널에 접속도 안되는 문제가 발생해 인스턴스 모니터링을 해 보니 CPU 사용률이 거의 100%에 도달하고 있었기 때문이다.

비슷한 오류를 겪으신 분들의 블로그와 공식 홈페이지를 확인해보니 Swap 공간을 늘려주는 방법이 있었다.
EC2 프리티어는 RAM을 1GB만 사용할 수 있기 때문에 Swap 공간은 2GB로 잡으면 된다.

1) 기존 메모리 상태 확인

명령어 [free]를 입력해 메모리 상태를 확인한다.

위와 같이 Swap에 0이 할당된 것을 확인할 수 있다.

2) Swap 메모리 할당

다음 명령어를 입력한다.

sudo dd if=/dev/zero of=/swapfile bs=128M count=16

128씩 16개의 공간을 만드는 것이기 때문에 count 를 16으로 할당, 즉 2GB 정도를 차지하는 것이다.

3) Swap 파일에 대한 읽기 및 쓰기 권한 업데이트

다음 명령어를 입력한다.

sudo chmod 600 /swapfile

4) Linux 스왑 영역을 설정한다.

다음 명령어를 입력한다.

sudo mkswap /swapfile

5) 스왑 공간에 스왑 파일을 추가해 즉시 사용할 수 있도록 만든다.

다음 명령어를 입력한다.

sudo swapon /swapfile

확인 명령어를 입력한다.

sudo swapon -s

2GB 할당된 것과 스왑파일이 추가된 것을 확인할 수 있다.

6) 스왑 파일을 활성화 한다.

다음 명령어를 입력해 편집기에서 파일을 연다.

sudo vi /etc/fstab

정상적으로 파일이 열리면 파일 맨 끝에 다음 명령어를 입력하고 저장 및 종료한다.

/swapfile swap swap defaults 0 0

다음과 같이 스왑 공간이 할당된 걸 확인할 수 있다.

이렇게 설정을 한 뒤 잘 돌아가긴 하지만 주기적으로 확인을 해봐야 할 것 같다.

출처 : https://sundries-in-myidea.tistory.com/102
https://software-creator.tistory.com/1

profile
곰발이지만 개발 잘 하고싶다 🐻🐾

0개의 댓글

관련 채용 정보