本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

AIX での Lotus Domino のメモリー使用法

Eddy Bell (eddy@us.ibm.com), Software Engineer, IBM
In 1994, Eddy Bell left Sun Microsystems, where he worked on PC emulation products 386i (roadrunner), SunPC, and WABI, and moved to Lotus. At Lotus, Eddy was the Project Architect/Leader for porting Lotus Notes/Domino from Windows to UNIX. He is currently the Platform/OS Services Architect for Lotus Domino.

概要: Lotus Domino Server 用の IBM AIX セグメント・レイアウトと、Notes.ini ファイル設定の ConstrainedSHMSizeMB および PercentAvailSysResources によるサーバー・メモリー割り当ての変更方法を理解しましょう。また、サーバー設定に関する推奨事項についても説明します。

日付:  2006年 6月 09日 (公開: 2006年 3月 21日)
レベル:  初級 この記事の原文:  英語
アクティビティー: 2647 ビュー
お気軽にご意見・ご感想をお寄せください: 


[編集者のメモ:この記事で使用したグラフは、元は IBM Redbook『AIX における C および C++ アプリケーションの開発および移植 (SG88-6713-00) (US)』(PDF 4.93MB)で公表されたものです。説明文中におけるメモリセグメントの表が間違って解釈される可能性があるため、補足記事を「AIX での Lotus Domino のメモリー使用法」に掲載していますので、あわせてご覧ください。]

IBM AIX プラットフォームは、Lotus Domino をサポートする他のすべてのプラットフォームとは異なる方法でメモリーを扱います。AIX は、セグメント化されたアーキテクチャーを使用します。最大の長所は、強化されたパフォーマンスです。一方、短所としては、32 ビット・アドレス・スペースを最大限に活用するために、32 ビット・プログラムがセグメント化されたアーキテクチャーを認識しなければならない点が挙げられます。この記事では、AIX プラットフォームで可能な 32 ビット・アプリケーション用のセグメント・レイアウトと、現在 Lotus Domino が使用しているレイアウトについて解説します。また、異なる Domino メモリー・オプションを使用するときのセグメント・レイアウトの変化についても説明します。

この記事は、Lotus Domino のシステム管理者としての経験があり、AIX プラットフォームに習熟している方を対象として書かれています。

セグメント・レイアウトを理解する

デフォルトでは、AIX の 32 ビット仮想アドレス・スペースは、各 256 MB の 16 のセグメントで構成されています。デフォルトのセグメント・レイアウトを使用するすべてのアプリケーションでは、仮想アドレス・スペースは図 1 のようになっています。

  • 最初のセグメント (0x0) は、カーネル・テキストとデータ用に使用されます。
  • 2 番目のセグメント (0x1) は、ユーザー・テキスト用に使用されます。
  • 3 番目のセグメント (0x2) は、ユーザー・スタックとデータ用に使用されます。
  • 4 番目から 13 番目までのセグメント (0x3 〜 0xC) は、shmat() または mmap() のいずれかを呼び出した場合に、ユーザー・プロセス用に利用できます。
  • 14 番目のセグメント (0xD) は、共有ライブラリー・テキスト用に予約されています。
  • 15 番目のセグメント (0xE) は、ユーザー・プロセス用に使用されます。
  • 最後のセグメント (0xF) は、プリプロセス共有ライブラリー・データ用に使用されます。

図 1 で使用されている用語に慣れていない方のために、用語の定義を示しておきます。

  • テキスト:読み取り専用で実行可能なコード。カーネル・コード、ユーザー・コード、共有ライブラリー・コードのいずれかです。
  • データ:読み取り/書き込みデータ領域で、カーネル・データ、ユーザー・データ、共有ライブラリー・データのいずれかです。

メモ:共有メモリーを取得するために、Lotus Domino では Shmat() と mmap() が使用されます。


図 1. 仮想アドレス・スペースの例

AIX のラージ・メモリー・モデルを使用するプログラムは、図 2 に示されるメモリー・レイアウトを持ちます。

  • 最初のセグメント (0x0) は、カーネル・テキストとデータ用に使用されます。
  • 2 番目のセグメント (0x1) は、ユーザー・テキスト用に使用されます。
  • 3 番目のセグメント (0x2) は、ユーザー・スタックとデータ用に使用されます。
  • 4 番目から 7 番目までのセグメント (0x3 〜 0x6) は、プロセス・ヒープによって予約されています。
  • 8 番目から 13 番目までのセグメント (0x7 〜 0xC) は、shmat() または mmap() のいずれかを呼び出した場合に、ユーザー・プロセス用に利用できます。
  • 14 番目のセグメント (0xD) は、共有ライブラリー・テキスト用に予約されています。
  • 15 番目のセグメント (0xE) は、ユーザー・プロセス用に使用されます。
  • 最後のセグメント (0xF) は、プリプロセス共有ライブラリー・データ用に使用されます。

Lotus Domino の現在のバージョンは、AIX のラージ・メモリー・モデルを使用します。


図 2. AIX のラージ・メモリー・モデル

AIX 5L バージョン 5.2 以降には、超ラージ・メモリー・モデルがあります。これは、将来の Lotus Domino で使用したいモデルですが、現在は使用されていません。このモデルには、3 つのフォームがあります。最初のフォームは、256 MB より大きく 2.5 GB 未満のプロセス・ヒープ (ユーザー・データ) を持つプログラム用です (図 3 参照)。このモデルはデフォルトの AIX セグメント・レイアウトに似ていますが、動的セグメント割り当て (DSA) が使用されている場合、4 番目から 8 番目までのセグメント (0x3 〜 0x7) をユーザー・ヒープに利用できます。また、動的セグメント割り当てによって shmat() または mmap() が呼び出される場合、0xA から 0xE までのセグメントをユーザー・プロセス用に利用できます。


図 3. AIX の超ラージ・メモリー・モデル: 最初のフォーム

2 番目のフォームは、図 4 に示すように、2.5 GB よりも大きなプロセス・ヒープを持つプログラム用です。セグメントの構成は次のようになります。

  • セグメント 1 (0x0) は、カーネル・テキストとデータ用に予約されています。
  • セグメント 2 (0x1) は、ユーザー・テキスト用に予約されています。
  • セグメント 3 (0x2) は、ユーザー・スタック用に使用されます。ただし、このセグメント (0x2) では、共有ライブラリー・テキストとデータも使用されます。
  • セグメント 4 から 16 まで (0x3 〜 0xF) は、動的セグメント割り当てによって使用された場合に、ユーザー・ヒープ用に利用できます。
  • セグメント 0xB から 0xF までは、動的セグメント割り当てによって shmat() または mmap() が呼び出された場合に、ユーザー・プロセス用に利用できます。

図 4. AIX の超ラージ・メモリー・モデル: 2 番目のフォーム

3 番目のフォームは、256 MB 未満のプロセス・ヒープを持つプログラム用です (図 5 参照)。このフォームでは、セグメント構成は次のようになります。

  • 最初のセグメント (0x0) は、カーネル・テキストとデータ用に使用されます。
  • 2 番目のセグメント (0x1) は、ユーザー・テキスト用に使用されます。
  • 3 番目のセグメント (0x2) は、ユーザー・スタックとデータ用に使用されます。ただし、このセグメントには、共有ライブラリー・テキストとデータが保存されることもあります。
  • 残りのセグメント (0x3 〜 0xF) は、動的セグメント割り当てによって shmat() または mmap() が呼び出された場合に、ユーザー・プロセス用に利用できます。

図 5. AIX の超ラージ・メモリー・モデル: 3 番目のフォーム


Lotus Domino のメモリー制御オプション

AIX メモリー・モデルに関する基本情報が明らかになったので、Lotus Domino が使用するモデルと、Domino のメモリー制御オプションによってどのように仮想アドレス・スペースが変更されるのかを見ていきましょう。

この記事の残りの部分では、Domino Server の Notes.ini ファイルを設定することにより、セグメント・レイアウトを変更する方法について解説します。先に進む前に、表に示された情報を理解するために役立つ凡例について説明します。

  • プログラム名:これは、一般的な Domino アプリケーションの例です。
  • カーネル・テキストとデータ:このメモリーは共有されています。
  • ユーザー・テキスト:このメモリーは、同じ実行ファイルを持つすべてのプログラムによって共有されています (たとえば、3 つの update タスクは、3 つのタスク間で共有されている共有メモリーの1 つのチャンクだけを使用します)。
  • ユーザー・スタック:このセグメントは各プロセスに固有です。
  • プロセス・ヒープ:このセグメントは各プロセスに固有です。
  • 共有メモリー:このセグメントは、すべての Domino プロセスによって共有されています。
  • 共有ライブラリー・テキスト:このセグメントは、システム上のすべてのプロセスによって共有されています。
  • 利用不可セグメント:現在、Lotus Domino はこのセグメントを利用できません。
  • 共有ライブラリー・データ:このセグメントは各プロセスに固有です。
  • Domino 以外:このセグメントは、サード・パーティー製アプリケーションによって共有および使用されます。

すべての Domino アプリケーションによって共有されるプログラム共有データは、256 MB から開始し、空きセグメントの最大数に達するまで、必要に応じて 256 MB のセグメント単位で増加します。

Domino メモリー設定を有効にしていないときの結果を最初の表に示します。

Program namekernel text/data 256 MBUser text 256 MBUser stack 256 MBProcess heap 512 MBShared memory 2 GBShared lib textUnavailable segmentShared lib data
Server1234 and 56 to 13141516
HTTP1234 and 56 to 13141516
Update1234 and 56 to 13141516
N/A1234 and 56 to 13141516
Process stackProcess private dataDomino shared memoryThird-party API application shared memory
256 MB512 MB2048 MB0 MB

共有メモリーのレイアウトは次のとおりです。

  • NSF バッファー・プール (UBM=3/8 shm) = 750 MB
  • 他の Domino 共有メモリー = 1250 MB

ConstrainedSHMSizeMB による設定

Domino Server の Notes.ini ファイルでの ConstrainedSHMSizeMB 設定は、共有メモリーを制限します。この設定の使い方には次の 2 とおりの方法があります。「ConstrainedSHMSizeMB=1」と設定すると、共有メモリーはデフォルトのサイズに制限されます。AIX では、デフォルトのサイズは 2.25 GB です。この設定では、サイズをメガバイト単位で指定することもできます。この記事では、この方法を使用しています。たとえば、次のように設定を変更します。

ConstrainedSHMSizeMB = 1744

この場合は、次の表に示す結果が得られます。

Program namekernel text/data 256 MBUser text 256 MBUser stack 256 MBProcess heap 512 MBShared memory 1.744 GBNon-Domino 256 MBShared lib textUnavailable segmentShared lib data
Server1234 and 56 to 1213141516
HTTP1234 and 56 to 1213141516
Update1234 and 56 to 1213141516
N/A1234 and 56 to 1213141516
Process stackProcess private dataDomino shared memoryThird-party API application shared memory
256 MB512 MB1744 MB256 MB

共有メモリーのレイアウトは次のとおりです。

  • NSF バッファー・プール (UBM=3/8 shm) = 654 MB
  • 他の Domino 共有メモリー = 1099 MB

Notes.ini ファイルで「ConstrainedSHMSizeMB= 1744」と設定し、さらに使用されている dataseg を 3 (データ・セグメントの数) に設定すると、次の表に示す結果が得られます。

Program namekernel text/data 256 MBUser text 256 MBUser stack 256 MBProcess heap 768 MBNon-Domino 1.744 GBShared lib textUnavailable segmentShared lib data
Server1234 to 67 to 13141516
HTTP1234 to 67 to 13141516
Update1234 to 67 to 13141516
N/A1234 to 67 to 13141516
Process stackProcess private dataDomino shared memoryThird-party API application shared memory
256 MB768 MB1744 MB0 MB

共有メモリーのレイアウトは次のとおりです。

  • NSF バッファー・プール (UBM=3/8 shm) = 654 MB
  • 他の Domino 共有メモリー = 1099 MB

次の表では、ConstrainedSHMSizeMB は 1024 MB に設定されています。

Program namekernel text/data 256 MBUser text 256 MBUser stack 256 MBProcess heap 512 MBShared memory 1024 MBNon-Domino 1024 MBShared lib textUnavailable segmentShared lib data
Server1234 and 56 to 910 to 13141516
HTTP1234 and 56 to 910 to 13141516
Update1234 and 56 to 910 to 13141516
N/A1234 and 56 to 910 to 13141516
Process stackProcess private dataDomino shared memoryThird-party API application shared memory
256 MB512 MB1024 MB1024 MB

共有メモリーのレイアウトは次のとおりです。

  • NSF バッファー・プール (UBM=3/8 shm) = 384 MB
  • 他の Domino 共有メモリー = 640 MB

PercentAvailSysResources による設定

Domino Server の Notes.ini ファイルで PercentAvailSysResources を設定すると、サーバーでのメモリー割り当てを制御できます。この設定の値の範囲は、2 パーセントから 100 パーセントまでです。次の表では、4 GB のメモリーを持つシステムで PercentAvailSysResources が 25 パーセントに設定されています。言い換えると、Domino Server に 1 GB のメモリーが割り当てられていることになります。

Program namekernel text/data 256 MBUser text 256 MBUser stack 256 MBProcess heap 512 MBShared memory 2048 MBShared lib textUnavailable segmentShared lib data
Server1234 and 56 to 13141516
HTTP1234 and 56 to 13141516
Update1234 and 56 to 13141516
N/A1234 and 56 to 13141516
Process stackProcess private dataDomino shared memoryThird-party API application shared memory
256 MB512 MB2028 MB0 MB

共有メモリーのレイアウトは次のとおりです。

  • NSF バッファー・プール (UBM=3/8 shm) = 384 MB
  • 他の Domino 共有メモリー = 1664 MB

この設定では、NSF バッファー・プールの設定は 3/8 * (RAM * .25) を使用しています。オペレーティング・システムで設定されているセグメントの制限以外には、Domino 共有メモリーの増加の上限は定義されていません。

Notes.ini ファイルで NSF_BUFFER_POOL_SIZE_MB= 512 とPercentAvailSysResources=25 を設定したときの結果を次の表に示します。

Program namekernel text/data 256 MBUser text 256 MBUser stack 256 MBProcess heap 512 MBShared memory 2048 MBShared lib textUnavailable segmentShared lib data
Server1234 and 56 to 13141516
HTTP1234 and 56 to 13141516
Update1234 and 56 to 13141516
N/A1234 and 56 to 13141516
Process stackProcess private dataDomino shared memoryThird-party API application shared memory
256 MB512 MB2028 MB0 MB

共有メモリーのレイアウトは次のとおりです。

  • NSF バッファー・プール (UBM=3/8 shm) = 512 MB
  • 他の Domino 共有メモリー = 1536 MB

この設定では、NSF バッファー・プールの設定は直接行われ、PercentAvailSysResources は無視されます。オペレーティング・システムで設定されているセグメントの制限以外には、Domino 共有メモリーの増加の上限は定義されていません。


推奨事項

どの形式の ConstrainedSHMSizeMB も使用しないことを推奨します。現在使用されている AIX のラージ・メモリー・モデルでは、共有メモリーを必要とするサード・パーティー製アプリケーションをサポートする場合にのみ ConstrainedSHMSizeMB を使用してください。この設定を使用した場合、Lotus Domino が使用できる仮想アドレス・スペースが減少します。これが、Domino をサポートする他のすべてのプラットフォームとは異なる点です。他のプラットフォームでは、ConstrainedSHMSizeMB を使用して共有メモリーを減少させると、アプリケーション用のプライベート・データ・スペースの量が自動的に増加します。

例を用いてこれを説明しましょう。Domino Server は、1024 MB のプライベート・データ・スペースを必要とする非常に負荷の高い Lotus Domino Web Access HTTP を実行しているものとします。AIX では、Domino のプログラム・ディレクトリーで dataseg -f 4 * を使用することにより、すべての Domino プログラム・ファイルがプライベート・メモリーの 4 つのセグメントを使用できるようになります。他のプラットフォームでは、オペレーティング・システムで設定された仮想アドレス・スペースのサイズを使用する必要があります。次に、プログラム・テキストと共有ライブラリー・テキスト用に使用されるスペースを差し引きます。これにより、Lotus Domino が利用できる仮想データ・スペースの量が求められます。この例では、Lotus Domino が利用できる仮想データ・スペースから 1024 MB を差し引き、これを ConstrainedSHMSizeMB 設定に使用します。


参考文献

学ぶために

製品や技術を入手するために

議論するために

著者について

In 1994, Eddy Bell left Sun Microsystems, where he worked on PC emulation products 386i (roadrunner), SunPC, and WABI, and moved to Lotus. At Lotus, Eddy was the Project Architect/Leader for porting Lotus Notes/Domino from Windows to UNIX. He is currently the Platform/OS Services Architect for Lotus Domino.

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=338296
ArticleTitle=AIX での Lotus Domino のメモリー使用法
publish-date=06092006
author1-email=eddy@us.ibm.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。