SharedIT | 묻고 답하기(AMP)

swap 메모리가 없을 수가 있나요?

안녕하세요. 제목 그대로인데요.

일단 free 내용을 참고해 주시면 감사하겠습니다. 

# free -mh

total used free shared buff/cache available

Mem: 503G 167G 65G 121M 270G 334G

Swap: 127G 87G 40G



메모리 상태를 보다가 swap 메모리 항목이 있어서, 처음에는 

" 스왑이 생겼다고? 메모리가 부족한가? "

라고 생각했는데,  보면 available 334G /  Free 167G 인 걸로 봐서, 메모리가 부족한 건 아닌 걸로 판단했습니다.

그럼, 메모리도 부족하지 않은데 왜 swap 이 생겼나? 라고 생각해 보니, 아래와 같은 결론이 나왔습니다.

"cache 에서도 놓아둘 필요 없을 정도로 접속 빈도가 떨어지는 데이터를 , OS 가 알아서 mem -> cache -> swap 으로 옮겼다" 

이전에는 "swap 이 생기는 거 자체가 메모리가 부족하다는 증거다" 라고 생각했습니다만, 

지금 생각해 보면 - 현실적으로 - 메모리 크기가 아무리 커도  swap 이 생기는 게 당연하다

라고 보입니다.


위의 판단이 맞을까요?

아니면 swap 은 없는게 맞고, swap 이 있다는 건 무언가 최적화 등의 작업이 필요한 걸까요?


고견 부탁드립니다.

이상입니다. 감사합니다.




Tags : 태그가 없습니다.

6개의 답변이 있습니다.

deerokgo
  0 추천 | 일 년 이상 전

리눅스에선 swap 메모리가 없을 순 없습니다.

swap은 물리적인 메모리를 사용하는게 아닌, 디스크 영역을 사용 하는 것이고,

swap 메모리는 물리적인 메모리가 커도 기본적으로 활성화가 됩니다.

차바라기
  0 추천 | 일 년 이상 전

SWAP메모리가 없을수 없습니다.설치할때 기본인데 그렇다면 문제가 있습니다.

topkslee
  0 추천 | 일 년 이상 전

SWAP은 시스템 형태에 따라 도움이 될 수도 있고 오히려 성능저하를 가져올 수도 있습니다.

또한 swappiness 설정 값에 따라 메모리가 풀이 나지 않더라도 swap 영역을 사용합니다.

위에 언급하신 내용으로 보면 swap의 절반정도 사용하고 있는 것으로 나오는데요.

이 사용이 peak시에 발생한 것인지 지속적으로 발생한 것인지? 모니터링 해보셔야 할 것 같습니다.

지속적으로 부족하다면 메모리 증설도 필요하구요.

swap은 메모리가 부족할때 메모리 보조 역할은 하지만 메모리만큼의 성능은 나오지 않습니다.

지속적인 swap이 발생한다면 안정적인 성능을 위해 증설이 필요합니다.

danis78
  0 추천 | 일 년 이상 전 | 제이컴즈 | 010-2871-8756

리눅스 OS 설치 해보시면 아시겠지만 swap 메모리 파티션 설정 안하면 

리눅스 OS 설치 자체가 안될텐데요 

wansoo
  0 추천 | 일 년 이상 전

리눅스에서 기본적으로 스왑 메모리를 활성화해서 사용합니다.

메모리의 많고, 적고 여부를 떠나서...

/etc/fstab에도 기본적으로 swapfile을 등록해서 사용하도록 설정되게 되고...


swap file을 확인해 보려면...

swapon --show 

명령으로 확인해 보면 되겠고...

/etc/fstab에서 부팅시 자동 설정되게 되어 있는 내용을 확인해 볼 수도 있겠고요.


스와을 비활성화하고 싶다면

swapoff -v 스왑파일

명령으로 비활성화 시켜 주면 되겠고요.


/etc/fstab 

설정된 swapfile 부분을 제거해 주고 재 부팅 시켜 주면 컴퓨터가 켜질때 활성화되지 않게 되겠고요.


특별한 이유가 없다면 그냥 사용하는 것이 더 낫지 않을까 하는 생각이 드네요.

가능하다면 swapfile이 가장 빠른 디스크를 사용하도록 설정해서 사용하는게 좋을 걸로 보이고요.


Genghis Khan
  0 추천 | 일 년 이상 전

리눅스에서 놀고 있는 free메모리를 활용하는 측면에서 buffer/cache 활용하고 메모리 요청을이 오면 변환 로직에 따라 cache메모리를 free로 반환합니다

즉 cache는 파일의 real data릉 cache하고 메모리 공간입니다 한번이라도 disk에서 읽었던 file을 메모리에 로딩 해 놓기 때문에 재 요청시 빠른 응답/성능과 read 성능이 향상될수 있습니다

실제 메모리 용량이 부족한 경우 swap응 사용할 수 있기 때문에 간헐적으로 메모리를 많이 사용하는 타이밍에는 성능 저하가 될수 있죠

결론적으로 ex) vfs_cache_pressure 설정을 어떻게 하느냐에따라 메모리 사용량으로 cache—> swap 문제를 해결 할 수 있을 것 같습니다