탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 관리: Oracle Solaris Zones, Oracle Solaris 10 Zones 및 리소스 관리 Oracle Solaris 11 Information Library (한국어) |
8. FSS(Fair Share Scheduler)(개요)
9. FSS(Fair Share Scheduler) 관리(작업)
10. 리소스 상한값 지원 데몬을 사용한 물리적 메모리 제어(개요)
18. 비전역 영역, 설치, 종료, 정지 및 복제 정보(개요)
19. 비전역 영역 설치, 부트, 종료, 정지, 제거 및 복제(작업)
22. 영역 마이그레이션 및 zonep2vchk 도구 정보
23. Oracle Solaris 시스템 마이그레이션 및 비전역 영역(작업) 마이그레이션
24. 영역이 설치된 Oracle Solaris 11 시스템의 자동 설치 및 패키지 정보
26. Oracle Solaris Zones 관리(작업)
28. 그 밖의 기타 Oracle Solaris Zones 문제 해결
29. Oracle Solaris 10 Zones 소개
30. Oracle Solaris 10 시스템 액세스 및 아카이브 만들기
리소스 제어 기능은 project 데이터베이스를 통해 구성됩니다. 2 장프로젝트 및 작업(개요)을 참조하십시오. 리소스 제어 및 기타 속성은 project 데이터베이스 항목의 최종 필드에 설정됩니다. 각 리소스 제어와 연결된 값은 괄호 안에 지정되며 쉼표로 구분된 일반 텍스트로 나타납니다. 괄호 안의 값은 “동작 절(action clause)”을 구성합니다. 각 동작 절은 권한 레벨, 임계치 값 및 특정 임계치와 연결된 동작으로 구성됩니다. 각 리소스 제어에는 여러 개의 동작 절이 쉼표로 구분되어 있을 수 있습니다. 다음 항목은 프로젝트 엔티티에 대한 작업별 경량 프로세스 제한 및 프로세스별 최대 CPU 시간 제한을 정의합니다. process.max-cpu-time은 1시간 동안 프로세스가 실행된 후 SIGTERM 프로세스를 전송하며, 프로세스가 총 1시간 1분 동안 계속 실행된 경우 SIGKILL을 전송합니다. 표 6-3을 참조하십시오.
development:101:Developers:::task.max-lwps=(privileged,10,deny); process.max-cpu-time=(basic,3600,signal=TERM),(priv,3660,signal=KILL) typed as one line
rctladm 명령을 사용하면 전역 범위에서 리소스 제어 기능에 대해 런타임으로 질의하고 수정할 수 있습니다. prctl 명령을 사용하면 로컬 범위에서 리소스 제어 기능에 대해 런타임으로 질문 및 수정을 수행할 수 있습니다.
자세한 내용은 리소스 제어 값에 대한 전역 및 로컬 동작, rctladm(1M) 및 prctl(1)을 참조하십시오.
주 - 영역이 설치된 시스템의 비전역 영역에서는 rctladm을 사용하여 설정을 수정할 수 없습니다. 비전역 영역에서는 rctladm을 사용하여 각 리소스 제어의 전역 로깅 상태를 볼 수 있습니다.
이 릴리스에서 사용할 수 있는 표준 리소스 제어의 목록이 다음 표에 표시됩니다.
이 표는 각 컨트롤에 의해 제한된 리소스를 설명합니다. 이 표는 해당 리소스에 대한 project 데이터베이스에서 사용되는 기본 단위를 식별합니다. 기본 단위에는 두 가지 유형이 있습니다.
수량은 제한된 양을 나타냅니다.
인덱스는 최대 유효 식별자를 나타냅니다.
따라서 project.cpu-shares는 프로젝트에 부여된 할당 수를 지정합니다. process.max-file-descriptor는 open(2) 시스템 호출을 통해 프로세스에 지정할 수 있는 최고 파일 번호를 지정합니다.
표 6-1 표준 프로젝트, 작업 및 프로세스 리소스 제어
|
리소스 제어가 설정되지 않았거나 변경되지 않은 시스템에서 리소스 제어의 기본값을 표시할 수 있습니다. 이러한 시스템의 /etc/system 또는 project 데이터베이스에는 기본값이 아닌 항목이 들어 있지 않습니다. 값을 표시하려면 prctl 명령을 사용합니다.
영역 전체 리소스 제어는 영역 내에서 모든 프로세스 항목의 총 리소스 사용을 제한합니다. 영역 전체 리소스 제어는 영역 전체 리소스 제어 설정 및 영역 구성 방법에 설명된 대로 전역 등록 정보 이름을 사용하여 설정할 수도 있습니다.
표 6-2 영역 리소스 제어
|
영역 전체 리소스 제어 구성에 대한 자세한 내용은 리소스 유형 등록 정보 및 영역 구성 방법을 참조하십시오.
영역 전체 리소스 제어를 전역 영역에 적용할 수 있습니다. 자세한 내용은 영역이 설치된 Oracle Solaris 시스템에서 Fair Share Scheduler 사용을 참조하십시오.
모든 리소스 제어마다 리소스 제어 형식을 식별하는 전역 플래그가 정의되어 있습니다. 이러한 플래그는 시스템에서 prctl 명령과 같은 응용 프로그램에 기본 형식 정보를 전달하는 데 사용됩니다. 응용 프로그램에서는 이 정보를 사용하여 다음을 결정합니다.
각 리소스 제어에 적합한 단위 문자열
배율 값을 해석할 때 사용할 올바른 배율
다음 전역 플래그를 사용할 수 있습니다.
|
배율 값은 리소스 제어와 함께 사용할 수 있습니다. 다음 예에서는 배율 임계치 값을 보여 줍니다.
task.max-lwps=(priv,1K,deny)
주 - 단위 수정자는 prctl, projadd 및 projmod 명령에 의해 허용됩니다. project 데이터베이스 자체에서는 단위 수정자를 사용할 수 없습니다.
리소스 제어에 대한 임계치 값은 로컬 동작을 트리거하거나 로깅과 같은 전역 동작이 발생할 수 있는 적용 지점을 구성합니다.
리소스 제어에 대한 각 임계치 값은 권한 레벨과 연결되어야 합니다. 권한 레벨은 다음 세 가지 유형 중 하나여야 합니다.
기본 유형 - 호출 프로세스의 소유자가 수정할 수 있습니다.
권한 부여 - 권한 부여된(루트) 호출자만 수정할 수 있습니다.
시스템 - 운영 체제 인스턴스 기간 동안 고정됩니다.
리소스 제어에는 시스템이나 리소스 공급자가 정의하는 하나의 시스템 값이 지정됩니다. 시스템 값은 운영 체제의 현재 구현에서 제공할 수 있는 리소스의 양을 나타냅니다.
권한 부여된 값의 수를 정의할 수 있으며 하나의 기본 값만 허용됩니다. 권한 값을 지정하지 않고 수행되는 작업에는 기본적으로 기본 권한이 할당됩니다.
리소스 제어 값에 대한 권한 레벨은 RCTL_BASIC, RCTL_PRIVILEGED 또는 RCTL_SYSTEM으로 리소스 제어 블록의 권한 필드에 정의되어 있습니다. 자세한 내용은 setrctl(2)를 참조하십시오. prctl 명령을 사용하여 기본 및 권한 부여된 레벨과 연결된 값을 수정할 수 있습니다.
리소스 제어 값에 대한 동작 범주에는 전역과 로컬의 두 가지가 있습니다.
전역 동작은 시스템의 모든 리소스 제어에 대한 리소스 제어 값에 적용됩니다. rctladm(1M) 매뉴얼 페이지에 설명된 rctladm 명령을 사용하여 다음 동작을 수행할 수 있습니다.
활성 시스템 리소스 제어의 전역 상태 표시
전역 로깅 동작 설정
리소스 제어에 대한 전역 로깅 동작을 사용 또는 사용 안함으로 설정할 수 있습니다. 심각도 레벨을 지정하여(syslog=level) syslog 동작을 특정 레벨로 설정할 수 있습니다. level에 사용할 수 있는 설정은 다음과 같습니다.
debug
info
notice
warning
err
crit
alert
emerg
기본적으로 리소스 제어 위반에 대한 전역 로깅은 없습니다. n/a 레벨은 전역 동작을 구성할 수 없는 리소스 제어를 나타냅니다.
제어 값을 초과하려는 프로세스에 대해 로컬 동작이 수행됩니다. 리소스 제어에 설정된 각 임계값에 대해 하나 이상의 동작을 연결할 수 있습니다. 로컬 동작에는 none, deny 및 signal=의 세 가지 유형이 있습니다. 이러한 세 가지 동작은 다음과 같이 사용됩니다.
임계치보다 많은 양의 리소스 요청에 대해 동작이 수행되지 않습니다. 이 동작은 응용 프로그램 진행에 영향을 주지 않고 리소스 사용을 모니터링하는 데 유용합니다. 또한 임계치를 초과하는 프로세스에 영향을 주지 않지만 리소스 제어가 초과될 때 표시되는 전역 메시지를 사용으로 설정할 수도 있습니다.
임계치보다 많은 양의 리소스 요청을 거부할 수 있습니다. 예를 들어 task.max-lwps 리소스 제어와 deny 동작을 사용하면 새 프로세스가 제어 값을 초과할 경우 fork 시스템 호출이 실패합니다. fork(2) 매뉴얼 페이지를 참조하십시오.
리소스 제어를 초과할 때 전역 단일 메시지 동작을 사용으로 설정할 수 있습니다. 임계치 값이 초과될 때 신호가 해당 프로세스로 전송됩니다. 해당 프로세스가 추가 리소스를 사용할 경우 추가 신호가 전송되지 않습니다. 사용할 수 있는 신호는 표 6-3에 나열되어 있습니다.
일부 동작은 리소스 제어에 적용되지 않을 수 있습니다. 예를 들어 프로세스는 자신이 구성원으로 있는 프로젝트에 지정된 CPU 할당 수를 초과할 수 없습니다. 따라서 project.cpu-shares 리소스 제어에는 거부(deny) 동작이 허용되지 않습니다.
구현 제한으로 인해 각 컨트롤의 전역 등록 정보는 임계치 값에 설정할 수 있는 사용 가능한 동작의 범위를 제한할 수 있습니다. rctladm(1M) 매뉴얼 페이지를 참조하십시오. 사용 가능한 신호 동작 목록은 다음 표에 나와 있습니다. 신호에 대한 자세한 내용은 signal(3HEAD) 매뉴얼 페이지를 참조하십시오.
표 6-3 리소스 제어 값에 사용할 수 있는 신호
|
시스템의 각 리소스 제어에는 연결된 등록 정보 집합이 있습니다. 이 등록 정보 집합은 플래그 집합으로 정의되며, 플래그 집합은 해당 리소스의 제어된 모든 인스턴스와 연결되어 있습니다. 전역 플래그를 수정할 수 없지만, rctladm 또는 getrctl 시스템 호출을 사용하여 플래그를 검색할 수 있습니다.
로컬 플래그는 특정 프로세스나 프로세스 컬렉션에 대해 해당 리소스 제어의 특정 임계치 값에 대한 기본 동작 및 구성을 정의합니다. 한 임계치 값에 대한 로컬 플래그는 동일한 리소스 제어에 대한 다른 정의된 임계치 값의 동작에 영향을 주지 않습니다. 하지만 전역 플래그는 특정 컨트롤과 연결된 모든 값에 대한 동작에 영향을 줍니다. 로컬 플래그는 prctl 명령이나 setrctl 시스템 호출을 통해 해당 전역 플래그가 제공하는 제약 조건 내에서 수정할 수 있습니다. setrctl(2)를 참조하십시오.
전체 로컬 플래그/전역 플래그 목록과 그에 대한 정의는 rctlblk_set_value(3C)를 참조하십시오.
특정 리소스 제어에 대한 임계치 값에 도달할 때의 시스템 동작을 알아보려면 rctladm을 사용하여 해당 리소스 제어에 대한 전역 플래그를 표시합니다. 예를 들어, process.max-cpu-time의 값을 표시하려면 다음을 입력합니다.
$ rctladm process.max-cpu-time process.max-cpu-time syslog=off [ lowerable no-deny cpu-time inf seconds ]
전역 플래그는 다음을 나타냅니다.
이 컨트롤에 대한 권한 부여된 값을 낮추는 데 수퍼 유저 권한은 필요하지 않습니다.
임계치 값을 초과하더라도 리소스에 대한 액세스가 거부되지 않습니다.
이 리소스의 임계치 값에 도달할 때 SIGXCPU가 전송될 수 있습니다.
리소스 제어에 대한 시간 값입니다.
권한 유형이 basic인 리소스 제어 값은 설정할 수 없습니다. 권한 부여된 리소스 제어 값만 허용됩니다.
리소스 제어 값에는 로컬 신호 작업을 설정할 수 없습니다.
이 리소스 제어에 대해 전역 syslog 메시지 작업은 설정할 수 없습니다.
임계치 값을 초과하는 경우 리소스에 대한 요청을 항상 거부합니다.
리소스 제어에 대한 개수(정수) 값입니다.
리소스 제어의 크기 단위입니다.
prctl 명령을 사용하여 리소스 제어에 대한 로컬 값과 작업을 표시합니다.
$ prctl -n process.max-cpu-time $$ process 353939: -ksh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-cpu-time privileged 18.4Es inf signal=XCPU - system 18.4Es inf none
두 임계치 값에 대해 max (RCTL_LOCAL_MAXIMAL) 플래그가 설정되며, 이 리소스 제어에 대해 inf (RCTL_GLOBAL_INFINITE) 플래그가 정의됩니다. inf 값의 수량에는 제한이 없습니다. 값이 적용되지 않습니다. 따라서 구성된 대로 두 임계치 수량은 결코 초과되지 않는 무한 값을 나타냅니다.
하나의 리소스에 두 개 이상의 리소스 제어가 있을 수 있습니다. 프로세스 모델의 각 포함 레벨에 리소스 제어가 있을 수 있습니다. 리소스 제어가 서로 다른 컨테이너 레벨에서 동일 리소스에 대해 활성 상태이면 최소 컨테이너 컨트롤이 먼저 적용됩니다. 따라서 두 컨트롤(task.max-cpu-time 및 process.max-cpu-time)이 동시에 적용될 경우 process.max-cpu-time보다 task.max-cpu-time에 대해 작업이 먼저 수행됩니다.
그림 6-1 프로세스 컬렉션, 컨테이너 관계 및 관련 리소스 제어 집합
대체로 프로세스의 리소스 사용은 알 수 없습니다. 자세한 정보를 보려면 rctladm 명령과 함께 사용할 수 있는 전역 리소스 제어 동작을 사용해 보십시오. rctladm을 사용하여 리소스 제어에 대해 syslog 작업을 설정합니다. 그런 다음 해당 리소스 제어에서 관리하는 엔티티가 임계치 값을 만나면 구성된 로깅 레벨에서 시스템 메시지가 기록됩니다. 자세한 내용은 7 장리소스 제어 관리(작업) 및 rctladm(1M) 매뉴얼 페이지를 참조하십시오.