Solaris OS용 Sun Cluster 시스템 관리 안내서

9장 CPU 사용 제어 구성

CPU의 사용을 제어하려면 CPU 제어 기능을 구성해야 합니다. CPU 제어 기능 구성에 대한 자세한 내용은 rg_properties(5) 매뉴얼 페이지를 참조하십시오. 이 장에서는 다음 주제에 대한 정보를 제공합니다.

CPU 제어 소개

Sun Cluster를 통해 CPU의 사용을 제어할 수 있습니다. Solaris 9 OS에서 선택할 수 있는 구성은 Solaris 10 OS에서 선택할 수 있는 구성과 동일하지 않습니다.

CPU 제어 기능은 Solaris OS에서 사용 가능한 기능을 기반으로 합니다. 영역, 프로젝트, 자원 풀, 프로세서 세트 및 클래스 예약에 대한 내용은 System Administration Guide: Solaris Containers-Resource Management and Solaris Zones을 참조하십시오.

SPARC: Solaris 9 OS에서 CPU 공유를 자원 그룹에 할당할 수 있습니다.

Solaris 10 OS에서는 다음을 수행할 수 있습니다.


주 –

Solaris 9 OS에만 적용된다는 표시가 없을 경우, 이 장의 모든 절차는 Solaris 10 OS와 관련한 내용입니다.


시나리오 선택

선택하는 구성 및 운영 체제의 버전에 따라 CPU 제어 레벨이 달라집니다. 이 장에 설명된 CPU 제어의 모든 측면은 automated로 설정되는 RG_SLM_TYPE 자원 그룹 등록 정보에 따라 달라집니다.

표 9–1에서는 사용 가능한 여러 구성 시나리오에 대해 설명합니다.

표 9–1 CPU 제어 시나리오

설명 

지침 

SPARC: Solaris 9 OS에서 실행되는 자원 그룹 

CPU 공유를 자원 그룹에 할당하여 project.cpu-shares에 대한 값을 제공합니다.

SPARC: Solaris 9 OS에서 CPU 사용을 제어하는 방법

Solaris 10 OS의 전역 영역에서 실행되는 자원 그룹 

CPU 공유를 자원 그룹 및 영역에 할당하여 project.cpu-shareszone.cpu-shares에 대한 값을 제공합니다.

비전역 영역의 구성 여부와 관계없이 이 절차를 수행할 수 있습니다. 

전역 영역에서 CPU 사용을 제어하는 방법

기본 프로세서 세트를 사용하여 비전역 영역에서 실행되는 자원 그룹 

CPU 공유를 자원 그룹 및 영역에 할당하여 project.cpu-shareszone.cpu-shares에 대한 값을 제공합니다.

프로세서 세트의 크기를 제어할 필요가 없을 경우 이 절차를 수행합니다. 

기본 프로세서 세트로 비전역 영역의 CPU 사용을 제어하는 방법

전용 프로세서 세트를 사용하여 비전역 영역에서 실행되는 자원 그룹 

자원 그룹에 CPU 공유를 할당하여 project.cpu-shares, zone.cpu-shares 및 전용 프로세서 세트의 최대 프로세서 수에 대한 값을 제공합니다.

전용 프로세서 세트의 최소 프로세서 세트 수를 설정합니다. 

CPU 공유와 프로세서 세트의 크기를 제어하고자 할 경우 이 절차를 수행합니다. 이 제어는 전용 프로세서 세트를 사용하여 비전역 영역에서만 수행할 수 있습니다. 

전용 프로세서 세트로 비전역 영역의 CPU 사용을 제어하는 방법

페어 쉐어 스케줄러

이 절차에서 CPU 공유를 자원 그룹에 할당하는 첫 번째 단계는 시스템의 스케줄러를 페어 쉐어 스케줄러(FSS)로 설정하는 것입니다. 기본적으로 Solaris OS의 예약 클래스는 시간 공유 예약(TS)입니다. 스케줄러를 FSS로 설정하여 공유 구성을 적용합니다.

선택하는 스케줄러 클래스와 관계없이 전용 프로세서 세트를 만들 수 있습니다.

CPU 제어 구성

이 절에는 다음 절차가 포함됩니다.

ProcedureSPARC: Solaris 9 OS에서 CPU 사용을 제어하는 방법

이 절차를 수행하여 Solaris OS에서 실행 중인 클러스터의 자원 그룹에 CPU 공유를 할당합니다.

자원 그룹에 CPU 공유를 할당하면 자원 그룹의 자원을 시작할 때 Sun Cluster가 다음 작업을 수행합니다.

CPU 제어 기능 구성에 대한 자세한 내용은 rg_properties(5) 매뉴얼 페이지를 참조하십시오.

  1. 시스템의 스케줄러를 페어 쉐어 스케줄러(FSS)로 설정합니다.


    # dispadmin -d FSS
    

    다음 부트 시 FSS가 기본 스케줄러가 됩니다. 이 구성을 즉시 적용하려면 priocntl 명령을 사용합니다.


    # priocntl -s -c FSS
    

    priocntldispadmin 명령을 조합하여 사용하면 즉시 기본 스케줄러가 FSS로 설정되고 이 설정은 재부트 후에도 지속됩니다. 예약 클래스 설정에 대한 내용은 dispadmin(1M)priocntl(1) 매뉴얼 페이지를 참조하십시오.


    주 –

    FSS가 기본 스케줄러가 아닐 경우, CPU 공유 할당은 적용되지 않습니다.


  2. CPU 제어 기능을 구성합니다.


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] resource_group_name
    
    -p RG_SLM_TYPE=automated

    CPU 사용을 제어하고 시스템 자원 관리를 위한 Solaris OS의 일부 구성 단계를 자동으로 수행할 수 있도록 해줍니다.

    -p RG_SLM_CPU-SHARES=value

    자원 그룹 고유 프로젝트인 project.cpu-shares에 할당할 CPU 공유의 수를 지정합니다.

    resource_group_name

    자원 그룹의 이름을 지정합니다.

    이 단계에서는 자원 그룹을 생성합니다. 또는 clresourcegroup set 명령을 사용하여 기존의 자원 그룹을 수정할 수 있습니다.

  3. 구성 변경 사항을 활성화합니다.


    # clresourcegroup online -M resource_group_name
    
    resource_group_name

    자원 그룹의 이름을 지정합니다.


    주 –

    SCSLM_resource_group_name 프로젝트를 제거하거나 수정하지 마십시오. project.max-lwps 등록 정보를 구성하는 등의 방법을 통해 수동으로 더 많은 자원 제어를 프로젝트에 추가할 수 있습니다. 자세한 내용은 projmod(1M) 매뉴얼 페이지를 참조하십시오.


Procedure전역 영역에서 CPU 사용을 제어하는 방법

이 절차를 수행하여 전역 영역에서 실행될 자원 그룹에 CPU 공유를 할당합니다.

자원 그룹에 CPU 공유를 할당하면 Sun Cluster가 전역 영역에서 자원 그룹의 자원을 시작할 때 다음 작업을 수행합니다.

CPU 제어 기능 구성에 대한 자세한 내용은 rg_properties(5) 매뉴얼 페이지를 참조하십시오.

  1. 시스템의 기본 스케줄러를 페어 쉐어 스케줄러(FSS)로 설정합니다.


    # dispadmin -d FSS
    

    다음 부트 시 FSS가 기본 스케줄러가 됩니다. 이 구성을 즉시 적용하려면 priocntl 명령을 사용합니다.


    # priocntl -s -C FSS
    

    priocntldispadmin 명령을 조합하여 사용하면 즉시 기본 스케줄러가 FSS로 설정되고 이 설정은 재부트 후에도 지속됩니다. 예약 클래스 설정에 대한 내용은 dispadmin(1M)priocntl(1) 매뉴얼 페이지를 참조하십시오.


    주 –

    FSS가 기본 스케줄러가 아닐 경우, CPU 공유 할당은 적용되지 않습니다.


  2. 각 노드에서 CPU 제어를 사용하려면 전역 영역에 대한 공유 수 및 기본 프로세서 세트에서 사용 가능한 최소 CPU 수를 구성합니다.

    이러한 매개 변수를 설정하면 전역 영역에서 실행 중인 프로세스와 비전역 영역에서 실행 중인 프로세스가 경쟁하는 것을 방지하는 데 유용합니다. globalzonesharesdefaultpsetmin 등록 정보에 값을 할당하지 않을 경우, 이러한 등록 정보의 기본값이 사용됩니다.


    # clnode set [-p globalzoneshares=integer] \
    [-p defaultpsetmin=integer] \
    node
    
    -p defaultpsetmin=defaultpsetmininteger

    기본 프로세서 세트에서 사용 가능한 최소 CPU 수를 설정합니다. 기본값은 1입니다.

    -p globalzoneshares=integer

    전역 영역에 할당되는 공유 수를 설정합니다. 기본값은 1입니다.

    node

    설정할 등록 정보의 노드를 지정합니다.

    이러한 등록 정보를 설정할 때에는 전역 영역에 대한 등록 정보를 설정하게 됩니다. 이러한 등록 정보를 설정하지 않을 경우, 비전역 영역의 RG_SLM_PSET_TYPE 등록 정보의 이점을 활용할 수 없습니다.

  3. 해당 등록 정보를 제대로 설정했는지 확인합니다.


    # clnode show node
    

    지정하는 노드에 대해 clnode 명령은 등록 정보 세트와 이러한 등록 정보에 설정되는 값을 출력합니다. clnode를 사용하여 CPU 제어 등록 정보를 설정하지 않을 경우, 기본값이 사용됩니다.

  4. CPU 제어 기능을 구성합니다.


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] resource_group_name
    
    -p RG_SLM_TYPE=automated

    CPU 사용을 제어하고 시스템 자원 관리를 위한 Solaris OS의 일부 구성 단계를 자동으로 수행할 수 있도록 해줍니다.

    -p RG_SLM_CPU_SHARES=value

    project.cpu-shares 자원 그룹 고유 프로젝트에 할당되는 CPU 공유의 수를 지정하고 zone.cpu-shares 전역 영역에 할당되는 CPU 공유의 수를 결정합니다.

    resource_group_name

    자원 그룹의 이름을 지정합니다.

    이 절차에서는 RG_SLM_PSET_TYPE 등록 정보를 설정하지 마십시오. 전역 영역에서 이 등록 정보는 default 값을 사용합니다.

    이 단계에서는 자원 그룹을 생성합니다. 또는 clresourcegroup set 명령을 사용하여 기존의 자원 그룹을 수정할 수 있습니다.

  5. 구성 변경 사항을 활성화합니다.


    # clresourcegroup online -M resource_group_name
    
    resource_group_name

    자원 그룹의 이름을 지정합니다.


    주 –

    SCSLM_resource_group_name 프로젝트를 제거하거나 수정하지 마십시오. 수동으로 더 많은 자원 제어를 프로젝트에 추가할 수 있습니다. (예: project.max-lwps 등록 정보 구성) 자세한 내용은 projmod(1M) 매뉴얼 페이지를 참조하십시오.


Procedure기본 프로세서 세트로 비전역 영역의 CPU 사용을 제어하는 방법

비전역 영역의 자원 그룹에 대해 CPU 공유를 할당하려는 경우, 이 절차를 수행합니다. 그러나 전용 프로세서 세트를 만들 필요는 없습니다.

자원 그룹에 CPU 공유를 할당하면 Sun Cluster가 비전역 영역에서 해당 자원 그룹의 자원을 시작할 때 다음 작업을 수행합니다.

CPU 제어 기능 구성에 대한 자세한 내용은 rg_properties(5) 매뉴얼 페이지를 참조하십시오.

  1. 시스템의 기본 스케줄러를 페어 쉐어 스케줄러(FSS)로 설정합니다.


    # dispadmin -d FSS
    

    다음 부트 시 FSS가 기본 스케줄러가 됩니다. 이 구성을 즉시 적용하려면 priocntl 명령을 사용합니다.


    # priocntl -s -C FSS
    

    priocntldispadmin 명령을 조합하여 사용하면 즉시 기본 스케줄러가 FSS로 설정되고 이 설정은 재부트 후에도 지속됩니다. 예약 클래스 설정에 대한 내용은 dispadmin(1M)priocntl(1) 매뉴얼 페이지를 참조하십시오.


    주 –

    FSS가 기본 스케줄러가 아닐 경우, CPU 공유 할당은 적용되지 않습니다.


  2. 각 노드에서 CPU 제어를 사용하려면 전역 영역에 대한 공유 수 및 기본 프로세서 세트에서 사용 가능한 최소 CPU 수를 구성합니다.

    이러한 매개 변수를 설정하면 전역 영역에서 실행 중인 프로세스와 비전역 영역에서 실행 중인 프로세스가 경쟁하는 것을 방지하는 데 유용합니다. globalzonesharesdefaultpsetmin 등록 정보에 값을 할당하지 않을 경우, 이러한 등록 정보의 기본값이 사용됩니다.


    # clnode set [-p globalzoneshares=integer] \
    [-p defaultpsetmin=integer] \
    node
    
    -p globalzoneshares=integer

    전역 영역에 할당되는 공유 수를 설정합니다. 기본값은 1입니다.

    -p defaultpsetmin=defaultpsetmininteger

    기본 프로세서 세트에서 사용 가능한 최소 CPU 수를 설정합니다. 기본값은 1입니다.

    node

    설정할 등록 정보의 노드를 식별합니다.

    이러한 등록 정보를 설정할 때에는 전역 영역에 대한 등록 정보를 설정하게 됩니다.

  3. 이러한 등록 정보를 제대로 설정했는지 확인합니다.


    # clnode show node
    

    지정하는 노드에 대해 clnode 명령은 등록 정보 세트와 이러한 등록 정보에 설정되는 값을 출력합니다. clnode를 사용하여 CPU 제어 등록 정보를 설정하지 않을 경우, 기본값이 사용됩니다.

  4. CPU 제어 기능을 구성합니다.


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] resource_group_name
    
    -p RG_SLM_TYPE=automated

    CPU 사용을 제어하고 시스템 자원 관리를 위한 Solaris OS의 일부 구성 단계를 자동으로 수행할 수 있도록 해줍니다.

    -p RG_SLM_CPU_SHARES=value

    자원 그룹 고유 프로젝트(project.cpu-shares)에 할당되는 CPU 공유의 수를 지정하고 비전역 영역(zone.cpu-shares)에 할당되는 CPU 공유의 수를 결정합니다.

    resource_group_name

    자원 그룹의 이름을 지정합니다.

    이 단계에서는 자원 그룹을 생성합니다. 또는 clresourcegroup set 명령을 사용하여 기존의 자원 그룹을 수정할 수 있습니다.

    기본 풀 이외의 풀이 영역 구성에 있거나 영역이 기본 풀 이외의 풀에 동적으로 바인딩되었을 경우 비전역 영역에서 RG_SLM_TYPEautomated로 설정할 수 없습니다. 영역 구성 및 풀 바인딩에 대한 내용은 zonecfg(1M)poolbind(1M) 매뉴얼 페이지를 각각 참조하십시오. 다음과 같이 영역 구성을 확인합니다.


    # zonecfg -z zone_name info pool
    

    주 –

    HAStoragePlus와 같은 자원 또는 LogicalHostname 자원은 비전역 영역에서 시작되도록 구성되었지만 GLOBAL_ZONE 등록 정보가 TRUE로 설정되면 전역 영역에서 시작됩니다. RG_SLM_TYPE 등록 정보를 automated로 설정하더라도, 이 자원 그룹은 CPU 공유 구성의 이점을 활용하지 못하고 RG_SLM_TYPE이 수동으로 설정되어 자원 그룹에 있는 것처럼 간주됩니다.


    이 절차에서는 RG_SLM_PSET_TYPE 등록 정보를 설정하지 마십시오. Sun Cluster는 기본 프로세서 세트를 사용합니다.

  5. 구성 변경 사항을 활성화합니다.


    # clresourcegroup online -M resource_group_name
    
    resource_group_name

    자원 그룹의 이름을 지정합니다.

    RG_SLM_PSET_TYPEdefault로 설정하면 Sun Cluster는 SCSLM_pool_zone_name이라는 풀을 생성하지만 프로세서 세트를 생성하지는 않습니다. 이러한 경우, SCSLM_pool_zone_name은 기본 프로세서 세트와 연결됩니다.

    온라인 자원 그룹이 더 이상 비전역 영역의 CPU 제어에 구성되지 않을 경우, 비전역 영역에 대한 CPU 공유 값은 영역 구성의 zone.cpu-shares 값을 취합니다. 이 매개 변수의 기본값은 1입니다. 영역 구성에 대한 자세한 내용은 zonecfg(1M) 매뉴얼 페이지를 참조하십시오.


    주 –

    SCSLM_resource_group_name 프로젝트를 제거하거나 수정하지 마십시오. project.max-lwps 등록 정보를 구성하는 등의 방법을 통해 수동으로 더 많은 자원 제어를 프로젝트에 추가할 수 있습니다. 자세한 내용은 projmod(1M) 매뉴얼 페이지를 참조하십시오.


Procedure전용 프로세서 세트로 비전역 영역의 CPU 사용을 제어하는 방법

자원 그룹을 전용 프로세서 세트에서 실행하려는 경우 이 절차를 수행합니다.

자원 그룹이 전용 프로세서 세트에서 실행되도록 구성될 경우, Sun Cluster는 비전역 영역에 있는 자원 그룹에서 자원을 시작할 때 다음 작업을 수행합니다.

  1. 시스템의 기본 스케줄러를 페어 쉐어 스케줄러(FSS)로 설정합니다.


    # dispadmin -d FSS
    

    다음 부트 시 FSS가 기본 스케줄러가 됩니다. 이 구성을 즉시 적용하려면 priocntl 명령을 사용합니다.


    # priocntl -s -C FSS
    

    priocntldispadmin 명령을 조합하여 사용하면 즉시 기본 스케줄러가 FSS로 설정되고 이 설정은 재부트 후에도 지속됩니다. 예약 클래스 설정에 대한 내용은 dispadmin(1M)priocntl(1) 매뉴얼 페이지를 참조하십시오.


    주 –

    FSS가 기본 스케줄러가 아닐 경우, CPU 공유 할당은 적용되지 않습니다.


  2. 각 노드에서 CPU 제어를 사용하려면 전역 영역에 대한 공유 수 및 기본 프로세서 세트에서 사용 가능한 최소 CPU 수를 구성합니다.

    이러한 매개 변수를 설정하면 전역 영역에서 실행 중인 프로세스와 비전역 영역에서 실행 중인 프로세스가 경쟁하는 것을 방지하는 데 유용합니다. globalzonesharesdefaultpsetmin 등록 정보에 값을 할당하지 않을 경우, 이러한 등록 정보의 기본값이 사용됩니다.


    # clnode set  [-p globalzoneshares=integer] \
    [-p defaultpsetmin=integer] \
    node
    
    -p defaultpsetmin=defaultpsetmininteger

    기본 프로세서 세트에서 사용 가능한 최소 CPU 수를 설정합니다. 기본값은 1입니다.

    -p globalzoneshares=integer

    전역 영역에 할당되는 공유 수를 설정합니다. 기본값은 1입니다.

    node

    설정할 등록 정보의 노드를 식별합니다.

    이러한 등록 정보를 설정할 때에는 전역 영역에 대한 등록 정보를 설정하게 됩니다.

  3. 이러한 등록 정보를 제대로 설정했는지 확인합니다.


    # clnode show node
    

    지정하는 노드에 대해 clnode 명령은 등록 정보 세트와 이러한 등록 정보에 설정되는 값을 출력합니다. clnode를 사용하여 CPU 제어 등록 정보를 설정하지 않을 경우, 기본값이 사용됩니다.

  4. CPU 제어 기능을 구성합니다.


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] \
    -p -y RG_SLM_PSET_TYPE=value \
    [-p RG_SLM_PSET_MIN=value] resource_group_name
    
    -p RG_SLM_TYPE=automated

    CPU 제어 사용을 제어하고 시스템 자원 관리를 위한 Solaris OS의 일부 구성 단계를 자동으로 수행할 수 있도록 해줍니다.

    -p RG_SLM_CPU_SHARES=value

    자원 그룹 고유 프로젝트에 할당되는 CPU 프로젝트의 수(project.cpu-shares)를 지정하고 비전역 영역에 할당되는 CPU 공유 수(zone.cpu-shares)와 프로세서 세트의 최대 프로세서 수를 결정합니다.

    -p RG_SLM_PSET_TYPE=value

    전용 프로세서 세트의 생성을 활성화합니다. 전용 프로세서 세트를 생성하기 위해 이 등록 정보를 strong 또는 weak로 설정할 수 있습니다. strongweak 값은 상호 배타적입니다. 즉, 동일한 영역에서 자원 그룹 중 일부는 strong으로, 나머지는 weak로 구성하는 방식을 사용할 수 없습니다.

    -p RG_SLM_PSET_MIN=value

    프로세서 세트의 최소 프로세서 수를 결정합니다.

    resource_group_name

    자원 그룹의 이름을 지정합니다.

    이 단계에서는 자원 그룹을 생성합니다. 또는 clresourcegroup set 명령을 사용하여 기존의 자원 그룹을 수정할 수 있습니다.

    기본 풀 이외의 풀이 영역 구성에 있거나 영역이 기본 풀 이외의 풀에 동적으로 바인딩되었을 경우 비전역 영역에서 RG_SLM_TYPEautomated로 설정할 수 없습니다. 영역 구성 및 풀 바인딩에 대한 내용은 zonecfg(1M)poolbind(1M) 매뉴얼 페이지를 각각 참조하십시오. 다음과 같이 영역 구성을 확인합니다.


    # zonecfg -z zone_name info pool
    

    주 –

    HAStoragePlus와 같은 자원 또는 LogicalHostname 자원은 비전역 영역에서 시작되도록 구성되었지만 GLOBAL_ZONE 등록 정보가 TRUE로 설정되면 전역 영역에서 시작됩니다. RG_SLM_TYPE 등록 정보를 automated로 설정하더라도, 이 자원 그룹은 CPU 공유 및 전용 프로세서 세트 구성의 이점을 활용하지 못하고 RG_SLM_TYPE이 수동으로 설정되어 자원 그룹에 있는 것처럼 간주됩니다.


  5. 구성 변경 사항을 활성화합니다.

    resource_group_name

    자원 그룹의 이름을 지정합니다.


    주 –

    SCSLM_resource_group_name 프로젝트를 제거하거나 수정하지 마십시오. project.max-lwps 등록 정보를 구성하는 등의 방법을 통해 수동으로 더 많은 자원 제어를 프로젝트에 추가할 수 있습니다. 자세한 내용은 projmod(1M) 매뉴얼 페이지를 참조하십시오.


    자원 그룹이 온라인일 때 RG_SLM_CPU_SHARESRG_SLM_PSET_MIN에 변경된 사항은 동적으로 고려됩니다. 그러나 RG_SLM_PSET_TYPEstrong으로 설정되고 변경 사항을 수용할 수 있는 충분한 CPU를 사용할 수 없는 경우, RG_SLM_PSET_MIN에 대해 요청된 변경 사항은 적용되지 않습니다. 이러한 경우 경고 메시지가 표시됩니다. 다음 스위치오버 시, RG_SLM_PSET_MIN에 대해 구성한 값을 받아들일 수 있을 만큼 CPU가 충분하지 않으면 CPU 부족 현상이 일어나고 이로 인해 오류가 발생할 수 있습니다.

    온라인 자원 그룹이 더 이상 비전역 영역의 CPU 제어에 구성되지 않을 경우, 비전역 영역에 대한 CPU 공유 값은 zone.cpu-shares 값을 취합니다. 이 매개 변수의 기본값은 1입니다.