검색

7.5. 시스템 메모리 용량 구성

download PDF
이 섹션에서는 시스템의 메모리 사용률을 개선하는 데 유용할 수 있는 메모리 관련 커널 매개변수에 대해 설명합니다. 이러한 매개변수는 /proc 파일 시스템에서 해당 파일의 값을 변경하여 테스트 목적으로 일시적으로 설정할 수 있습니다. 사용 사례에 최적의 성능을 생성하는 값을 확인한 후 sysctl 명령을 사용하여 영구적으로 설정할 수 있습니다.
메모리 사용은 일반적으로 하나 이상의 커널 매개변수 값을 설정하여 구성됩니다. 이러한 매개변수는 /proc 파일 시스템의 파일 내용을 변경하여 일시적으로 설정하거나 procps-ng 패키지에서 제공하는 sysctl 툴로 영구적으로 설정할 수 있습니다.
예를 들어 overcommit_memory 매개변수를 1 일시적으로 1로 설정하려면 다음 명령을 실행합니다.
# echo 1 > /proc/sys/vm/overcommit_memory
이 값을 영구적으로 설정하려면 /etc/sysctl.confsysctl vm.overcommit_memory=1 을 추가한 다음 다음 명령을 실행합니다.
# sysctl -p
매개 변수를 일시적으로 설정하는 것은 매개 변수가 시스템에 미치는 영향을 결정하는 데 유용합니다. 그런 다음 매개변수의 값이 원하는 효과가 있는지 확인할 때 매개 변수를 영구적으로 설정할 수 있습니다.
참고
전문 지식을 확장하려면 Red Hat Enterprise Linux Performance Tuning(RH442) 교육 과정에도 관심이 있을 수 있습니다.

7.5.1. 가상 메모리 매개변수

이 섹션에 나열된 매개변수는 달리 표시되지 않는 한 /proc/sys/vm 에 있습니다.
dirty_ratio
백분율 값입니다. 총 시스템 메모리의 이 백분율이 수정되면 시스템은 pdflush 작업을 사용하여 디스크에 수정 사항을 쓰기 시작합니다. 기본값은 20% 입니다.
dirty_background_ratio
백분율 값입니다. 전체 시스템 메모리의 이 백분율이 수정되면 시스템은 백그라운드에서 디스크에 수정 사항을 쓰기 시작합니다. 기본값은 10% 입니다.
overcommit_memory
대규모 메모리 요청이 수락 또는 거부되는지 여부를 결정하는 조건을 정의합니다.
기본값은 0입니다. 기본적으로 커널은 사용 가능한 메모리 양과 너무 큰 요청 실패를 추정하여 메모리 과다 할당 처리를 수행합니다. 그러나 메모리는 정확한 알고리즘이 아닌 추론을 사용하여 할당되므로 이 설정으로 메모리를 과부하할 수 있습니다.
이 매개변수를 1 로 설정하면 커널에서 메모리 과다 할당 처리를 수행하지 않습니다. 이렇게 하면 메모리 과부하 가능성이 높지만 메모리 집약적인 작업의 성능이 향상됩니다.
이 매개변수가 2 로 설정되면 커널은 사용 가능한 총 스왑 공간 합계 및 overcommit_ratio 에 지정된 물리적 RAM의 백분율보다 크거나 같은 메모리 요청을 거부합니다. 이렇게 하면 메모리 과다 할당 위험이 줄어들지만 스왑 영역이 실제 메모리보다 큰 시스템에만 권장됩니다.
overcommit_ratio
overcommit_memory2 로 설정될 때 고려되는 물리적 RAM의 백분율을 지정합니다. 기본값은 50 입니다.
max_map_count
프로세스에서 사용할 수 있는 최대 메모리 맵 영역 수를 정의합니다. 기본값은 대부분의 경우65530입니다. 애플리케이션이 이 파일 수 이상을 매핑해야 하는 경우 이 값을 늘립니다.
min_free_kbytes
시스템 전체에서 사용할 수 있는 최소 킬로바이트 수를 지정합니다. 이는 각 낮은 메모리 영역에 적절한 값을 결정하는 데 사용되며, 각 영역에는 해당 크기와 비례하여 여러 개의 예약된 사용 가능한 페이지가 할당됩니다.
주의
극단적인 값은 시스템을 손상시킬 수 있습니다. min_free_kbytes 를 매우 낮은 값으로 설정하면 시스템이 메모리를 회수할 수 없으므로 시스템 중단 및 OOM 종료 프로세스가 발생할 수 있습니다. 그러나 min_free_kbytes 를 너무 높게 설정하면 (예: 전체 시스템 메모리의 5-10%)로 인해 시스템이 메모리 부족 상태가 즉시 입력되어 시스템이 메모리를 회수하는 데 시간이 너무 많이 소비됩니다.
oom_adj
시스템이 메모리 부족하고 panic_on_oom 매개변수가 0 으로 설정된 경우 oom_killer 기능은 oom_score 가 가장 높은 프로세스에서 시스템을 복구할 때까지 프로세스를 종료합니다.
oom_adj 매개변수는 프로세스의 oom_score 를 결정하는 데 도움이 됩니다. 이 매개변수는 프로세스 ID별로 설정됩니다. 값 -17 은 해당 프로세스의 oom_killer 를 비활성화합니다. 기타 유효한 값은 -16 에서 15 사이입니다.
참고
조정된 프로세스에서 생성한 프로세스는 프로세스의 oom_score 를 상속합니다.
swappiness
0 에서 100 까지의 swappiness 값은 시스템이 익명 메모리 또는 페이지 캐시를 선호하는 정도를 제어합니다. 값이 높은 경우 파일 시스템 성능이 향상되고 활성 프로세스가 RAM에서 덜 자주 교체됩니다. 값이 낮으면 메모리가 부족하지 않으므로 일반적으로 I/O 성능으로 인해 대기 시간이 줄어듭니다. 기본값은 60 입니다.
주의
swappiness==0 을 설정하면 매우 공격적으로 스와핑되지 않으므로 강력한 메모리 및 I/O 부족으로 OOM이 종료될 위험이 증가합니다.

7.5.2. 파일 시스템 매개변수

이 섹션에 나열된 매개 변수는 달리 표시되지 않는 한 /proc/sys/fs 에 있습니다.
aio-max-nr
모든 활성 비동기 입력/출력 컨텍스트에서 허용되는 최대 이벤트 수를 정의합니다. 기본값은 65536 입니다. 이 값을 수정해도 커널 데이터 구조의 크기를 사전 할당하거나 조정하지 않습니다.
file-max
전체 시스템에 대한 최대 파일 처리 수를 결정합니다. Red Hat Enterprise Linux 7의 기본값은 커널이 시작될 때 사용할 수 있는 사용 가능한 메모리 페이지의 최대 8192 또는 10분의 1입니다.
이 값을 늘리면 사용 가능한 파일 처리 부족으로 인한 오류를 해결할 수 있습니다.

7.5.3. 커널 매개변수

/proc/sys/kernel/ 디렉터리에 있는 다음 매개 변수의 기본값은 사용 가능한 시스템 리소스에 따라 부팅 시 커널에서 계산할 수 있습니다.
msgmax
메시지 큐에서 단일 메시지의 최대 허용 크기(바이트)를 정의합니다. 이 값은 큐(msgmnb)의 크기를 초과해서는 안 됩니다. 시스템의 현재 msgmax 값을 확인하려면 다음을 사용합니다.
# sysctl kernel.msgmax
msgmnb
단일 메시지 큐의 최대 크기(바이트)를 정의합니다. 시스템의 현재 msgmnb 값을 확인하려면 다음을 사용합니다.
# sysctl kernel.msgmnb
msgmni
최대 메시지 큐 식별자 수를 정의하므로 최대 대기열 수를 정의합니다. 시스템의 현재 msgmni 값을 확인하려면 다음을 사용합니다.
# sysctl kernel.msgmni
Shmall
시스템에서 동시에 사용할 수 있는 공유 메모리 페이지의 총 양을 정의합니다. 예를 들어, 페이지는 AMD64 및 Intel 64 아키텍처의 4096바이트입니다.
시스템의 현재 shmall 값을 확인하려면 다음을 사용합니다.
# sysctl kernel.shmall
shmmax
커널에서 허용하는 단일 공유 메모리 세그먼트의 최대 크기(바이트)를 정의합니다. 시스템의 현재 shmmax 값을 확인하려면 다음을 사용합니다.
# sysctl kernel.shmmax
shmmni
시스템 전체 공유 메모리 세그먼트 수를 정의합니다. 기본값은 모든 시스템에서 4096 입니다.
threads-max
커널에서 사용할 수 있는 시스템 전체 최대 스레드 수를 한 번에 정의합니다. 시스템의 현재 threads-max 값을 확인하려면 다음을 사용합니다.
# sysctl kernel.threads-max
기본값은 다음과 같습니다.
mempages / (8 * THREAD_SIZE / PAGE SIZE )
최소 값은 20 입니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.