리눅스

스왑 메모리(Swap Memory)란

코드버스 2023. 3. 26. 22:32
728x90
반응형

스왑 메모리(Swap Memory)란

스왑 메모리란, 물리적 메모리(RAM)의 부족으로 인해 운영체제가 디스크의 일부분을 가상 메모리로 사용하는 것을 의미합니다. 이렇게 스왑 메모리를 사용함으로써 물리적 메모리가 부족해지는 상황에서도 시스템이 계속해서 동작할 수 있습니다.

 

스왑 메모리는 일반적으로 운영체제가 사용하는 파일 시스템의 일부분을 스왑 파티션으로 지정하거나, 스왑 파일을 생성해서 사용합니다. 스왑 파티션은 디스크의 일부분을 운영체제에서 직접 지정하고, 스왑 파일은 파일 시스템의 일부분을 스왑 공간으로 사용하는 방식입니다.

 

스왑 메모리는 물리적 메모리보다 훨씬 느리기 때문에, 스왑이 발생하는 경우 시스템 성능이 저하될 수 있습니다. 따라서 가능하면 물리적 메모리를 늘리는 것이 좋습니다. 또한 스왑 파티션의 크기나 스왑 파일의 크기를 적절하게 설정해야 하며, 스왑 메모리 사용량이 높아지는 경우 시스템 성능을 확인하고 조치를 취해야 합니다.

리눅스 캐시 메모리 비우기

리눅스에서는 파일 시스템에 접근하는 데이터를 캐싱하여 성능을 높입니다. 그러나 캐시된 데이터가 많으면 물리적인 메모리를 차지하여 시스템 성능에 영향을 미칠 수 있습니다. 따라서 캐시 메모리를 비우는 것이 필요할 수 있습니다.

1. 페이지 캐시(page cache) 비우기

sync && echo 1 > /proc/sys/vm/drop_caches

sync 명령은 디스크 캐시에 있는 데이터를 디스크로 내보내는 역할을 합니다. echo 명령은 /proc/sys/vm/drop_caches 파일에 1을 쓰면 페이지 캐시를 비울 수 있습니다.

2. dentries와 inodes 비우기

sync && echo 2 > /proc/sys/vm/drop_caches

echo 명령어에서 2를 쓰면 dentries와 inodes를 비울 수 있습니다.

3. 페이지 캐시, dentries, inodes 모두 비우기

sync && echo 3 > /proc/sys/vm/drop_caches

echo 명령어에서 3을 쓰면 페이지 캐시, dentries, inodes를 모두 비울 수 있습니다.

 

위의 방법들은 캐시 메모리를 비워서 디스크와의 I/O 작업을 수행할 때 더 많은 공간을 사용할 수 있도록 하는 것입니다. 하지만 이 방법들은 캐시된 데이터가 유실될 수 있으므로, 필요한 경우에만 사용하는 것이 좋습니다. 또한, 메모리 캐시가 계속 쌓이는 문제가 있다면, 시스템의 메모리 사양을 적절하게 조정하거나, 프로세스나 애플리케이션의 사용 방식을 변경하여 메모리 사용을 최적화하는 것이 좋습니다.

메모리 교환(swapping)

출처-https://ehindistudy.com/wp-content/uploads/2016/11/swaping-in-hindi.png.png

메모리 교환(swapping)은 운영체제가 물리적 메모리(RAM)의 부족으로 인해 메모리를 디스크에 저장하고, 필요할 때 디스크에서 다시 읽어와 사용하는 것을 말합니다.

 

메모리 교환이 일어나는 경우는 보통 물리적 메모리가 부족한 상황에서 발생합니다. 이런 경우 운영체제는 메모리를 사용하는 프로세스 중 일부를 일시적으로 디스크에 저장하고, 그 공간을 다른 프로세스가 사용하도록 합니다. 이렇게 디스크에 저장된 메모리는 스왑 메모리라고도 부릅니다.

 

메모리 교환이 발생하면, 프로세스의 실행 속도가 느려지거나 시스템 전체의 성능 저하가 발생할 수 있습니다. 이는 디스크에서 메모리를 읽고 쓰는 속도가 물리적 메모리에 접근하는 속도보다 훨씬 느리기 때문입니다. 따라서 메모리 교환이 발생하는 경우에는 물리적 메모리를 추가로 확보하거나, 사용 중인 프로세스의 개수를 줄이는 등의 조치를 취하여 성능 저하를 최소화해야 합니다.

 

728x90
반응형