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

第 11 章 資源上限デーモンの管理 (手順)

この章では、資源上限デーモン rcapd を構成して使用する手順について説明します。

rcapd の概要については、第 10 章資源上限デーモンによる物理メモリーの制御 (概要)を参照してください。

資源上限デーモンの構成と使用 (作業マップ)

タスク 

説明 

説明 

メモリー上限実行しきい値を設定します。 

プロセスが利用できる物理メモリーが少なくなったときに制限する上限を設定します。 

「メモリー上限実行しきい値を設定する方法」

動作間隔を設定します。 

この間隔は、資源上限デーモンが行う定期的な動作に適用されます。 

「動作間隔を設定する方法」

資源上限制御を有効にします。 

システムで資源上限制御を起動します。 

「資源上限制御を有効にする方法」

資源上限制御を無効にします。 

システムで資源上限制御を停止します。 

「資源上限制御を無効にする方法」

上限とプロジェクトの情報を報告します。 

報告を生成するためのコマンド例を表示します。 

「上限とプロジェクトの情報の報告」

プロジェクトの常駐セットサイズを監視します。 

プロジェクトの常駐セットサイズについて報告を生成します。 

「プロジェクトの RSS の監視」

プロジェクトの作業セットサイズを決定します。 

プロジェクトの作業セットサイズについて報告を生成します。 

「プロジェクトの作業セットサイズの決定」

メモリー使用率とメモリー上限を報告します。 

各サンプリング間隔に対応する報告の最後に、メモリー使用率と上限実行しきい値を示す行を出力します。 

「メモリー使用率とメモリー上限実行しきい値の報告」

rcapadm による資源上限デーモンの管理

この節では、rcapadm コマンドを使用して資源上限デーモンを構成する手順について説明します。詳細は、rcapd の構成」および rcapadm(1M) のマニュアルページを参照してください。rcapadm を使用してゾーンに一時的な資源上限を指定する方法についても説明します。

引数なしで使用した場合、rcapadm は資源上限デーモンの現在の状態を表示します (構成されている場合のみ)。

Procedureメモリー上限実行しきい値を設定する方法

上限は、プロセスが利用できる物理メモリーが少なくなるまで制限されないように構成できます。詳細は、「メモリー上限実行しきい値」を参照してください。

最小値 (デフォルト) は 0 です。これは、メモリー上限が常に制限されることを意味します。最小値を変更するには、次の手順に従います。

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

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

  2. rcapadm-c オプションを使用することで、メモリー上限を制限するときの物理メモリー使用率を設定します。


    # rcapadm -c percent
    

    percent は 0 から 100 までの値です。この値を大きくするほど、規制が小さくなります。つまり、上限が定義されたプロジェクトの作業負荷は、システムのメモリー使用率がこのしきい値を超えない限り、上限を適用されることなく実行できます。

参照

現在の物理メモリーの使用率と上限実行しきい値を表示する方法については、「メモリー使用率とメモリー上限実行しきい値の報告」を参照してください。

Procedure動作間隔を設定する方法

rcapd の動作間隔」では、rcapd が行う定期的な動作の間隔について説明しています。rcapadm を使用して動作間隔を設定するには、次の手順に従います。

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

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

  2. -i オプションを使用して、動作間隔の値を設定します。


    # rcapadm -i interval=value,...,interval=value 
    

    注 –

    すべての動作間隔の値の単位は秒です。


Procedure資源上限制御を有効にする方法

資源上限制御をシステムで有効にする方法は 3 つあります。資源上限制御を有効にすると、さらに /etc/rcap.conf ファイルがデフォルト値で設定されます。

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

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

  2. 次のどちらかの方法で資源上限デーモンを有効にします。

    • svcadm コマンドを使って、資源上限制御を有効にします。


      # svcadm enable rcap
      
    • 資源上限デーモンを有効にして、ただちに起動し、かつ、システムをブートするたびに起動するようにします。次のように入力します。


      # rcapadm -E
      
    • 資源上限デーモンをただちには起動せず、ブート時に有効にするには、-n オプションも指定します。


      # rcapadm -n -E
      

Procedure資源上限制御を無効にする方法

資源上限制御をシステムで無効にする方法は 3 つあります。

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

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

  2. 次のどちらかの方法で資源上限デーモンを無効にします。

    • svcadm コマンドを使用して、資源上限制御をオフにします。


      # svcadm disable rcap
      
    • 資源上限デーモンを無効にして、ただちに停止し、かつ、システムをブートしても起動しないようにするには、次のように入力します。


      # rcapadm -D
      
    • 資源上限デーモンを停止せずに無効にするには、-n オプションも指定します。


      # rcapadm -n -D
      

    ヒント –

    資源上限デーモンの安全な無効化


    rcapd を安全に無効にするには、svcadm コマンド、または -rcapadm コマンドを D オプションとともに使用します。資源上限デーモンを強制終了すると (kill(1) のマニュアルページを参照)、プロセスが停止状態のままになり、手動で再起動しなければならない場合があります。プロセスの実行を再開するには、prun コマンドを使用します。詳細は、prun(1) のマニュアルページを参照してください。

Procedureゾーンに一時的な資源上限を指定する方法

この手順は、特定のゾーンで消費可能な最大のメモリー量を割り当てる場合に使用します。この値は、次の再起動までに限り有効です。持続的な上限を設定するには、zonecfg コマンドを使用します。

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

    System Administrator 役割には、Process Management プロファイルが含まれています。

  2. ゾーン my-zone に最大メモリーの値として 512M バイトを設定します。


    # rcapadm -z testzone -m 512M
    

rcapstat による報告の生成

資源上限制御の統計を報告するには、rcapstat を使用します。rcapstat による資源使用率の監視」 コマンドを使って報告を生成する方法については、Monitoring Resource Utilization With rcapstatを参照してください。この節では、報告の列見出しについても説明します。rcapstat(1) のマニュアルページにも、この情報が含まれています。

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

上限とプロジェクトの情報の報告

この例では、2 人のユーザーに関連付けられた 2 つのプロジェクトに、上限が定義されています。user1 の上限は 50M バイト、user2 の上限は 10M バイトです。

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


user1machine% rcapstat 5 5
    id project  nproc     vm    rss   cap    at avgat    pg avgpg
112270   user1     24   123M    35M   50M   50M    0K 3312K    0K
 78194   user2      1  2368K  1856K   10M    0K    0K    0K    0K
    id project  nproc     vm    rss   cap    at avgat    pg avgpg
112270   user1     24   123M    35M   50M    0K    0K    0K    0K
 78194   user2      1  2368K  1856K   10M    0K    0K    0K    0K
    id project  nproc     vm    rss   cap    at avgat    pg avgpg
112270   user1     24   123M    35M   50M    0K    0K    0K    0K
 78194   user2      1  2368K  1928K   10M    0K    0K    0K    0K
    id project  nproc     vm    rss   cap    at avgat    pg avgpg
112270   user1     24   123M    35M   50M    0K    0K    0K    0K
 78194   user2      1  2368K  1928K   10M    0K    0K    0K    0K
    id project  nproc     vm    rss   cap    at avgat    pg avgpg
112270   user1     24   123M    35M   50M    0K    0K    0K    0K
 78194   user2      1  2368K  1928K   10M    0K    0K    0K    0K 

出力の最初の 3 行は 1 回目の報告です。ここには、2 つのプロジェクトに関する上限とプロジェクトの情報、および rcapd 起動以降のページング統計が記載されています。atpg の列において、user1 にはゼロより大きな値が入っており、user2 にはゼロが入っています。これは、1 回目の報告の期間中、user1 は上限を超えたが、user2 は超えなかったことを意味します。

2 回目以降の報告では、目立った活動はありません。

プロジェクトの RSS の監視

この例では、プロジェクト user1 の RSS が上限を超えています。

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


user1machine% rcapstat 5 5

    id project  nproc    vm   rss   cap    at avgat     pg  avgpg
376565   user1      3 6249M 6144M 6144M  690M  220M  5528K  2764K
376565   user1      3 6249M 6144M 6144M    0M  131M  4912K  1637K
376565   user1      3 6249M 6171M 6144M   27M  147M  6048K  2016K
376565   user1      3 6249M 6146M 6144M 4872M  174M  4368K  1456K
376565   user1      3 6249M 6156M 6144M   12M  161M  3376K  1125K

プロジェクト user1 は 3 つのプロセスを持っており、それぞれがアクティブに物理メモリーを使用しています。pg 列の正の値が示しているとおり、rcapd は、このプロジェクトのプロセスの物理メモリーの使用率を上限に合わせて下げようと、メモリーをページアウトし続けています。しかし、rcapd は RSS を上限値未満に保つことに成功していません。これは、rss 値が相応の減少を示していないことでわかります。作業負荷はメモリーをページアウトするとすぐにまたメモリーを使用しており、その結果、RSS の値がまた上がってしまいます。これは、プロジェクトの常駐メモリーがすべてアクティブに使用されており、かつ、作業セットサイズ (WSS) が上限よりも大きいことを意味します。そのため、rcapd は、上限に合わせて作業セットの一部をページアウトせざるを得ません。この状況では、次のうちのいずれかが起きるまで、システムのページフォルト率および関連する入出力は高いままです。

この状況では、サンプリング間隔を短くすることで、RSS 値と上限値の差を小さくできる可能性があります。rcapd が作業負荷をサンプリングして上限を制限する頻度が上がるからです。


注 –

ページフォルトが発生するのは、新しいページを作成する必要があるとき、あるいは、システムがスワップデバイスからページをコピーする必要があるときです。


プロジェクトの作業セットサイズの決定

この例では、前の例と同じプロジェクトを使用します。

前の例では、プロジェクト user1 が自分に許可された上限よりも多くの物理メモリーを使用しているところを示しました。この例では、どれくらいのメモリーをプロジェクトの作業負荷が必要とするのかを示します。


user1machine% rcapstat 5 5
    id project  nproc    vm   rss   cap    at avgat     pg  avgpg
376565   user1      3 6249M 6144M 6144M  690M    0K   689M     0K
376565   user1      3 6249M 6144M 6144M    0K    0K     0K     0K
376565   user1      3 6249M 6171M 6144M   27M    0K    27M     0K
376565   user1      3 6249M 6146M 6144M 4872K    0K  4816K     0K
376565   user1      3 6249M 6156M 6144M   12M    0K    12M     0K
376565   user1      3 6249M 6150M 6144M 5848K    0K  5816K     0K
376565   user1      3 6249M 6155M 6144M   11M    0K    11M     0K
376565   user1      3 6249M 6150M   10G   32K    0K    32K     0K
376565   user1      3 6249M 6214M   10G    0K    0K     0K     0K
376565   user1      3 6249M 6247M   10G    0K    0K     0K     0K
376565   user1      3 6249M 6247M   10G    0K    0K     0K     0K
376565   user1      3 6249M 6247M   10G    0K    0K     0K     0K
376565   user1      3 6249M 6247M   10G    0K    0K     0K     0K
376565   user1      3 6249M 6247M   10G    0K    0K     0K     0K
376565   user1      3 6249M 6247M   10G    0K    0K     0K     0K

サイクルの中ほどで、プロジェクト user1 の上限を 6G バイトから 10G バイトに上げました。値を上げることによって上限の制限が止まり、常駐セットサイズが上昇しました。常駐セットサイズを規制するのは、ほかのプロセスと、マシンのメモリー容量だけになりました。rss 列が、プロジェクトの作業セットサイズ (この例では 6247M バイト) を反映して安定する場合があります。この値が、このプロジェクトのプロセスがページフォルトを頻繁に起こさずに動作できる、上限の最小値です。

user1 の上限が 6G バイトであるとき、サンプリング間隔の 5 秒ごとに、rcapd が作業負荷のメモリーの一部をページアウトするにつれて、RSS は減少して入出力は増加します。ページアウトの直後、これらのページを必要とする作業負荷は、(動作し続ける限り) メモリーをページインします。このサイクルは、例の中ほどで上限を10G バイトに上げるまで繰り返されます。その後、RSS は 6.1G バイトで安定します。作業負荷の RSS が上限より低くなったため、これ以後ページングは発生しません。また、ページングに関連する入出力は止まります。このため、観察時にプロジェクトが行なっていた作業の実行には、6.1G バイトが必要であったことがわかります。

vmstat(1M) および iostat(1M) のマニュアルページも参照してください。

メモリー使用率とメモリー上限実行しきい値の報告

rcapstat-g オプションを使用すると、次のことを報告できます。

-g オプションを使用すると、各サンプリング間隔に対応する報告の最後に、メモリー使用率と上限実行しきい値を示す行が出力されます。


# rcapstat -g
    id project   nproc    vm   rss   cap    at avgat   pg  avgpg
376565    rcap       0    0K    0K   10G    0K    0K   0K     0K
physical memory utilization: 55%   cap enforcement threshold: 0%
    id project   nproc    vm   rss   cap    at avgat   pg  avgpg
376565    rcap       0    0K    0K   10G    0K    0K   0K     0K
physical memory utilization: 55%   cap enforcement threshold: 0%