Proxmox Swap 관련 설정하기.(swappiness)

profile
달소

 

안녕하세요. 달소입니다.

 

이번글은 Proxmox에서 Swap을 설정하고나서 swap이 되는 시점을 설정하는 방법입니다.

 

기본적으로 swappiness 는 물리적메모리가 해당시점이 남을때 시스템을 스왑하도록 합니다.

디폴트 설정은 아래처럼 60으로 되어있습니다.

60이라면 물리적 메모리가 60%남을때 시스템이 스왑을 한다는 뜻입니다.

 

image.png.jpg

 

스왑을 아예 사용하지않으려면 해당 설정값을 0으로해주시면 되고 저같은경우 10%로 설정해줬습니다.

 

sysctl vm.swappiness=10

 

image.png.jpg

 

끝입니다.

 

스왑을 정리하는 명령어는 swapoff -a 이고 다시 켜는 명령어는 swapon -a 입니다.

 

 

서버포럼 관리자입니다.!

서버포럼은 홈서버로 운영중이며 아래와같은 시스템으로 운영됩니다.

 

메인서버 - Ryzen 5700G / Proxmox 7.2 / Ubuntu / Xpenology / 기타 VM 등등

보조서버 - Intel i9-9900ES(QQC0) / H370M / Proxmox 7.1 / 아직개발용서버로 사용중
백업서버 - 타오나스 A형(?) / DS918+ 6.2.3 / 메인서버 VM 백업용

 

하드웨어,가상화 등등 여러 IT분야에 관심이 두루두루많습니다만 깊게알고있는건 없습니다 하하하

 

 

적용중인 도장이 없습니다.

* 가입일 : 2020-12-24
* 총 게시글 수 : 6571
* 총 댓글 수 : 19932
* 추천받은 게시글 개수 : 2559
* 추천받은 댓글 개수 : 3201
댓글
4
  • 우하히아나
    2022.07.05

    아주 단연한거지만 대비안같은 다른 리눅스에서도 쓸수 있네요 그리고 달소님이 10으로 맞추신건

    ->메모리 여유가 충분할 때 성능향상을 위해 vm.swappiness = 10 정도를 권고하는 경우가 있음

    이거 때문인가요? 램이 많아도 스왑을 잡는게 성능향상에 도움이 되나보네요?

  • 우하히아나
    달소
    작성자
    2022.07.05
    @우하히아나 님에게 보내는 답글

    램이많다면 굳이 스왑을 잡을필요가없어서 0으로 주시는게 가장좋습니다.

    Proxmox에서는 ZFS를 사용해서 간혹(?) 메모리를 과다하게 사용할때가있는데 이럴때 전체 메모리 양을 넘어서기 때문에 swap설정을 걸어놨습니다.

     

     

  • 우하히아나
    콜라
    2022.07.06
    @우하히아나 님에게 보내는 답글

    음.. 요건 메모리 스왑에 대한 설명이 필요할 것 같습니다.

     

    일단 스왑은 메모리가 부족할 때에도 컴퓨터가 계속 작동하도록 하기 위해 적게 사용하는 앱들을 스왑에 저장하도록 합니다.

     

    cpu는 사용량이 100%가 되면 처리가 지연이 되기는 하지만, 문제가 발생하지 않습니다.

    하지만 램은 100%가 채워지면 멈춥니다.

    cpu는 시간이 지나면 알아서 점유율이 낮아지지만, 램은 응용프로그램이 종료되지 않는 한 확보가 안되니까요.

     

    문제는 종료하는데도 메모리가 필요하다는 겁니다.

    실행되는 모든 프로그램이 프로그램 실행과 동시에 종료 명령어를 탑재시켜놓을 수는 없죠.

    그러다보니 종료 명령어도 하드나 ssd에서 불러와서 램에 탑재해야, 종료하는 명령을 실행할 수 있습니다.

    이 때 메모리가 100% 면 종료 명령을 못불러오고, 그러게 되면 종료도 못하고 실행도 못하죠.

     

    그러므로 램은 100%가 되면 안됩니다.

    그래서 램의 정보를 하드디스크에 저장하는 스왑이나 이를 관리하기 위한 페이징이 있습니다.

    (사실 스왑만 메모리 제어하는 것은 아니어서, 스왑을 끈다고 메모리 100%에서 컴퓨터가 멈추지는 않습니다.

    운영체제가 그렇게 멍청하지는 않아요. )

    게다가 하드디스크는 램의 1/100 가까이 느린 장치입니다.(특히 iops..)

    그러면 하드디스크는 느리니까 스왑 사용량을 최소화 하는것이 무조건 좋겠네?

    그것도 아닙니다.

    예시를 하나 들어보겠습니다.

     

    램의 남은 공간이 1기가입니다.

    이 때 램 10기가를 필요로 하는 명령이 실행되면

    램에 있던 9기가바이트의 내용이 하드디스크로 복사 한 후에 하드디스크에서 실행하려던 프로그램을 불러오기 시작합니다.

    램에 10기가 초과가 남았다면 바로 10기가바이트에 해당하는 데이터를 하드에서 불러올 수 있겠죠.

    sata ssd가 달린 컴퓨터에 램이 1기가가 남았다면 10기가바이트가 남은 경우보다 18초가 더 지나야 프로그램이 실행이 되는거죠.

     

     

     

    이런 웹서버의 경우 gui 처리가 없습니다(gui 처리는 접속하는 클라이언트가 처리하는 일이고, 웹서버는 단순히 이미지와 애니메이션 코드만 전달할 뿐이죠)

    그러다보니 순간적으로 많은 메모리를 요구하지 않습니다.

    웹서버에서는 10% 남았을때 스왑하는게 유리하죠.

    반면 순간적으로 요구하는 메모리양이 많으면 남은 공간이 많을때부터 스왑이 되어야 겠죠.

     

     

    메모리 누수 같은 버그도 존재하기 때문에 스왑은 어떤 경우에도 끄는 것은 추천하지 않습니다.

    예상치 않게 갑자기 사용량이 늘어나서 문제가 될수도 있기 때문이죠..

    또한 어떤 프로그램이던 초기 실행할때에만 사용하는 명령어가 램을 점유하는 경우가 있습니다.

    이런 명령어는 스왑에 넣어버리고

    그 공간에 캐시를 넣는게 이득인 경우도 존재하죠.

     

    맥이 이렇게 운영됩니다.

    일단 안쓰는건 스왑해놓고서 다 캐시로 채워둡니다.

    캐시로 채우고도 램이 남아야 비로소 스왑이 없어져요.

    스왑이 있는데 캐시가 안채워진 경우를 본적이 없습니다.ㅋ꙼̈ㅋ̊̈ㅋ̆̈ㅋ

  • 콜라
    우하히아나
    2022.07.06
    @콜라 님에게 보내는 답글

    아 감사합니다

    저도 맥을 쓰고있습니다 특히 프로그램을 엄청 여러개 띄워두는데 사파리나 몇몇 프로그램은 백그라운드로 오래 들어가면 잠자기 같은 상태가 되면서 스왑을 잡아먹는듯한 모습을 보이더군요

    예전에 스왑버그? 공격적인 스왑으로 스스디 성능 갉아먹는다는 말이 있어서 불안했었고

    케어들었으니 상관없겠지하고 막연하게 생각하고있었는데

    설명을 쭉 보니 맥은 os에서 공격적으로 스왑을 하는 스타일이였나보네요 뭔가 윈도우랑은 또 다른 느낌이네요 특히 캐시된 메모리란게 개념이 뭔가 재미있네요ㅎㅎ

    암튼 덕분에 많은걸 배우고 갑니다!

댓글 쓰기
권한이 없습니다.