Sun Cluster のシステム管理 (Solaris OS 版)

第 10 章 CPU 使用率の制御の構成

CPU の使用率を制御したい場合は、CPU 制御機能を構成します。CPU 制御機能の構成についての詳細は、rg_properties(5) のマニュアルページを参照してください。この章では、次のトピックについて説明します。

CPU 制御の概要

Sun Cluster ソフトウェアでは CPU の使用量を制御できます。Solaris 9 OS で可能な構成の選択肢は、Solaris 10 OS で可能な選択肢とは同じではありません。

CPU 制御機能は、Solaris OS で利用可能な機能に基づいて構築されています。ゾーン、プロジェクト、リソースプール、プロセッサセット、およびスケジューリングクラスについては、『Solaris のシステム管理 (Solaris コンテナ : 資源管理と Solaris ゾーン)』を参照してください。

SPARC: Solaris 9 OS では、CPU シェアをリソースグループに割り当てることができます。

Solaris 10 OS では、次の作業を実行できます。


注 –

この章のすべての手順は、 Solaris 9 OS に固有であると明記していないかぎり、Solaris 10 OS で使用するためのものです。


シナリオの選択

構成の選択肢と、選択するオペレーティングシステムのバージョンに応じて、さまざまなレベルの CPU 制御を行うことができます。この章で説明する CPU 制御のすべての局面は、リソースグループプロパティー RG_SLM_TYPEautomated に設定されていることに依存します。

表 10–1 で、使用可能なさまざまな構成シナリオを説明します。

表 10–1 CPU 制御のシナリオ

説明 

参照先 

SPARC:リソースグループが Solaris 9 OS 上で動作する 

CPU シェアをリソースグループに割り当て、project.cpu-shares の値を提供する

「SPARC: Solaris 9 OS で CPU 使用率を制御する」

リソースグループが Solaris 10 OS 上のグローバルクラスタの投票ノードで動作する 

CPU シェアをリソースグループとゾーンに割り当て、project.cpu-shares および zone.cpu-shares の値を提供する

この手順は、グローバルクラスタの非投票ノードが構成されているかどうかに関係なく実行できます。 

「グローバルクラスタの投票ノードで CPU 使用率を制御する」

リソースグループはデフォルトのプロセッサセットを使用することによりグローバルクラスタの非投票ノードで動作する 

CPU シェアをリソースグループとゾーンに割り当て、project.cpu-shares および zone.cpu-shares の値を提供する

この手順は、プロセッサセットのサイズを制御する必要がない場合に実行します。 

「デフォルトのプロセッサセットを使用してグローバルクラスタの非投票ノードの CPU 使用率を制御する」

リソースグループは専用のプロセッサセットを使用してグローバルクラスタの非投票ノードで動作する 

CPU シェアをリソースグループに割り当て、project.cpu-shareszone.cpu-shares の値、および専用のプロセッサセット内のプロセッサの最大数を提供する

専用のプロセッサセット内のプロセッサセットの最小数を設定します。 

CPU シェアと、プロセッサセットのサイズを制御したい場合に、この手順を実行します。この制御は、専用のプロセッサセットを使用することにより、グローバルクラスタの非投票ノードでのみ実行できます。 

「専用のプロセッサセットを使用してグローバルクラスタの非投票ノードの CPU 使用率を制御する」

公平配分スケジューラ

CPU シェアをリソースグループに割り当てる手順の最初のステップは、システムのスケジューラを公平配分スケジューラ (FSS) に設定することです。デフォルトでは、Solaris OS のスケジューリングクラスはタイムシェアスケジューラ (TS) です。スケジューラを FSS に設定し、シェア構成を有効にします。

選択するスケジューラクラスに関係なく、専用のプロセッサセットを作成できます。

CPU 制御の構成

このセクションでは次の作業について説明します。

ProcedureSPARC: Solaris 9 OS で CPU 使用率を制御する

Solaris 9 OS を実行するクラスタ上のリソースグループに CPU シェアを割り当るには、この手順を実行します。

リソースグループに CPU シェアが割り当てられている場合、Sun Cluster ソフトウェアは、リソースグループの 1 つのリソースを起動する際に、次の作業を実行します。

CPU 制御機能の構成についての詳細は、rg_properties(5) のマニュアルページを参照してください。

  1. システムのスケジューラを、公平配分スケジューラ (FSS) に設定します。


    # dispadmin -d FSS
    

    次の再起動時に、FSS がデフォルトのスケジューラになります。この構成をすぐに有効にするには、priocntl コマンドを使用します。


    # priocntl -s -c FSS
    

    priocntl コマンドと dispadmin コマンドを組み合わせて使用することで、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 ソフトウェアは、グローバルクラスタの投票ノードでリソースグループの 1 つのリソースを起動する際に、次の作業を実行します。

CPU 制御機能の構成についての詳細は、rg_properties(5) のマニュアルページを参照してください。

  1. システムのデフォルトのスケジューラを、公平配分スケジューラ (FSS) に設定します。


    # dispadmin -d FSS
    

    次の再起動時に、FSS がデフォルトのスケジューラになります。この構成をすぐに有効にするには、priocntl コマンドを使用します。


    # priocntl -s -C FSS
    

    priocntl コマンドと dispadmin コマンドを組み合わせて使用することで、FSS がすぐにデフォルトのスケジューラになり、再起動後もそのままになります。スケジューリングクラスの設定についての詳細は、dispadmin(1M) および priocntl(1) のマニュアルページを参照してください。


    注 –

    FSS がデフォルトのスケジューラでない場合、CPU シェアの割り当ては有効になりません。


  2. 各ノードで CPU 制御を使用するため、グローバルクラスタの投票ノードに対するシェア数と、デフォルトのプロセッサセットで使用可能な CPU の最小数を構成します。

    これらのパラメータを設定することで、投票ノードで動作中のプロセスを、非投票ノードで動作中のプロセスと CPU を獲得する際に発生する競合から保護します。globalzoneshares および defaultpsetmin プロパティーに値を割り当てないと、これらのプロパティーはデフォルト値をとります。


    # 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

    リソースグループ固有のプロジェクトに割り当てられる CPU シェアの数 (project.cpu-shares) を指定し、投票ノードに割り当てられる CPU シェアの数 (zone.cpu-shares) を決定します。

    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 ソフトウェアは、非投票ノードのリソースグループの 1 つのリソースを起動する際に、次の作業を実行します。

CPU 制御機能の構成についての詳細は、rg_properties(5) のマニュアルページを参照してください。

  1. システムのデフォルトのスケジューラを、公平配分スケジューラ (FSS) に設定します。


    # dispadmin -d FSS
    

    次の再起動時に、FSS がデフォルトのスケジューラになります。この構成をすぐに有効にするには、priocntl コマンドを使用します。


    # priocntl -s -C FSS
    

    priocntl コマンドと dispadmin コマンドを組み合わせて使用することで、FSS がすぐにデフォルトのスケジューラになり、再起動後もそのままになります。スケジューリングクラスの設定についての詳細は、dispadmin(1M) および priocntl(1) のマニュアルページを参照してください。


    注 –

    FSS がデフォルトのスケジューラでない場合、CPU シェアの割り当ては有効になりません。


  2. 各ノードで CPU 制御を使用するため、グローバルクラスタの投票ノードに対するシェア数と、デフォルトのプロセッサセットで使用可能な CPU の最小数を構成します。

    これらのパラメータを設定することで、投票ノードで動作中のプロセスを、グローバルクラスタの非投票ノードで動作中のプロセスと CPU を獲得する際に発生する競合から保護します。globalzoneshares および defaultpsetmin プロパティーに値を割り当てないと、これらのプロパティーはデフォルト値をとります。


    # 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

    リソースグループ固有のプロジェクトに割り当てられる CPU シェアの数 (project.cpu-shares) を指定し、グローバルクラスタの非投票ノードに割り当てられる CPU シェアの数 (zone.cpu_shares) を決定します。

    resource_group_name

    リソースグループの名前を指定します。

    このステップによりリソースグループが作成されます。また、clresourcegroup set コマンドを使用して既存のリソースグループを変更することもできます。

    デフォルト以外のプールがゾーン構成内にある場合、またはゾーンがデフォルト以外のプールに動的にバインドされている場合は、非投票ノードで RG_SLM_TYPEautomated に設定できません。ゾーン構成とプールのバインディングについては、それぞれ zonecfg(1M)poolbind(1M) のマニュアルページを参照してください。ゾーン構成を次のように表示します。


    # zonecfg -z zone_name info pool
    

    注 –

    HAStoragePlusLogicalHostname などのリソースは、非投票ノードで起動するように構成されていても、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
    

    priocntl コマンドと dispadmin コマンドを組み合わせて使用することで、FSS がすぐにデフォルトのスケジューラになり、再起動後もそのままになります。スケジューリングクラスの設定についての詳細は、dispadmin(1M) および priocntl(1) のマニュアルページを参照してください。


    注 –

    FSS がデフォルトのスケジューラでない場合、CPU シェアの割り当ては有効になりません。


  2. 各ノードで CPU 制御を使用するため、グローバルクラスタの投票ノードに対するシェア数と、デフォルトのプロセッサセットで使用可能な CPU の最小数を構成します。

    これらのパラメータを設定することで、投票ノードで動作中のプロセスを、非投票ノードで動作中のプロセスと CPU を獲得する際に発生する競合から保護します。globalzoneshares および defaultpsetmin プロパティーに値を割り当てないと、これらのプロパティーはデフォルト値をとります。


    # 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 は相互に排他的です。つまり、同じゾーン内のリソースグループを、strongweak が混在するように構成することはできません。

    -p RG_SLM_PSET_MIN=value

    プロセッサセット内のプロセッサの最小数を判別します。

    resource_group_name

    リソースグループの名前を指定します。

    このステップによりリソースグループが作成されます。また、clresourcegroup set コマンドを使用して既存のリソースグループを変更することもできます。

    デフォルト以外のプールがゾーン構成内にある場合、またはゾーンがデフォルト以外のプールに動的にバインドされている場合は、非投票ノードで RG_SLM_TYPEautomated に設定できません。ゾーン構成とプールのバインディングについては、それぞれ zonecfg(1M)poolbind(1M) のマニュアルページを参照してください。ゾーン構成を次のように表示します。


    # zonecfg -z zone_name info pool
    

    注 –

    HAStoragePlusLogicalHostname などのリソースは、非投票ノードで起動するように構成されていても、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 です。