탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
![]() |
Oracle Solaris 조정 가능 매개변수 참조 설명서 Oracle Solaris 11 Information Library (한국어) |
Solaris OS에서는 요구 페이징 가상 메모리 시스템을 사용합니다. 시스템이 실행되는 동안 필요할 때마다 페이지를 메모리로 가져옵니다. 특정 임계값 이상으로 메모리가 사용되고 메모리 수요가 계속 발생하면 페이징이 시작됩니다. 페이징은 특정 매개변수로 제어되는 여러 레벨을 거칩니다.
일반적인 페이징 알고리즘은 다음과 같습니다.
메모리 부족이 감지됩니다. 페이지 스캐너 스레드가 실행되고 메모리 내를 이동하기 시작합니다. 2단계 알고리즘이 사용됩니다.
페이지가 사용되지 않은 것으로 표시됩니다.
일정 시간이 지난 후에도 페이지가 사용되지 않으면 재생 이용 대상으로 나타납니다.
페이지가 수정된 경우 I/O를 위해 해당 페이지를 예약하도록 pageout 스레드에 요청이 이루어집니다. 또한 페이지 스캐너는 메모리를 계속 검토합니다. pageout은 페이지가 페이지 백업 저장소에 기록되고 해제 목록에 놓이도록 합니다. 페이지 스캐너가 메모리를 검색할 때 페이지 원본을 구분하는 작업은 이루어집니다. 페이지는 데이터 파일에서 가져올 수도 있고 실행 파일의 텍스트, 데이터 또는 스택의 페이지를 나타낼 수도 있습니다.
시스템의 메모리 압력이 증가하면 이 알고리즘은 더욱 공격적으로 변경되어 페이지를 재생 이용 후부로 간주하고 페이징 알고리즘을 더 자주 실행하게 됩니다. 자세한 내용은 fastscan 및 slowscan을 참조하십시오. 사용 가능한 메모리가 lotsfree와 minfree 사이로 떨어지면 각 pageout 스레드 호출 시 검색되는 메모리 양이 slowscan에 지정된 값에서 fastscan에 지정된 값으로 연속적으로 증가합니다. 시스템에서는 desfree 매개변수를 사용하여 리소스 사용량 및 동작에 대한 수많은 결정을 제어합니다.
초기에는 시스템에서 pageout 작업에 CPU를 4% 이상 사용하지 않도록 제한하지만 메모리 압력이 늘어나면 한 CPU가 최대 80% 사용될 때까지 pageout 작업을 지원하기 위해 사용되는 CPU 시간이 연속적으로 증가합니다. 알고리즘은 slowscan과 fastscan 사이의 일정 양의 메모리를 검토하고 다음 중 하나가 발생하면 중지합니다.
메모리 부족을 메울 충분한 페이지를 찾았습니다.
계획된 페이지 수를 검토했습니다.
너무 많은 시간이 경과되었습니다.
pageout에서 검색을 완료했을 때도 메모리 부족 현상이 계속되면 향후 1/4초에 대해 다른 검색이 예약됩니다.
페이징 부속 시스템의 구성 방식이 변경되었습니다. 이제 사전 정의된 fastscan, slowscan 및 handspreadpages 값 세트에 관계없이 부트 시 이러한 매개변수의 적절한 설정이 결정됩니다. /etc/system 파일에서 이러한 매개변수를 설정하면 최적값보다 적은 메모리가 사용될 수 있습니다.
![]() | 주의 - VM 시스템에 대한 모든 조정 사항을 /etc/system 파일에서 제거하십시오. 기본 설정으로 실행하여 매개변수를 조정할 필요가 있는지 확인합니다. cachefree나 priority_paging을 설정하지 마십시오. |
CPU 및 메모리에 대한 DR(동적 재구성)이 지원됩니다. DR 작업에 메모리 추가나 삭제가 포함될 경우 관련 매개변수가 /etc/system 파일에 명시적으로 설정되어 있지 않으면 매개변수 값이 다시 계산됩니다. 명시적으로 설정된 경우에는 변수 값에 대한 제약 조건에 위반되지 않는 한 /etc/system에 지정된 값이 사용됩니다. 위반될 경우 값이 재설정됩니다.
시스템 페이징이 시작되도록 하는 초기 트리거 역할을 합니다. 이 임계값을 초과하면 페이지 스캐너가 시작되어 재생 이용할 메모리를 찾기 시작합니다.
부호 없는 long
물리적 메모리의 1/64과 512KB 중 더 큰 값
최소값은 512KB와 물리적 메모리의 1/64 중 더 큰 값이며, getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다. 자세한 내용은 getpagesize(3C)를 참조하십시오.
최대값은 물리적 메모리 페이지 수입니다. 최대값은 물리적 메모리의 30%를 넘지 않아야 합니다. 이 범위는 검증 절에 설명된 경우를 제외하고는 강제로 적용되지 않습니다.
페이지
예, 그러나 메모리 기반 DR 작업이 발생하면 동적 변경 사항이 손실됩니다.
lotsfree가 물리적 메모리의 양보다 크면 값이 기본값으로 재설정됩니다.
항상 lotsfree가 desfree보다 크고 desfree는 minfree보다 크도록 유지됩니다.
페이지에 대한 수요가 급증할 경우 메모리 알고리즘으로 수요를 따라잡을 수 없을 수도 있습니다. 한 가지 솔루션은 조금 더 일찍 메모리 재생 이용을 시작하는 것입니다. 이 솔루션은 페이징 시스템에 추가적인 여유를 가져옵니다.
일반적인 솔루션은 이 매개변수를 시스템에서 몇 초 동안 할당해야 할 메모리의 두 배로 설정하는 것입니다. 이 매개변수는 작업 부하 종속 항목에 따라 다르게 설정합니다. DBMS 서버의 경우 기본 설정으로도 적절히 작동할 수 있습니다. 그러나 파일 시스템 I/O가 많은 시스템에서는 이 매개변수를 조정해야 할 수도 있습니다.
작업 부하가 비교적 정적이고 메모리가 많은 시스템에서는 이 값을 줄여 보십시오. 허용 가능한 최소값은 512KB이며 getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
불안정
부호 없는 정수
lotsfree/2
최소값은 256KB와 물리적 메모리의 1/128 중 더 큰 값이며, getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
최대값은 물리적 메모리 페이지 수입니다. 최대값은 물리적 메모리의 15%를 넘지 않아야 합니다. 이 범위는 검증 절에 설명된 경우를 제외하고는 강제로 적용되지 않습니다.
페이지
예, 메모리를 추가하거나 삭제하는 동적 재구성 작업이 일어나지 않는 경우에 한해 동적입니다. 동적 재구성 작업이 일어날 경우 /etc/system 파일에 제공된 값으로 값이 재설정되거나 새 물리적 메모리 값에서 값이 계산됩니다.
desfree가 lotsfree보다 크면 desfree가 lotsfree/2로 설정됩니다. 메시지는 표시되지 않습니다.
항상 lotsfree가 desfree보다 크고 desfree는 minfree보다 크도록 유지됩니다.
이 매개변수의 값을 늘리면 몇 가지 부작용이 발생할 수 있습니다. 새로 지정한 값이 시스템의 사용 가능한 메모리 양에 가깝거나 초과하면 다음과 같은 상황이 발생할 수 있습니다.
사용 가능한 메모리가 desfree를 초과하지 않으면 비동기 I/O 요청이 처리되지 않습니다. desfree 값을 늘리면 성공했을 요청이 거부될 수 있습니다.
NFS 비동기 쓰기가 동기적 쓰기로 실행됩니다.
교체 프로그램이 일찍 시작되고 교체 프로그램의 동작이 더 공격적인 작업으로 나타납니다.
가능한 많은 실행 가능 페이지가 시스템에 사전 로드(사전 폴트)되지 않을 수 있습니다. 이 부작용으로 인해 응용 프로그램 실행 속도가 느려질 수 있습니다.
작업 부하가 비교적 정적이고 메모리가 많은 시스템에서는 이 값을 줄여 보십시오. 허용 가능한 최소값은 256KB이며 getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
불안정
허용 가능한 최소 메모리 레벨을 지정합니다. 메모리가 이 값 아래로 떨어지면 pageout 작업을 성공적으로 완료하거나 프로세스를 메모리에서 완전히 교체하는 데 필요한 메모리 할당이 활발히 이루어집니다. 이러한 할당으로 인해 다른 할당 요청이 거부되거나 차단됩니다.
부호 없는 정수
desfree/2
최소값은 128KB와 물리적 메모리의 1/256 중 더 큰 값이며, getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
최대값은 물리적 메모리 페이지 수입니다. 최대값은 물리적 메모리의 7.5%를 넘지 않아야 합니다. 이 범위는 검증 절에 설명된 경우를 제외하고는 강제로 적용되지 않습니다.
페이지
예, 메모리를 추가하거나 삭제하는 동적 재구성 작업이 일어나지 않는 경우에 한해 동적입니다. 동적 재구성 작업이 일어날 경우 /etc/system 파일에 제공된 값으로 값이 재설정되거나 새 물리적 메모리 값에서 값이 계산됩니다.
minfree가 desfree보다 크면 minfree가 desfree/2로 설정됩니다. 메시지는 표시되지 않습니다.
항상 lotsfree가 desfree보다 크고 desfree는 minfree보다 크도록 유지됩니다.
일반적으로 기본값이 적절합니다. 작업 부하가 비교적 정적이고 메모리가 많은 시스템에서는 이 값을 줄여 보십시오. 허용 가능한 최소값은 128KB이며 getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
불안정
요청을 충족할 만큼 메모리가 충분할 경우에도 블록화 메모리 할당 요청이 일시 정지되게 만드는 메모리 레벨을 지정합니다.
부호 없는 정수
minfree
최소값은 128KB와 물리적 메모리의 1/256 중 더 큰 값이며, getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
최대값은 물리적 메모리 페이지 수입니다. 최대값은 물리적 메모리의 4%를 넘지 않아야 합니다. 이 범위는 검증 절에 설명된 경우를 제외하고는 강제로 적용되지 않습니다.
페이지
예, 메모리를 추가하거나 삭제하는 동적 재구성 작업이 일어나지 않는 경우에 한해 동적입니다. 동적 재구성 작업이 일어날 경우 /etc/system 파일에 제공된 값으로 값이 재설정되거나 새 물리적 메모리 값에서 값이 계산됩니다.
throttlefree가 desfree보다 크면 throttlefree가 minfree로 설정됩니다. 메시지는 표시되지 않습니다.
항상 lotsfree가 desfree보다 크고 desfree는 minfree보다 크도록 유지됩니다.
일반적으로 기본값이 적절합니다. 작업 부하가 비교적 정적이고 메모리가 많은 시스템에서는 이 값을 줄여 보십시오. 허용 가능한 최소값은 128KB이며 getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다. 자세한 내용은 getpagesize(3C)를 참조하십시오.
불안정
pageout 또는 스케줄러 스레드에만 사용되도록 예약된 페이지 수를 지정합니다. 사용 가능한 메모리가 이 값보다 적으면 pageout이나 스케줄러를 제외한 모든 프로세스에 대해 비블록화 할당이 거부됩니다. pageout은 적은 메모리 풀만 사용하면 되므로 해당 백업 저장소에 페이지를 쓰기 위한 I/O를 수행하는 데 필요한 데이터 구조를 할당할 수 있습니다.
부호 없는 정수
throttlefree/2
최소값은 64KB와 물리적 메모리의 1/512 중 더 큰 값이며, getpagesize(3C)로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
최대값은 물리적 메모리 페이지 수입니다. 최대값은 물리적 메모리의 2%를 넘지 않아야 합니다. 이 범위는 검증 절에 설명된 경우를 제외하고는 강제로 적용되지 않습니다.
페이지
예, 메모리를 추가하거나 삭제하는 동적 재구성 작업이 일어나지 않는 경우에 한해 동적입니다. 동적 재구성 작업이 일어날 경우 /etc/system 파일에 제공된 값으로 값이 재설정되거나 새 물리적 메모리 값에서 값이 계산됩니다.
pageout_reserve가 throttlefree/2보다 크면 pageout_reserve가 throttlefree/2로 설정됩니다. 메시지는 표시되지 않습니다.
항상 lotsfree가 desfree보다 크고 desfree는 minfree보다 크도록 유지됩니다.
일반적으로 기본값이 적절합니다. 작업 부하가 비교적 정적이고 메모리가 많은 시스템에서는 이 값을 줄여 보십시오. 허용 가능한 최소값은 64KB이며 getpagesize로 반환된 페이지 크기를 사용하여 페이지 수로 나타납니다.
불안정
잠금을 해제해야 할 페이지 수를 정의합니다. 페이지 잠금 요청으로 인해 사용 가능한 메모리가 이 값 미만으로 떨어질 경우 해당 요청은 거부됩니다.
부호 없는 long
(tune_t_minarmem + 100)과 (부트 시 사용 가능한 메모리의 4% + 4MB) 중 더 큰 값
시스템에서 강제로 적용하는 최소값은 tune_t_minarmem + 100입니다. 최대값은 강제로 적용되지 않습니다.
페이지
예, 메모리를 추가하거나 삭제하는 동적 재구성 작업이 일어나지 않는 경우에 한해 동적입니다. 동적 재구성 작업이 일어날 경우 /etc/system 파일에 제공된 값으로 값이 재설정되거나 새 물리적 메모리 값에서 값이 계산됩니다.
/etc/system 파일에 지정된 값이나 계산된 기본값이 tune_t_minarmem + 100보다 낮으면 tune_t_minarmem + 100으로 값이 재설정됩니다.
/etc/system 파일의 값을 늘려도 메시지가 표시되지 않습니다. 검증은 부트 시와 메모리 추가 또는 삭제를 수반하는 동적 재구성 작업 중에만 수행됩니다.
메모리 잠금 요청이 실패하거나 SHARE_MMU 플래그를 사용하여 공유 메모리 세그먼트에 연결하려는 시도가 실패하지만 사용 가능한 메모리의 양이 충분할 경우에 변경합니다.
지나치게 높은 값을 지정하면 메모리 잠금 요청(mlock, mlockall 및 memcntl)이 불필요하게 실패할 수 있습니다. 자세한 내용은 mlock(3C), mlockall(3C) 및 memcntl(2)를 참조하십시오.
불안정
교착 상태를 방지하기 위해 유지해야 할 사용 가능한 최소 상주(교환 불가능) 메모리를 정의합니다. OS 코어에 사용될 메모리 부분을 예약하는 데 사용됩니다. 이런 식으로 제한된 페이지는 OS에서 사용 가능한 최대 메모리 양을 확인할 때 나타나지 않습니다.
부호 있는 정수
25
1 ~ 물리적 메모리
페이지
아니오
없습니다. 값을 너무 높게 지정하면 물리적 메모리가 낭비됩니다.
일반적으로 기본값이 적절합니다. 시스템에서 메모리를 잠그며 사용 가능한 메모리가 없다는 내용이 디버깅 정보에 나타나면 기본값을 늘려 보십시오.
불안정
부호 있는 정수
fastscan의 기본값은 다음 중 한 가지 방법으로 설정됩니다.
/etc/system 파일에 설정된 fastscan 값이 사용됩니다.
/etc/system 파일에 설정된 maxfastscan 값이 사용됩니다.
/etc/system 파일에 fastscan과 maxfastscan이 모두 설정되어 있지 않으면 시스템이 부트될 때 fastscan이 64MB로 설정됩니다. 몇 분 동안 시스템이 부트된 후 fastscan 값이 스캐너가 CPU의 10%를 사용하여 1초 동안 검색할 수 있는 페이지 수로 설정됩니다.
세 경우 모두 파생된 값이 시스템 메모리의 절반을 넘으면 시스템 메모리의 절반 수준으로 fastscan 값이 제한됩니다.
64MB ~ 시스템에 있는 물리적 메모리의 절반
페이지
예, 메모리를 추가하거나 삭제하는 동적 재구성 작업이 일어나지 않는 경우에 한해 동적입니다. 동적 재구성 작업이 일어날 경우 /etc/system에 제공된 값으로 값이 재설정되거나 새 물리적 메모리 값에서 값이 계산됩니다.
최대값은 64MB와 물리적 메모리의 1/2 중 더 작은 값입니다.
메모리가 부족할 때 더 공격적인 메모리 검사를 선호할 경우로, 특히 시스템의 메모리 요구량이 많거나 파일 I/O 작업이 대량으로 수행되는 경우에 변경합니다.
불안정
부호 있는 정수
물리적 메모리의 1/20과 100 중 더 작은 값
1 ~ fastscan/2
페이지
예, 메모리를 추가하거나 삭제하는 동적 재구성 작업이 일어나지 않는 경우에 한해 동적입니다. 동적 재구성 작업이 일어날 경우 /etc/system 파일에 제공된 값으로 값이 재설정되거나 새 물리적 메모리 값에서 값이 계산됩니다.
slowscan이 fastscan/2보다 크면 slowscan이 fastscan/2으로 재설정됩니다. 메시지는 표시되지 않습니다.
메모리가 부족할 때 더 공격적인 메모리 검사를 선호할 경우로, 특히 시스템의 메모리 요구량이 많을 경우에 변경합니다.
불안정
pageout이 사용할 수 있는 최소 CPU 백분율을 정의합니다. 이 매개변수는 페이지 스캐너가 사용할 수 있는 최대 시간을 결정하기 위한 기본 수단으로 사용됩니다.
부호 있는 정수
4
1 ~ 80
백분율
예
없음
CPU가 여러 개이고 메모리가 많은 시스템(메모리 요구량이 많은 시스템)에서 이 값을 늘리면 페이저가 메모리를 찾는 데 더 많은 시간을 사용할 수 있습니다.
불안정
Oracle Solaris OS에서는 침이 두 개인 시계 알고리즘을 사용하여 메모리가 부족할 때 재생 이용 후보 페이지를 찾습니다. 시계의 첫번째 침은 사용되지 않은 페이지로 표시된 메모리 내를 이동합니다. 두번째 침은 첫번째 침과 일정한 거리를 두고 메모리 내를 이동하여 페이지가 여전히 사용되지 않은 것으로 표시되는지 확인합니다. 여전히 사용되지 않은 것으로 표시되는 페이지가 있으면 재생 이용됩니다. 첫번째 침과 두번째 침 사이의 거리는 handspreadpages입니다.
부호 없는 long
fastscan
1 ~ 시스템의 최대 물리적 메모리 페이지 수
페이지
예, 이 매개변수를 사용하려면 커널 reset_hands 매개변수도 0이 아닌 값으로 설정해야 합니다. 새 handspreadpages 값이 인식되면 reset_hands가 0으로 설정됩니다.
물리적 메모리 양과 handspreadpages 값 중 더 작은 값으로 값이 설정됩니다.
페이지가 재생 이용되기 전에 상주할 수 있는 기간을 늘리려는 경우에 변경합니다. 이 값을 늘리면 두 침 사이의 거리가 넓어져 페이지가 재생 이용되기 전까지의 시간이 늘어납니다.
불안정
재사용을 위해 페이지를 저장하는 대신 I/O가 완료된 후 즉시 페이지를 해제하는 시스템 임계값 부분을 정의합니다. 임계값은 lotsfree + pages_before_pager입니다. NFS 환경에서는 메모리 압력이 높아질 때 비동기 작업을 줄이기 위한 목적으로도 이 임계값을 사용합니다.
부호 있는 정수
200
1 ~ 물리적 메모리 양
페이지
아니오
없음
한 번만 읽거나 쓰고 다시 참조되지 않는 페이지에 대해 대부분의 I/O가 수행되는 경우 이 매개변수를 변경합니다. 이 변수를 더 많은 양의 메모리로 설정하면 페이지를 해제 목록에 추가하는 작업이 계속됩니다.
시스템의 메모리 압력이 심각하게 높아질 경우에도 이 매개변수를 변경할 수 있습니다. 값이 클수록 메모리 압력에 대한 완충제 역할도 많아집니다.
불안정
페이징 시스템에서 대기열에 있을 수 있는 최대 페이지 I/O 요청 수를 정의합니다. 이 값을 4로 나누면 페이징 시스템에서 실제로 사용하는 최대 요청 수를 확인할 수 있습니다. 이 매개변수는 요청 수를 제한하고 프로세스 교체를 제어하는 데 사용됩니다.
부호 있는 정수
40
1 ~ 시스템 구조에 종속되지만 주로 컨트롤러 수, 디스크 수, 디스크 교체 크기 등의 I/O 부속 시스템에 따라 달라지는 가변 최대값
I/0
아니오
없음
페이저의 최대 I/O 요청 수는 요청 버퍼 목록의 크기로 제한되며 이 목록은 현재 크기가 256으로 설정되어 있습니다.
메모리를 더 빠르게 페이지 아웃하려면 이 매개변수의 값을 늘립니다. 값을 높게 지정하면 교체 장치가 하나 이상 구성되어 있거나 교체 장치가 스트라이프된 장치일 경우 메모리 압력으로부터의 복구가 더 빨라질 수도 있습니다. 기존 I/O 부속 시스템도 추가 I/O 부하를 처리할 수 있어야 합니다. 또한 교체 분할 영역과 응용 프로그램 파일이 한 디스크에 있을 경우 교체 I/O가 늘어나면 응용 프로그램 I/O 성능이 저하될 수 있다는 점에 유의하십시오.
불안정