리눅스는 물리적인 메모리, RAM(Random Access Memory)을 페이지(메모리 조각)로 나눕니다.
(리눅스에서 가용한 가상 메모리의 양은 RAM과 스왑 공간을 더한 것입니다)
만약 물리적인 메모리(RAM)의 용량이 가득 차게 될 경우,
시스템이 충돌하여 정지될 수 있으므로
스와핑을 발생시켜 프로그램이 문제 없이 가동하도록 합니다.
스왑 공간을 확보하는 방법
https://ride-dev.tistory.com/9
1. 스왑 공간(Swap Space)이란?
리눅스에서 물리적 메모리(RAM)의 용량이 가득 차게 될 경우 사용되는 여유 공간입니다.
2. 스와핑(Swapping)이란?
메모리 페이지를 하드 디스크의 스왑 공간에 복사하여, 해당 페이지의 메모리를 해제하는 프로세스입니다.
(메모리를 교체하는 것으로 볼 수도 있습니다)
1. 스와핑의 중요성
시스템이 물리적으로 사용 가능한 메모리보다 더 많은 메모리가 필요할 때,
커널은 덜 사용되는 페이지(메모리 조각)을 스왑 아웃하고,
메모리를 즉시 필요로 하는 현재 응용 프로그램(프로세스)에 스왑 인(메모리를 제공)합니다.
응용 프로그램이 시작 단계에서 사용하는 페이지 중 상당수는 초기화를 위해 사용되고,
나중에는 더 이상 사용되지 않을 수 있습니다.
시스템은 이러한 페이지(메모리 조각)를
스와핑을 통해, 다른 응용 프로그램 또는 디스크 캐시를 위해 해제할 수 있습니다.
2. 스와핑의 단점
메모리에 비해 디스크는 매우 느립니다.
메모리 속도는 나노초로 측정될 수 있지만, 디스크는 밀리초로 측정됩니다.
따라서 디스크에 접근하는 것은 물리적 메모리에 접근하는 것보다 수만 배 느립니다.
스와핑이 많이 발생하면 시스템이 느려집니다.
때로는 페이지가 스왑 아웃되고 곧바로 스왑인 되고 다시 스왑 아웃되는 등
과도한 스와핑 또는 thrashing이 발생할 수 있습니다.
이런 상황에서 시스템은 free 메모리를 찾아내고 응용 프로그램을 동시에 실행시키기 위해 노력합니다.
이러한 문제가 발생하면, RAM을 추가해야만 합니다.
리눅스에는 두가지 형태의 스왑공간이 있습니다.
스왑 파티션과 스왑 파일입니다.
- 스왑 파티션(Swap Partition)
스왑 파티션은 스왑에만 사용되는 독립적인 하드 디스크 세션입니다. 다른 파일은 거기에 저장할 수 없습니다.
시스템 부팅 시에 자동으로 활성화 되며 물리적인 파티션으로 설정되어 있어야 합니다. - 스왑 파일(Swap File)
스왑 파일은 파일 시스템에 속하는 특수한 파일로, 시스템 및 데이터 파일과 함께 존재합니다.
스왑 파일은 추가적인 스왑 공간을 위해
빈 파티션을 찾거나, 디스크를 파티션화(스왑 파티션으로)할 필요가 없습니다.
필요할 때 생성하고, 필요를 다하면 삭제할 수 있습니다.
스왑 파티션은 하드 디스크의 일부를 스왑 공간으로 사용합니다.
스왑 파일은 파일 시스템 내에서 생성되는 파일로 스왑 공간을 유연하게 사용합니다.
3. 스왑 공간은 얼마나 커야할까?
리눅스 시스템은 메모리가 충분하다면 스왑 공간 없이도 잘 동작합니다.
그러나 물리적 메모리가 부족한 경우, 시스템이 충돌할 수 있으므로 스왑공간을 가질 것을 권장합니다.
특히 디스크 공간이 상대적으로 저렴하기 때문에 더 그렇습니다.
(저렴합니다 = 비용 효율적이며 쉽습니다)
스왑 공간 관리는 시스템 관리의 중요한 측면입니다.
RAM이 1GB 미만인 경우, 스왑 공간은 최소 RAM과 동일해야 합니다.
또한 아무리 스왑공간이 많아도, 전부 활용하지 못할 수 있습니다.
(스왑공간이 너무 많아도 비효율적입니다)
시스템에 사용할 수 있는 하드 디스크 공간 크기에 따라, RAM크기의 최대 2배가 권장됩니다.
권장용량
RAM 용량(GB) | 권장 용량 | ||
2GB 이하 | 2배 | ||
2 ~ 8 GB | 1배 | ||
8 ~ 64 GB | 4GB ~ RAM 용량의 1/2 배 | ||
64GB ~ | 최소 4GB | ||
(EC2에서 1GB의 RAM을 사용중이라면 최소1~2GB의 스왑공간이 있는 것이 좋습니다)
스왑공간을 크게 만들면 시스템이 메모리 부족 상황에서 대처할 수 있게 되지만,
그만큼 디스크 공간을 차지하게 됩니다.
디스크 공간은 파일 저장 등 다른 작업에도 필요하기 때문에
스왑공간으로 디스크 공간을 과도하게 할당하는 것은 좋지 않습니다.
따라서 적절한 균형을 찾아야 합니다.
메모리 부족 상황을 다루기 위한 충분한 스왑 공간을 두되,
과도하게 스왑공간을 만들지 않고 디스크 공간을 다른 용도에 활용할 수 있도록 하는 것이 좋습니다.
4. 참조
권장 스왑 공간 용량스왑 파티션:
스왑이란?(우분투): https://help.ubuntu.com/community/SwapFaq#How_much_swap_do_I_need.3F
스왑공간이란?(리눅스): https://www.linux.com/news/all-about-linux-swap-space/
스왑 파티션: https://repost.aws/ko/knowledge-center/ec2-memory-partition-hard-drive
권장 스왑 공간 용량: https://access.redhat.com/ko/solutions/744483
'Dictionary' 카테고리의 다른 글
JSON Web Tokens, JWT란? (3) | 2023.10.14 |
---|---|
클라우드의 서비스 제공 형태 XaaS, SaaS, PaaS, IaaS (0) | 2023.09.26 |
CI/CD 란? (0) | 2023.09.23 |
프록시(Proxy)란? (0) | 2023.09.20 |
구성 관리 (0) | 2023.09.20 |