ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스왑메모리 사용 관련 설정(vm.swappiness)
    Dev/Linux 2020. 2. 1. 10:44
    반응형

    커널 문서를 보면 아래와 같이 정의하고 있다. 

    ---
    swappiness
    This control is used to define how aggressive the kernel will swap memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. A value of 0 instructs the kernel not to initiate swap until the amount of free and file-backed pages is less than the high water mark in a zone.

    The default value is 60.
    ---


    먼저 스왑메모리는 시스템의 메인메모리(RAM) 와는 별도로 디스크의 공간을 일부 스왑공간으로 설정해 놓고 메인메모리의 보조적인 역할을 담당하는데 메인메모리가 부족할 경우 이 스왑공간으로 옮겨 놓고 메인메모리의 사용가능한 공간을 확보하며 이를 스와핑이라한다.

     

    이때 얼마나 적극적으로 스와핑할지를 결정하는 파라메터가 vm.swappiness 이다. 

     

    swap_tendency = mapped_ratio/2 + distress + vm_swappiness;

     

    위 공식에서

    mapped_ratio : 주어진 메모리 존내부에서 전체 메인 메모리중 사용중인(mapped) 공간의 비율

    distress :  0-100, 메모리 공간 확보를 요구 정도, 공간확보 요구가 많아질 수록 높아진다.

    swap_tendency: 100 에 도달할 경우 스와핑이 시작된다.

    vm_swappiness: 스와핑 조절을 위한 설정 파라메터

     

    따라서 최종적으로 swap_tendency 는 메모리 사용정도가 높고 공간확보 요구가 많을 수록 좀더 적극적으로 메인 메모리 공간을 확보하며 이때 vm_swappiness 값을 통해 가중치를 적용할 수 있다. 

     

    리눅스에서 swappiness 의 기본값은 60 이며 따라서 distress 가 최초 0이라고 가정했을 때 메인 메모리의 사용율이 %80 일때 부터  swap_tendency 가 100 이 되어 스와핑을 진행한다.

     

    만약, 상대적으로 swappiness 를 10 이하로 설정할 경우 메인 메모리 사용율이 위와 같이 %80 이라고 했을 때 distress 값이 50 이상 오르지 전까지는 스와핑이 시작되지 않는다. 

     

     

     

    반응형
Designed by Tistory.