Oracle Solaris のシステム管理 (Oracle Solaris コンテナ : 資源管理と Oracle Solaris ゾーン)

第 13 章 資源プールの作成と管理 (手順)

この章では、システムの資源プールを設定し管理する方法について説明します。

資源プールの概要については、第 12 章資源プール (概要)を参照してください。

動的資源プールの管理 (作業マップ)

タスク 

説明 

説明 

資源プールを有効または無効にします。 

システムの資源プールをアクティブまたは無効にします。 

「プール機能の有効化と無効化」

動的資源プールを有効または無効にします。 

システムの動的資源プール機能をアクティブまたは無効にします。 

「プール機能の有効化と無効化」

静的な資源プール構成を作成します。 

現在の動的構成と一致する静的構成ファイルを作成します。詳細は、「資源プールのフレームワーク」を参照してください。

「静的構成を作成する方法」

資源プール構成を変更します。 

追加のプールを作成するなどして、システムのプール構成を変更します。 

「構成の変更方法」

資源プールをスケジューリングクラスに対応付けます。 

プールをスケジューリングクラスに対応付けることで、プールに結合されているすべてのプロセスが、指定されたスケジューラを使用できるようにします。 

「プールをスケジューリングクラスに対応付ける方法」

構成の制約を設定し、構成の目標を定義します。 

poold に対して、修正操作を実行するときに考慮する目標を指定します。構成の目標の詳細については、poold の概要」を参照してください。

「構成の制約を設定する方法」および「構成の目標を定義する方法」

ログのレベルを設定します。 

poold で生成するログ情報のレベルを指定します。

poold のログレベルを設定する方法」

poolcfg コマンドでテキストファイルを使用します。

poolcfg コマンドにテキストファイルから入力します。

poolcfg でコマンドファイルを使用する方法」

カーネルで資源を転送します。 

カーネルで資源を転送します。たとえば、特定の ID を持つ資源をターゲットセットに転送します。 

「資源の転送」

プール構成を起動します。 

デフォルト構成ファイル内の構成を起動します。 

「プール構成を起動する方法」

プール構成を確定する前に、プール構成を検証します。 

検証が実行されるとどうなるかをテストするために、プール構成を検証します。 

「構成を確定する前に構成を検証する方法」

システムからプール構成を削除します。 

プロセッサセットなど、対応付けられているすべての資源がデフォルトの状態に戻ります。 

「プール構成を削除する方法」

プロセスをプールに結合します。 

システムで実行中のプロセスを資源プールに手動で対応付けます。 

「プロセスをプールに結合する方法」

タスクやプロジェクトをプールに結合します。 

タスクやプロジェクトを資源プールに対応付けます。 

「タスクまたはプロジェクトをプールに結合する方法」

新しいプロセスを資源プールに結合します。 

プロジェクト内の新しいプロセスを特定のプールに自動的に結合するには、project データベース内の各エントリに属性を追加します。

「プロジェクトの project.pool 属性を設定する方法」

project 属性を使ってプロセスを別のプールに結合します。

新たに開始されるプロセスについて、プールとの結合を変更します。 

project 属性を使ってプロセスを別のプールに結合する方法」

poolstat ユーティリティーを使って報告を生成します。

指定した間隔で複数の報告を生成します。 

「特定の間隔で複数の報告を生成する」

資源セットの統計情報を報告します。 

poolstat ユーティリティーを使って pset 資源セットの統計情報を報告します。

「資源セットの統計情報を報告する」

プール機能の有効化と無効化

Solaris 10 11/06 リリースから、svcadm コマンド (svcadm(1M) のマニュアルページを参照) を使って、システム上の資源プールサービスおよび動的資源プールサービスを有効または無効に設定できるようになりました。

pooladmコマンド (pooladm(1M) のマニュアルページを参照) を使用すると、次のタスクも実行できます。


注 –

システムをアップグレードする際に、資源プールフレームワークが有効で、/etc/pooladm.conf ファイルが存在する場合、プールサービスが有効になり、このファイル内の構成がシステムに適用されます。


ProcedureSolaris 10 11/06 以降: svcadm を使って資源プールサービスを有効にする方法

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 資源プールサービスを有効にします。


    # svcadm enable system/pools:default
    

ProcedureSolaris 10 11/06 以降: svcadm を使って資源プールサービスを無効にする方法

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 資源プールサービスを無効にします。


    # svcadm disable system/pools:default
    

ProcedureSolaris 10 11/06 以降: svcadm を使って動的資源プールサービスを有効にする方法

  1. スーパーユーザーになるか、Service Management 権利プロファイルが含まれている役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の作成方法およびユーザーに役割を割り当てる方法については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」と『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の管理 (作業マップ)」を参照してください。

  2. 動的資源プールサービスを有効にします。


    # svcadm enable system/pools/dynamic:default
    

例 13–1 資源プールサービスに対する動的資源プールサービスの依存

この例では、DRP を実行する場合に、最初に資源プールを有効にする必要があることを示します。

資源プールと動的資源プールの間には、依存関係があります。DRP は、資源プールに依存するサービスになっています。DRP の有効化/無効化は、資源プールとは関係なく実行できます。

次の例では、資源プールと動的資源プールの両方が現在無効に設定されています。


# svcs *pool*
STATE          STIME    FMRI
disabled       10:32:26 svc:/system/pools/dynamic:default
disabled       10:32:26 svc:/system/pools:default

動的資源プールを有効にします。


# svcadm enable svc:/system/pools/dynamic:default
# svcs -a | grep pool
disabled       10:39:00 svc:/system/pools:default
offline        10:39:12 svc:/system/pools/dynamic:default

DRP サービスはまだオフラインです。

svcs コマンドの -x オプションを使って、DRP サービスがオフラインになっている原因を特定します。


# svcs -x *pool*
svc:/system/pools:default (resource pools framework)
 State: disabled since Wed 25 Jan 2006 10:39:00 AM GMT
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: libpool(3LIB)
   See: pooladm(1M)
   See: poolbind(1M)
   See: poolcfg(1M)
   See: poolstat(1M)
   See: /var/svc/log/system-pools:default.log
Impact: 1 dependent service is not running.  (Use -v for list.)

svc:/system/pools/dynamic:default (dynamic resource pools)
 State: offline since Wed 25 Jan 2006 10:39:12 AM GMT
Reason: Service svc:/system/pools:default is disabled.
   See: http://sun.com/msg/SMF-8000-GE
   See: poold(1M)
   See: /var/svc/log/system-pools-dynamic:default.log
Impact: This service is not running.

資源プールサービスを有効にして、DRP サービスを実行可能にします。


# svcadm enable svc:/system/pools:default

svcs *pool* コマンドを使用すると、システムによって次の情報が表示されます。


# svcs *pool*
STATE          STIME    FMRI
online         10:40:27 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default


例 13–2 資源プールサービスが無効な場合の動的資源プールへの影響

両方のサービスがオンラインで、資源プールサービスを無効にする場合は、次のコマンドを実行します。


# svcadm disable svc:/system/pools:default 

svcs *pool* コマンドを使用すると、システムによって次の情報が表示されます。


# svcs *pool*
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default
# svcs *pool*
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default

ただし、資源プールサービスが無効になるため、結果として DRP サービスが offline になります。


# svcs *pool*
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
offline        10:41:12 svc:/system/pools/dynamic:default

DRP サービスがオフラインになっている原因を特定します。


# svcs -x *pool*
svc:/system/pools:default (resource pools framework)
 State: disabled since Wed 25 Jan 2006 10:41:05 AM GMT
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: libpool(3LIB)
   See: pooladm(1M)
   See: poolbind(1M)
   See: poolcfg(1M)
   See: poolstat(1M)
   See: /var/svc/log/system-pools:default.log
Impact: 1 dependent service is not running.  (Use -v for list.)

svc:/system/pools/dynamic:default (dynamic resource pools)
 State: offline since Wed 25 Jan 2006 10:41:12 AM GMT
Reason: Service svc:/system/pools:default is disabled.
   See: http://sun.com/msg/SMF-8000-GE
   See: poold(1M)
   See: /var/svc/log/system-pools-dynamic:default.log
Impact: This service is not running.

DRP が機能するためには、資源プールを起動する必要があります。たとえば、pooladm コマンドと -e オプションを使って資源プールを起動できます。


# pooladm -e

その後、svcs *pool* コマンドを実行すると、次のように表示されます。


# svcs *pool*
STATE          STIME    FMRI
online         10:42:23 svc:/system/pools:default
online         10:42:24 svc:/system/pools/dynamic:default

ProcedureSolaris 10 11/06 以降: svcadm を使って動的資源プールサービスを無効にする方法

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 動的資源プールサービスを無効にします。


    # svcadm disable system/pools/dynamic:default
    

Procedurepooladm を使って資源プールを有効にする方法

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. プール機能を有効にします。


    # pooladm -e
    

Procedurepooladm を使って資源プールを無効にする方法

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. プール機能を無効にします。


    # pooladm -d
    

プールの構成

Procedure静的構成を作成する方法

-s オプションを付けて /usr/sbin/pooladm を実行して、現在の動的構成と一致する静的構成ファイルを作成します。別のファイル名を指定した場合を除き、デフォルトの場所 /etc/pooladm.conf が使用されます。

pooladm コマンドに -c オプションを付けて実行して、構成を確定します。次に、pooladm コマンドに -s オプションを付けて実行して、動的構成の状態と一致するように静的構成ファイルを更新します。


注 –

動的構成と一致する新しい構成を作成するには、以前の機能 poolcfg -c discover を使用するよりも、新機能 pooladm -s を使用することをお勧めします。


始める前に

使用しているシステムでプールを有効にします。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 現在の動的構成と一致するように静的構成ファイルを更新します。


    # pooladm -s
    
  3. 構成ファイルの内容を読みやすい形式で表示します。

    構成には、システムによって作成されたデフォルトの要素が含まれています。


    # poolcfg -c info
    system tester
            string  system.comment
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
  4. /etc/pooladm.conf にある構成を確定します。


    # pooladm -c
    
  5. (省略可能) /tmp/backup という静的構成ファイルに動的構成をコピーするには、次のように入力します。


    # pooladm -s /tmp/backup
    

Procedure構成の変更方法

構成を拡張するために、pset_batch というプロセッサセットと pool_batch というプールを作成します。次に、このプールとプロセッサセットを結合によって対応付けます。

サブコマンドの引数に空白が含まれている場合は、引用符で囲むことを忘れないでください。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. pset_batch というプロセッサセットを作成します。


    # poolcfg -c 'create pset pset_batch (uint pset.min = 2; uint pset.max = 10)'
    
  3. pool_batch というプールを作成します。


    # poolcfg -c 'create pool pool_batch'
    
  4. このプールとプロセッサセットを結合によって対応付けます。


    # poolcfg -c 'associate pool pool_batch (pset pset_batch)'
    
  5. 対応付けた後の構成を表示します。


    # poolcfg -c info
    system tester
            string  system.comment kernel state
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
    
            pool pool_batch
                    boolean pool.default false
                    boolean pool.active true
                    int pool.importance 1
                    string pool.comment
                    pset pset_batch
    
            pset pset_batch
                    int pset.sys_id -2
                    string pset.units population
                    boolean pset.default true
                    uint pset.max 10
                    uint pset.min 2
                    string pset.comment
                    boolean pset.escapable false
                    uint pset.load 0
                    uint pset.size 0
    
                    cpu
                            int     cpu.sys_id 5
                            string  cpu.comment
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 4
                            string  cpu.comment
                            string  cpu.status on-line
  6. /etc/pooladm.conf にある構成を確定します。


    # pooladm -c
    
  7. (省略可能) /tmp/backup という静的構成ファイルに動的構成をコピーするには、次のように入力します。


    # pooladm -s /tmp/backup
    

Procedureプールをスケジューリングクラスに対応付ける方法

プールをスケジューリングクラスに対応付けることで、プールに結合されているすべてのプロセスがこのスケジューラを使用できるようになります。このためには、pool.scheduler プロパティーにスケジューラの名前を設定します。次の例では、プール pool_batch を公平配分スケジューラ (FSS) に対応付けます。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割を作成してユーザーに割り当てる方法については、『Solaris のシステム管理 (セキュリティーサービス)』の「RBAC の管理 (作業マップ)」を参照してください。

  2. pool_batch プールを変更して、FSS に対応付けます。


    # poolcfg -c 'modify pool pool_batch (string pool.scheduler="FSS")'
    
  3. 対応付けた後の構成を表示します。


    # poolcfg -c info
    system tester
            string  system.comment
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
    
            pool pool_batch
                    boolean pool.default false
                    boolean pool.active true
                    int pool.importance 1
                    string pool.comment
                    string pool.scheduler FSS
                    pset batch
    
            pset pset_batch
                    int pset.sys_id -2
                    string pset.units population
                    boolean pset.default true
                    uint pset.max 10
                    uint pset.min 2
                    string pset.comment
                    boolean pset.escapable false
                    uint pset.load 0
                    uint pset.size 0
    
                    cpu
                            int     cpu.sys_id 5
                            string  cpu.comment
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 4
                            string  cpu.comment
                            string  cpu.status on-line
  4. /etc/pooladm.conf にある構成を確定します。


    # pooladm -c
    
  5. (省略可能) /tmp/backup という静的構成ファイルに動的構成をコピーするには、次のように入力します。


    # pooladm -s /tmp/backup
    

Procedure構成の制約を設定する方法

制約は、構成に加えることのできる変更を一部除外することで、作成可能な構成の範囲に影響を与えます。ここでは、cpu.pinned プロパティーを設定する手続きを示します。

次の例では、cpuid は整数です。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 静的構成または動的構成内の cpu.pinned プロパティーを変更します。

    • ブート時の (静的) 構成を変更します。


      # poolcfg -c 'modify cpu <cpuid> (boolean cpu.pinned = true)'
      
    • ブート時の構成を変更せずに、実行中の (動的) 構成を変更します。


      # poolcfg -dc 'modify cpu <cpuid> (boolean cpu.pinned = true)'
      

Procedure構成の目標を定義する方法

poold に対して、修正操作を実行するときに考慮する目標を指定できます。

次の手順では、wt-load 目標を設定して、poold が資源の使用率に合わせて資源を割り当てるようにします。この構成目標を達成しやすくするために、locality 目標は無効にします。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. システム tester を変更して、wt-load 目標を優先するようにします。


    # poolcfg -c 'modify system tester (string system.poold.objectives="wt-load")'
    
  3. デフォルトのプロセッサセットの locality 目標を無効にします。


    # poolcfg -c 'modify pset pset_default (string pset.poold.objectives="locality none")'
    
  4. pset_batch プロセッサセットの locality 目標を無効にします。


    # poolcfg -c 'modify pset pset_batch (string pset.poold.objectives="locality none")'
    
  5. 対応付けた後の構成を表示します。


    # poolcfg -c info
    system tester
            string  system.comment
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
            string  system.poold.objectives wt-load
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
                    string  pset.poold.objectives locality none
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
    
            pool pool_batch
                    boolean pool.default false
                    boolean pool.active true
                    int pool.importance 1
                    string pool.comment
                    string pool.scheduler FSS
                    pset batch
    
            pset pset_batch
                    int pset.sys_id -2
                    string pset.units population
                    boolean pset.default true
                    uint pset.max 10
                    uint pset.min 2
                    string pset.comment
                    boolean pset.escapable false
                    uint pset.load 0
                    uint pset.size 0
                    string  pset.poold.objectives locality none
    
                    cpu
                            int     cpu.sys_id 5
                            string  cpu.comment
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 4
                            string  cpu.comment
                            string  cpu.status on-line
  6. /etc/pooladm.conf にある構成を確定します。


    # pooladm -c
    
  7. (省略可能) /tmp/backup という静的構成ファイルに動的構成をコピーするには、次のように入力します。


    # pooladm -s /tmp/backup
    

Procedurepoold のログレベルを設定する方法

poold が生成するログ情報のレベルを指定するには、poold 構成の system.poold.log-level プロパティーを設定します。poold の構成は libpool の構成に保存されています。詳細は、poold のログ情報」および poolcfg(1m)libpool(3LIB) のマニュアルページを参照してください。

コマンド行で poold コマンドを使用する方法でも、poold で生成するログ情報のレベルを指定できます。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. poold コマンドに -l オプションとパラメータ (INFO など) を付けて実行することで、ログのレベルを設定します。


    # /usr/lib/pool/poold -l INFO
    

    使用可能なパラメータについては、poold のログ情報」を参照してください。デフォルトのログレベルは NOTICE です。

Procedurepoolcfg でコマンドファイルを使用する方法

poolcfg コマンドに -f オプションを付けて使用すると、poolcfg コマンドの -c オプションに指定する引数をテキストファイルから入力できます。この方法は、一連の操作を実行する場合に使用します。複数のコマンドを処理した場合でも、それらのコマンドがすべて正常に終了するまで、構成は更新されません。特に大規模な構成や複雑な構成の場合は、この手法を使用した方が、個々のサブコマンドを起動するよりも便利です。

コマンドファイルでは、# という文字はコメント記号として機能し、その行の残り部分がコメントと見なされます。

  1. 入力ファイル poolcmds.txt を作成します。


    $ cat > poolcmds.txt
    create system tester
    create pset pset_batch (uint pset.min = 2; uint pset.max = 10)
    create pool pool_batch
    associate pool pool_batch (pset pset_batch)
    
  2. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割を作成してユーザーに割り当てる方法については、『Solaris のシステム管理 (セキュリティーサービス)』の「RBAC の管理 (作業マップ)」を参照してください。

  3. コマンドを実行します。


    # /usr/sbin/poolcfg -f poolcmds.txt
    

資源の転送

-d オプションを付けた poolcfg-c オプションの transfer サブコマンド引数を付けて実行すると、カーネルで資源を転送できます。-d オプションは、コマンドにファイルから入力するのではなく、直接カーネル上で実行することを示します。

次の手順では、2 つの CPU をプロセッサセット pset1 からプロセッサセット pset2 にカーネルで移動します。

Procedureプロセッサセット間で CPU を移動する方法

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 2 つの CPU を pset1 から pset2 に移動します。

    from 文節と to 文節は、どの順序で使用してもかまいません。to 文節と from 文節は、1 つのコマンドにそれぞれ 1 つだけ使用できます。


    # poolcfg -dc 'transfer 2 from pset pset1 to pset2'
    

例 13–3 プロセッサセット間で CPU を移動する別の方法

ある資源タイプの特定の資源の ID を指定して転送する場合は、別の構文が用意されています。たとえば、次のコマンドは、ID が 02 の 2 つの CPU を pset_large プロセッサセットに割り当てます。


# poolcfg -dc "transfer to pset pset_large (cpu 0; cpu 2)"

問題発生時の解決方法

要求を満たすための十分な資源がない場合や、指定された ID が見つからない場合は、転送は失敗し、エラーメッセージが表示されます。

プール構成の起動と削除

pooladm コマンドを使用すると、特定のプール構成をアクティブにしたり、現在アクティブになっているプール構成を削除したりできます。このコマンドの詳細については、pooladm(1M) のマニュアルページを参照してください。

Procedureプール構成を起動する方法

デフォルト構成ファイル /etc/pooladm.conf に保存されている構成を起動するには、pooladm-c オプション (構成の確定) を付けて実行します。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. /etc/pooladm.conf にある構成を確定します。


    # pooladm -c
    
  3. (省略可能) たとえば /tmp/backup という静的構成ファイルに動的構成をコピーするには、次のように入力します。


    # pooladm -s /tmp/backup
    

Procedure構成を確定する前に構成を検証する方法

-n オプションと -c オプションをともに使用すると、検証が実行されるとどうなるかをテストできます。構成が実際に確定されることはありません。

次のコマンドは、/home/admin/newconfig に保存されている構成を検証します。検出されたエラー条件が表示されますが、構成自体は変更されません。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 構成を確定する前に構成を検証します。


    # pooladm -n -c /home/admin/newconfig
    

Procedureプール構成を削除する方法

現在アクティブになっている構成を削除して、プロセッサセットなどの関連付けられているすべての資源をデフォルトの状態に戻すには、-x オプション (構成の削除) を使用します。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 現在アクティブになっている構成を削除します。


    # pooladm -x
    

    -x オプションを付けて pooladm を実行すると、ユーザーが定義したすべての要素が動的構成から削除されます。すべての資源がデフォルトの状態に戻り、プールとの結合もすべてデフォルトプールとの結合で置換されます。

プロセッサセット内におけるスケジューリングクラスの混在

TS クラスのプロセスと IA クラスのプロセスを同一プロセッサセット内で混在させても問題はありません。1 つのプロセッサセット内でその他のスケジューリングクラスを混在させると、予期できない結果が生じる可能性があります。pooladm -x を使用した結果、1 つのプロセッサセット内にスケジューリングクラスが混在している場合は、priocntl コマンドを使用して、実行中のプロセスを別のスケジューリングクラスに移動してください。「プロセスを TS クラスから FSS クラスに手動で移動する方法」を参照してください。priocntl(1) のマニュアルページも参照してください。

プール属性の設定とプールへの結合

資源プールをプロジェクトに関連付けるために、project.pool 属性を設定できます。

実行中のプロセスをプールに結合するには、次の 2 つの方法を使用できます。

Procedureプロセスをプールに結合する方法

次の手順では、poolbind コマンドに -p オプションを付けて実行して、プロセス (この例では、現在のシェル) を ohare というプールに手動で結合します。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. プロセスをプールに手動で結合します。


    # poolbind -p ohare $$
    
  3. poolbind-q オプションを付けて実行することで、プロセスとプールの結合を確認します。


    $ poolbind -q $$
    155509 ohare

    プロセス ID とプールへの結合が表示されます。

Procedureタスクまたはプロジェクトをプールに結合する方法

タスクまたはプロジェクトをプールに結合するには、poolbind コマンドに -i オプションを指定します。次の例では、airmiles プロジェクト内のすべてのプロセスを laguardia プールに結合します。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. airmiles プロジェクト内のすべてのプロセスを laguardia プールに結合します。


    # poolbind -i project -p laguardia airmiles
    

Procedureプロジェクトの project.pool 属性を設定する方法

プロジェクトのプロセスを資源プールに結合するために、project.pool 属性を設定できます。

  1. スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。

    System Administrator 役割には、Process Management プロファイルが含まれています。役割の詳細については、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. project データベース内の各エントリに project.pool 属性を追加します。


    # projmod -a -K project.pool=poolname project
    

Procedureproject 属性を使ってプロセスを別のプールに結合する方法

studio backstage という 2 つのプールを持つ構成が存在するものとします。/etc/project ファイルの内容は、次のとおりです。


user.paul:1024::::project.pool=studio
user.george:1024::::project.pool=studio
user.ringo:1024::::project.pool=backstage
passes:1027::paul::project.pool=backstage

この構成の場合、ユーザー paul によって起動されるプロセスは、デフォルトで studio プールに結合されます。

ユーザー paul は、起動するプロセスのプール結合を変更できます。paul は、newtask を使用して (この場合は passes プロジェクト内で起動することで)、作業を backstage プールに結合することもできます。

  1. passes プロジェクトでプロセスを起動します。


    $ newtask -l -p passes
    
  2. poolbind コマンドに -q オプションを付けて実行し、プロセスとプールの結合を確認します。また、二重ドル記号 ($$) を使用して親シェルのプロセス番号をコマンドに渡します。


    $ poolbind -q $$
    6384  pool backstage

    プロセス ID とプールへの結合が表示されます。

poolstat を使ってプールに関連付けられている資源について統計情報を報告する

poolstat コマンドを使用すると、プールに関連付けられている資源について統計情報を表示できます。詳細は、poolstat によるプール機能と資源使用率の監視」および poolstat(1M) のマニュアルページを参照してください。

この節では、さまざまな目的の報告を生成する方法を、例を使用しながら説明します。

poolstat のデフォルトの出力を表示する

引数なしで poolstat と入力すると、見出し行に続いて、1 行に 1 つずつプールが表示されます。情報の行には、プール ID、プール名、およびプールに接続されているプロセッサセットに関する資源統計が表示されます。


machine% poolstat
                              pset
       id pool           size used load
        0 pool_default      4  3.6  6.2
        1 pool_sales        4  3.3  8.4

特定の間隔で複数の報告を生成する

次のコマンドは、3 つの報告を 5 秒間のサンプリング間隔で生成します。


machine% poolstat 5 3
                               pset
 id pool                 size used load
 46 pool_sales              2  1.2  8.3
  0 pool_default            2  0.4  5.2
                              pset
 id pool                 size used load
 46 pool_sales              2  1.4  8.4
  0 pool_default            2  1.9  2.0
                              pset
 id pool                 size used load
 46 pool_sales              2  1.1  8.0
  0 pool_default            2  0.3  5.0  

資源セットの統計情報を報告する

次の例では、poolstat コマンドに -r オプションを付けて実行し、プロセッサセットの資源セットの統計情報を報告します。資源セット pset_default は複数のプールに接続されているので、このプロセッサセットは各プールで 1 回ずつ表示されます。


machine% poolstat -r pset
      id pool          type rid rset          min  max size used load
       0 pool_default  pset  -1 pset_default    1  65K    2  1.2  8.3
       6 pool_sales    pset   1 pset_sales      1  65K    2  1.2  8.3
       2 pool_other    pset  -1 pset_default    1  10K    2  0.4  5.2