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

   조회 2137   추천 0    

 

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

일단 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 이 있다는 건 무언가 최적화 등의 작업이 필요한 걸까요?


시간 되시는 분들께서는 의견 말씀해 주시면 감사하겠습니다. 

이상입니다. 즐거운 하루 되시기 바랍니다.


행복은 희생없이는 얻을 수 없는 것인가. 시대는 불행없이는 넘을 수 없는 것인가.
짧은글 일수록 신중하게.
송주환 2022-12
케이스 바이 케이스.
Swap이 반드시 필요한 애플리케이션도 있고, 아예 swap 영역을 할당하지 않는 것이 권장되는 경우도 있습니다 (e.g. k8s)
듀학 2022-12
어플리케이션에서 명시적으로 swap 으로 쓸수도 있습니다.

os 커널상에서 cache에서 swap으로 옮기는 경우는 드물겁니다.
epowergate 2022-12
swapoff
swapon
레인보우7 2022-12
개인적으로는 swap 없이 쓴지 10여년이 넘었는데 별이상은 없는데,
간혹 다른 응용서버들보면 application server단에서 잔챙이 파일들 엄청나게 폭풍우로처럼 심하게 날라오면 swap 걸어주면 조금 완화되는것 같습니다.
Linux kernel에서 메모리가 부족할 때만 swap을 사용하는게 아닙니다. 예를 들어, kernel 내부에서 64kB의 연속된 메모리 공간을 할당하려고 합니다. 그런데 시스템이 오랜시간 동작하다 보니 메모리 파편화가 심화돼서 가용 메모리는 꽤 많은데 64kB의 연속된 공간이 없습니다. 버전이나 설정에 따라 다르긴 한데, 가능하면 먼저 compaction이라는 것을 시도합니다. Physical address가 고정될 필요가 없는 data의 위치를 옮겨서 연속된 메모리 공간이 확보될 가능성을 높이는 작업인데, 이걸 해봤는데도 연속된 64kB 공간이 만들어지지 않는다면 그땐 swap을 동원합니다. 대부분 I/O를 동반하기 때문에 아주 오래 걸리긴 하지만, 매우 높은 확률로 원하는 메모리를 얻을 수 있습니다.


QnA
제목Page 437/5730
2014-05   5266770   정은준1
2015-12   1791693   백메가
2022-12   2313   홍익
2024-06   2313   Frinc
2022-02   2313   원탱이방굴이
2022-08   2313   씨엔
2022-03   2313   디지유
2022-05   2314   만사오케이
2024-03   2314   신우섭
2022-03   2314   명랑
2020-11   2314   최민재
2023-05   2314   암굴왕
2020-11   2314   행복하세
2024-01   2315   고양이는애옹
2024-05   2315   화란
2021-06   2315   서울I김동수
2024-02   2315   song05
2021-06   2315   이나윤1996
2020-09   2315   Whitesun
2022-02   2315   김황중
2023-07   2315   cjsrbc
2021-07   2315   을지문덕