この章では、資源上限デーモン rcapd を構成して使用する手順について説明します。
rcapd の概要については、第 10 章資源上限デーモンによる物理メモリーの制御 (概要)を参照してください。
タスク |
説明 |
説明 |
---|---|---|
メモリー上限実行しきい値を設定します。 |
プロセスが利用できる物理メモリーが少なくなったときに制限する上限を設定します。 | |
動作間隔を設定します。 |
この間隔は、資源上限デーモンが行う定期的な動作に適用されます。 | |
資源上限制御を有効にします。 |
システムで資源上限制御を起動します。 | |
資源上限制御を無効にします。 |
システムで資源上限制御を停止します。 | |
上限とプロジェクトの情報を報告します。 |
報告を生成するためのコマンド例を表示します。 | |
プロジェクトの常駐セットサイズを監視します。 |
プロジェクトの常駐セットサイズについて報告を生成します。 | |
プロジェクトの作業セットサイズを決定します。 |
プロジェクトの作業セットサイズについて報告を生成します。 | |
メモリー使用率とメモリー上限を報告します。 |
各サンプリング間隔に対応する報告の最後に、メモリー使用率と上限実行しきい値を示す行を出力します。 |
この節では、rcapadm コマンドを使用して資源上限デーモンを構成する手順について説明します。詳細は、「rcapd の構成」および rcapadm(1M) のマニュアルページを参照してください。rcapadm を使用してゾーンに一時的な資源上限を指定する方法についても説明します。
引数なしで使用した場合、rcapadm は資源上限デーモンの現在の状態を表示します (構成されている場合のみ)。
上限は、プロセスが利用できる物理メモリーが少なくなるまで制限されないように構成できます。詳細は、「メモリー上限実行しきい値」を参照してください。
最小値 (デフォルト) は 0 です。これは、メモリー上限が常に制限されることを意味します。最小値を変更するには、次の手順に従います。
スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。
System Administrator 役割には、Process Management プロファイルが含まれています。役割を作成してユーザーに割り当てる方法については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の管理 (作業マップ)」を参照してください。
rcapadm の -c オプションを使用することで、メモリー上限を制限するときの物理メモリー使用率を設定します。
# rcapadm -c percent |
percent は 0 から 100 までの値です。この値を大きくするほど、規制が小さくなります。つまり、上限が定義されたプロジェクトの作業負荷は、システムのメモリー使用率がこのしきい値を超えない限り、上限を適用されることなく実行できます。
現在の物理メモリーの使用率と上限実行しきい値を表示する方法については、「メモリー使用率とメモリー上限実行しきい値の報告」を参照してください。
「rcapd の動作間隔」では、rcapd が行う定期的な動作の間隔について説明しています。rcapadm を使用して動作間隔を設定するには、次の手順に従います。
スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。
System Administrator 役割には、Process Management プロファイルが含まれています。役割を作成してユーザーに割り当てる方法については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の管理 (作業マップ)」を参照してください。
-i オプションを使用して、動作間隔の値を設定します。
# rcapadm -i interval=value,...,interval=value |
すべての動作間隔の値の単位は秒です。
資源上限制御をシステムで有効にする方法は 3 つあります。資源上限制御を有効にすると、さらに /etc/rcap.conf ファイルがデフォルト値で設定されます。
スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。
System Administrator 役割には、Process Management プロファイルが含まれています。役割を作成してユーザーに割り当てる方法については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の管理 (作業マップ)」を参照してください。
次のどちらかの方法で資源上限デーモンを有効にします。
svcadm コマンドを使って、資源上限制御を有効にします。
# svcadm enable rcap |
資源上限デーモンを有効にして、ただちに起動し、かつ、システムをブートするたびに起動するようにします。次のように入力します。
# rcapadm -E |
資源上限デーモンをただちには起動せず、ブート時に有効にするには、-n オプションも指定します。
# rcapadm -n -E |
資源上限制御をシステムで無効にする方法は 3 つあります。
スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。
System Administrator 役割には、Process Management プロファイルが含まれています。役割を作成してユーザーに割り当てる方法については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の管理 (作業マップ)」を参照してください。
次のどちらかの方法で資源上限デーモンを無効にします。
svcadm コマンドを使用して、資源上限制御をオフにします。
# svcadm disable rcap |
資源上限デーモンを無効にして、ただちに停止し、かつ、システムをブートしても起動しないようにするには、次のように入力します。
# rcapadm -D |
資源上限デーモンを停止せずに無効にするには、-n オプションも指定します。
# rcapadm -n -D |
資源上限デーモンの安全な無効化
rcapd を安全に無効にするには、svcadm コマンド、または -rcapadm コマンドを D オプションとともに使用します。資源上限デーモンを強制終了すると (kill(1) のマニュアルページを参照)、プロセスが停止状態のままになり、手動で再起動しなければならない場合があります。プロセスの実行を再開するには、prun コマンドを使用します。詳細は、prun(1) のマニュアルページを参照してください。
この手順は、特定のゾーンで消費可能な最大のメモリー量を割り当てる場合に使用します。この値は、次の再起動までに限り有効です。持続的な上限を設定するには、zonecfg コマンドを使用します。
スーパーユーザーになるか、Process Management プロファイルが含まれている役割を引き受けます。
System Administrator 役割には、Process Management プロファイルが含まれています。
ゾーン my-zone に最大メモリーの値として 512M バイトを設定します。
# rcapadm -z testzone -m 512M |
資源上限制御の統計を報告するには、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 起動以降のページング統計が記載されています。at と pg の列において、user1 にはゼロより大きな値が入っており、user2 にはゼロが入っています。これは、1 回目の報告の期間中、user1 は上限を超えたが、user2 は超えなかったことを意味します。
2 回目以降の報告では、目立った活動はありません。
この例では、プロジェクト 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 は、上限に合わせて作業セットの一部をページアウトせざるを得ません。この状況では、次のうちのいずれかが起きるまで、システムのページフォルト率および関連する入出力は高いままです。
WSS が小さくなる。
上限を上げる。
アプリケーションのメモリーアクセスパターンが変わる。
この状況では、サンプリング間隔を短くすることで、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 オプションを使用すると、次のことを報告できます。
現在の物理メモリーの使用率 (システムにインストールされている物理メモリーに占めるパーセンテージ)
rcapadm で設定されたシステムメモリー上限実行しきい値
-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% |