컴퓨터, 노트북 등 전자기기를 살 때 최소 8GB RAM은 사야된다던가, 게임을 좀 하려면 16GB RAM은 사야한다는 말은 아마 흔히들 들어봤을 말이다(5년 전에는 그랬는데 요즘은 32GB는 기본으로 사는 듯 하다 ㅎㅎ.. 세월 빠르다).
위의 이미지에서 확인할 수 있는 것 처럼 보통 노트북을 살 때 성능을 중요시하면 우선 CPU, 메모리, SSD을 확인한 뒤 용도에 따라 무게를, 취향에 따라 제조사와 운영체제를 고려한다.
1) 메모리가 중요한 이유
메모리는 시스템의 성능에 중요한 역할을 한다. 왜 중요할까? 프로그램이 실행되는 과정을 생각해보면 알 수 있다. 시스템에서 프로그램은 메모리에 올라간 후에 CPU에 의해 실행된다. 저장장치인 SSD나 HDD에 아무리 많은 프로그램이 저장되어있어도 메모리에 로드되어 프로세스가 되지않으면 실행될 수 없다.
2) 가상메모리와 페이징
하지만 물리 메모리인 RAM은 비싸다. 그뿐만 아니라 무한정으로 확장할 수도 없다. 그래서 사용하는 방법이 가상 메모리다.
가상메모리는 '물리 메모리 + 스왑'이다. 스왑은 디스크 장치에 생성되는 영역으로, 물리메모리처럼 사용할 수 있다. 물론 CU가 스왑 영역에 있는 데이터를 물리 메모리처럼 직접 접근해서 읽을 수 있는 것은 아니고, 프로세스가 스왑 영역에 존재한다면 스왑 영역의 데이터를 물리 메모리 영역으로 이동시키게 된다. 반대로 물리 메모리 영역에 위치한 프로세스의 우선순위가 낮거나 당분간 사용하지 않을 경우 다른 프로세스를 위해 이를 스왑 영역으로 이동시키기도 한다. 이러한 작업을 페이지 인(Paged-in)과 페이지 아웃(Paged-out)이라고 하고 이를 통틀어 페이징(Paging)이라고 한다.
물론 이 페이징 작업 때문에 입출력이 많이 발생해서 성능이 저하되기 때문에 물리 메모리를 늘릴 수 있다면 늘리는게 좋다. 디스크 입출력이 성능을 저하시키니 디스크 입출력이 많은 시스템은 스왑 영역을 최소화하고, 입출력이 적은 시스템은 스왑 영역을 물리 메모리 영역의 두 배 이상으로 설정하기도 한다.
페이징을 하는 방식이 모두 같은건 아니고 다양한 페이징 알고리즘이 존재한다. OPT, FIFO, LRU 등 다양하다.
3) 스왑 영역을 구성하는 방법
(1) 스왑 파티션
파티션 전체가 스왑으로 동작하게 하는 방법으로 파일시스템의 개입이 없어 성능저하가 일어나지 않는다는 장점이 있다. 스왑 영역으로 사용할 전용 파티션 확보가 필요하다는 단점이 있다.
# 스왑 영역 확인
swapon -s
free -f
# 스왑 파티션 생성
fdisk /dev/<disk-name>
partprobe /dev/<disk-name>
# 스왑 영역 생성
file -s /dev/<disk-name>
mkswap /dev/<disk-name>
- swapon: 스왑 영역의 활성화와 스왑 영역 확인
- free: 물리메모리의 크기, 사용량, 스왑 영역의 사용량 확인
- fdisk: 파티션 장치 생성
- partprobe: 변경된 파티션 테이블을 운영체제에 알림
- file: 스왑 영역 생성 전의 파티션 장치 확인
- mkswap: 스왑 영역 생성
(2) 스왑 파일
파일시스템 내에 파일을 생성해 스왑 영역으로 사용하는 방식으로 성능저하가 발생할 수 있다는 단점이 있다. 디스크 파티셔닝의 필요 없이 기존 저장 공간을 스왑 영역으로 사용할 수 있다는 장점이 있다.
스왑 파티션에 비해 성능 저하가 발생하는 건, 스왑 파일을 생성하기 위해 파일시스템이 필요하기 때문이다. 파일시스템은 디스크에서 연속된 공간을 할당받지 못 할 수도 있어서 성능이 저하된다(파티션은 기본적으로 연속된 공간에 위치함).
df -h
mkdir /<swap-dir>
dd if=/dev/zero of=/<swap-dir>/<swap-file> bs=<size-of-block> count=<copy-count>
file -s /<swap-dir>/<swap-file>
mkswap /<swap-dir>/<swap-file>
- df: 파일시스템 내 여유 공간 확인
- mkdir: 스왑 파일을 생성할 디렉토리 생성
- dd: 스왑 파일 생성(if: 복사할 파일, of: 생성될 파일, bs: 복사할 때 사용할 블록의 크기(byte), count: 복사할 횟수)
(3) 스왑 영역 활성화/해제
스왑 파티션으로 생성한 스왑 영역이나 스왑 파일로 생성한 스왑 영역이나 시스템에서 사용될 수 있도록 활성화해야 한다.
# 파티션 활성화
swapon [option] /dev/<disk-name>
# 파일 활성화
swapon [option] /dev/<swap-dir>/<swap-file>
chmod 600 /<swap-dir>/<swap-file>
# 활성화 해제
swapoff [option] {partition|file-name|UUID}
파티션은 활성화만 시켜줘도 되지만, 파일은 활성화 할 때 권한에 대한 경고가 출력된다. 이는 일반 사용자가 스왑 파일에 접근하면 문제가 발생할 수도 있기 때문이다. 따라서 파일의 소유를 루트 사용자에게만 주고, 소유자에게만 rw 권한을 주는게 권장되고 있다.
'DevOps > Linux' 카테고리의 다른 글
[Linux]CentOS 7, CentOS 8 컨테이너 관리 도구(Docker, Podman) (0) | 2021.05.26 |
---|---|
[Linux]디스크 관리 中 파일시스템 (0) | 2021.05.23 |
[Linux]디스크 관리 上 디스크 인식, 파티셔닝 (0) | 2021.05.13 |
[Linux]리눅스 작업 스케줄링(at, crontab) (0) | 2021.05.11 |
[Linux]우분투에 파이참 설치하고 바로가기 만들기 (0) | 2021.05.10 |