검색

35.3. 가상 메모리 매개변수

download PDF

가상 메모리 매개 변수는 /proc/sys/vm 디렉터리에 나열됩니다.

다음은 사용 가능한 가상 메모리 매개변수입니다.

vm.dirty_ratio
는 백분율 값입니다. 총 시스템 메모리의 이 백분율이 수정되면 시스템은 lush 작업을 사용하여 디스크 수정 사항 작성을 시작합니다. 기본값은 20%입니다.
vm.dirty_background_ratio
백분율 값입니다. 총 시스템 메모리의 이 백분율이 수정되면 시스템은 백그라운드에서 디스크에 대한 수정 사항 쓰기를 시작합니다. 기본값은 10%입니다.
vm.overcommit_memory

큰 메모리 요청이 수락되었는지 여부를 결정하는 조건을 정의합니다. 기본값은 0 입니다.

기본적으로 커널은 가상 메모리 할당 요청이 현재 메모리 양(total + 스왑)에 맞는지 확인하고 대규모 요청만 거부합니다. 그렇지 않으면 가상 메모리 할당이 부여되며 이는 메모리 과다 할당을 허용합니다.

overcommit_memory 매개변수의 값을 설정합니다.

  • 이 매개 변수를 1 로 설정하면 커널이 메모리 과다 할당 처리를 수행하지 않습니다. 이렇게 하면 메모리 과부하 가능성이 높아지지만, 메모리를 많이 사용하는 작업의 성능이 향상됩니다.
  • 이 매개 변수가 2 로 설정되면 커널은 사용 가능한 총 스왑 공간의 합계와 동일한 메모리 요청과 overcommit_ratio 에 지정된 물리적 RAM의 백분율을 거부합니다. 이렇게 하면 메모리 과다 할당 위험이 줄어듭니다. 그러나 스왑 영역이 실제 메모리보다 큰 시스템에만 권장됩니다.
vm.overcommit_ratio
overcommit_memory2 로 설정된 경우 물리적 RAM의 백분율을 지정합니다. 기본값은 50 입니다.
vm.max_map_count
프로세스에서 사용할 수 있는 최대 메모리 맵 영역 수를 정의합니다. 기본값은 65530 입니다. 애플리케이션에 더 많은 메모리 맵 영역이 필요한 경우 이 값을 늘립니다.
vm.min_free_kbytes

예약된 여유 페이지 풀의 크기를 설정합니다. 또한 Linux 커널 페이지의 동작을 제어하는 min_page, low _page 및 high_page 임계값을 설정하는 작업도 담당합니다. 또한 시스템 전체에서 사용할 수 있는 최소 킬로바이트 수를 지정합니다. 이렇게 하면 작은 메모리 영역마다 특정 값이 계산되며, 각 메모리 영역에는 크기에 비례하여 예약된 여러 개의 여유 페이지가 할당됩니다.

vm.min_free_kbytes 매개변수 값을 설정합니다.

  • 매개 변수 값을 늘리면 애플리케이션 작업 세트 사용 가능한 메모리가 효과적으로 줄어듭니다. 따라서 드라이버 버퍼를 원자 컨텍스트에서 할당해야 하는 커널 중심 워크로드에만 사용할 수 있습니다.
  • 매개 변수 값을 줄이면 메모리가 시스템에 많이 누적되는 경우 커널이 시스템 요청을 서비스할 수 없게 될 수 있습니다.

    주의

    극심한 값은 시스템 성능 저하가 될 수 있습니다. vm.min_free_kbytes 를 매우 낮은 값으로 설정하면 시스템이 메모리를 효과적으로 회수하지 못하므로 시스템 충돌이 발생하고 서비스 인터럽트 또는 기타 커널 서비스에 오류가 발생할 수 있습니다. 그러나 vm.min_free_kbytes 를 너무 높게 설정하면 시스템 회수 활동이 너무 증가하여 잘못된 직접 회수 상태로 인해 할당 대기 시간이 발생했습니다. 이로 인해 시스템이 메모리 부족 상태가 즉시 입력될 수 있습니다.

    vm.min_free_kbytes 매개 변수는 min_pages 라는 페이지 회수 워터마크도 설정합니다. 이 워터마크는 페이지를 회수하는 알고리즘을 제어하는 다른 두 개의 메모리 워터마크인 low_pageshigh_pages 를 결정할 때 인수로 사용됩니다.

/proc/PID/oom_adj

시스템이 메모리가 부족하고 panic_on_oom 매개 변수가 0 으로 설정된 경우, 시스템이 복구될 때까지 가장 high oom_ score가 있는 프로세스부터 시작하여oom_ killer 함수에서 프로세스를 종료합니다.

The oom_adj 매개 변수는 프로세스의 oom_score 를 결정합니다. 이 매개 변수는 프로세스 식별자별로 설정됩니다. 값이 -17 이면 해당 프로세스의 oom_killer 가 비활성화됩니다. 다른 유효한 값은 -16 에서 15 사이입니다.

참고

조정된 프로세스에서 생성한 프로세스는 해당 프로세스의 the oom_score 를 상속받습니다.

vm.swappiness

swappiness 값은 0 에서 200 사이이며 시스템이 익명 메모리 풀 또는 페이지 캐시 메모리 풀에서 메모리를 회수하는 정도를 제어합니다.

swapp iness 매개변수의 값 설정:

  • 액세스가 덜 사용되는 프로세스의 익명 매핑 메모리는 스왑 아웃하는 동시에 파일 매핑 기반 워크로드를 선호합니다. 이 기능은 스토리지의 파일에서 데이터를 사용하는 파일 서버 또는 스트리밍 애플리케이션에서 서비스 요청에 대한 I/O 대기 시간을 줄이기 위해 메모리에 상주하는 데 유용합니다.
  • 낮은 값은 페이지 캐시를 회수하는 동시에 익명 매핑 주도 워크로드를 선호합니다(파일 매핑된 메모리). 이 설정은 파일 시스템 정보에 크게 의존하지 않는 애플리케이션에 유용하며, 동적으로 할당된 프라이빗 메모리(예: 수학 및 번호 입력 애플리케이션, QEMU와 같은 하드웨어 가상화 관리자)를 많이 활용하는 데 유용합니다.

    vm.swappiness 매개변수의 기본값은 60 입니다.

    주의
    • vm.swappiness0 으로 설정하면 익명 메모리를 디스크로 스와핑하는 것을 적극적으로 방지할 수 있으므로 메모리 또는 I/O 집약적 워크로드가 있을 때 the oom_killer 함수에 의해 프로세스가 종료될 위험이 높아집니다.
    • cgroupsV1 을 사용하는 경우 cgroupsV1에 한정적인 cgroup 스왑 피어 값의 경우 vm.swappiness 매개변수에 의해 구성된 시스템 전체 스왑이 시스템의 스왑 동작에 거의 영향을 미치지 않습니다. 이 문제로 인해 예기치 않고 일관성 없는 스왑 동작이 발생할 수 있습니다.

      이러한 경우 vm.force_cgroup_v2_swappiness 매개변수를 사용하는 것이 좋습니다.

      자세한 내용은 swappiness=0을 사용한 Premature swapping with swappiness=0을 참조하십시오. KCS 솔루션을 회수할 수 있는 pagecache가 여전히 많이 있습니다.

force_cgroup_v2_swappiness
이 제어는 cgroupsV1 에서만 사용할 수 있는 per-cgroup swappiness 값을 사용 중단하는 데 사용됩니다. 대부분의 시스템 및 사용자 프로세스는 cgroup 내에서 실행됩니다. cgroup 스왑의 기본값은 60입니다. 이로 인해 시스템 스왑 값이 시스템의 스왑 동작에 거의 영향을 미치지 않을 수 있습니다. 사용자가cgroup별 스왑piness 기능에 관심이 없는 경우 force_cgroup_v2_swappiness=1 으로 시스템을 구성하여 전체 시스템에서 더 일관된 스왑 동작을 수행할 수 있습니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.