このドキュメントは、UNIX および Linux 用 Caché インストール・ガイド の一部です。この章では、システムに最適なパラメータの計算方法について説明します。この章は、以下の 2 つのセクションに分かれています。
Caché の最善のパフォーマンスを得るには、特定の Caché システム・パラメータに適切な値を計算する必要があります。これらの値から、ユーザは一定のシステム・レベル・パラメータを調整する必要があるかどうかを決定できます。ディスク・アクセスが必要なスワッピングやページングを最小限に抑える値を選択することにより、システムのパフォーマンスが向上します。
このセクションの内容をよく読んで、ご使用のオペレーティング・システムと Caché の両方に最適な値を計算してください。ここに記載されている表を使用して、現在のシステムから計算された値をシステム・レベル・パラメータとして記録してください。Caché のインストール時にこの表を参照できます。最適のパフォーマンスを得るためには、システムの稼動後、必要に応じて値を修正します。
ご使用のオペレーティング・システム・レベルのメモリ組織に精通していない場合は、適切なシステム・ドキュメントを参照してください。
メモリとディスク要件の決定
このセクションでは、多くのシステムで必要となる基本的システム要件の概要を説明します。これらの要件はプラットフォームによって異なるため、詳細は使用しているプラットフォームのマニュアルを参照してください。
メモリ要件の計算
以下の表に記載されているメモリ使用状況の内訳から、Caché に必要なメモリ量を計算します。以下は、(Windows クライアント・システムから) Caché 構成マネージャを使用して、パラメータを変更することを想定しています。
メモリ要件
コンポーネント メモリ要件
オペレーティング・システム 1800 KB (オペレーティング・システムに依存)
Caché 842 KB
グローバル・データベース・キャッシュ 2 KB ブロック・サイズを使用している場合は 2.2 KB、8 KB ブロック・サイズを使用している場合は 8 KB
ルーチン・キャッシュ 32 KB
ユーザ・オーバーヘッド プロセスごとに 1024 KB。ユーザ・パーティション・サイズは、ユーザ・オーバーヘッドの一部を構成しているものですが、Caché 構成マネージャで調整できます。パーティションは、16 MB まで設定できます。
ネットワーク (存在する場合) 各ネットワーク・システム・プロセス (DMNNET、DCP、RECEIVE) のポートごとに 300 KB。Caché ポートには、1 ポートにつき 2 つの DMNNET システム・プロセスがあります。さらに、ネットワークが共有するメモリ要件があります。 この値は、ポート数および構成されているリモート・ホスト数によって異なります。標準のシステムにおけるメモリ要件は約 304 KB です。
共有メモリ、グローバル・バッファまたはルーチン・バッファのスワップ領域に対し、Caché は既定で 7 MB を割り当てます。これは、Caché を初めてインストールする際に必要な容量です。大容量のアプリケーションや大規模なユーザをサポートする計画がある場合、以下の公式に従ってシステムを調整します。
                        (ルーチン・バッファ数) * 32 KB +    (グローバル・バッファ数) *8 KB +                              4 MB ___________________________________ =                 必要な共有メモリ
スワップ領域の計算
ユーザのシステムで利用できるスワップ領域の容量は、実際のメモリに 256 KB を加算した値以下にならないようにしてください。
インターシステムズは、この最小値を考慮した上で、Caché に最低限必要なスワップ領域として以下の値をお勧めします。
                       (プロセス数 + 4)† * (1024 KB)‡ +            全グローバル・バッファ領域 +          全ルーチン・バッファ領域_____________________________________ =                  最小のスワップ領域
† Caché コントロール・プロセス、ライト・デーモン、ガーベッジ・コレクタ、およびジャーナル・デーモンについては、プロセス数に 4 を追加します。また、各スレーブのライト・デーモンに 1 を加算します。プロセス数には、同時に実行する可能性があるすべてのユーザ・プロセスおよびジョブ・プロセスを含む必要があります。ネットワーク接続の場合、ユーザが実行している DMNNET デーモン数 (ポートごとに 2 つ) と RECEIVE システム・プロセス数に 1 を加算します。ご使用のシステムがサーバの場合、すべてのクライアントがサーバにアクセスしたときに生成される DCP プロセス数を追加します。
‡ 1024 KB という数字は概算です。これは、Caché の実行プログラムの現在のサイズから計算しているため、Caché の各プロセスに構成マネージャから割り当てられるパーティション・サイズによって変更します。多くのシステムでは、ユーザは必要な量だけのスワップ領域を割り当てようとしますが、システムによっては、最悪のケースに備えてスワップ領域を割り当てるように要求する場合もあります。このような場合、ユーザが指定するパーティション・サイズによっては、この数字を 1.5 MB まで上げる必要があります。
ご使用の UNIX システムで、必要なスワップ領域が使用可能かどうかを必ず確認してください。システムのスワップ領域に関する詳細情報については、使用している UNIX オペレーティング・システムのマニュアルを参照してください。
Solaris スワップ領域
Solaris 8、および 9 プラットフォームのスワップ領域を計算する方法は、以下の通りです。
swap –l
以下はその例です。
>swap –l
swapfile                   dev     swaplo blocks   free
/dev/dsk/c0t2d0s0         136,0      16    526304   526304
/dev/dsk/c0t2d0s1         136,1      16    2101184 2101184
Tru64 UNIX スワップ領域
Tru64 UNIX のスワップ領域を表示する方法は以下の通りです。
/usr/sbin/swapon -s 
各スワップ・パーティションに関する情報は、以下の例のように表示されます。
Swap partition /dev/disk/dsk1b (default swap):
         Allocated space:        16384 pages (128MB)
         In-use space:           10452 pages ( 63%)
         Free space:              5932 pages ( 36%)
   
Swap partition /dev/disk/dsk4c:
         Allocated space:        128178 pages (1001MB)
         In-use space:            10242 pages (  7%)
         Free space:             117936 pages ( 92%)
    
Total swap allocation:
         Allocated space:        144562 pages (1.10GB)
         Reserved space:          34253 pages ( 23%)
         In-use space:            20694 pages ( 14%)
         Available space:        110309 pages ( 76%)
AIX スワップ領域
AIX のスワップ領域を表示する方法は以下の通りです。
lsps –a
Page Space  Physical Volume   Volume Group    Size %Used  
Active  Auto  Type
hd6         hdisk2            rootvg                   512MB      72     
yes   yes    lv
HP-UX スワップ領域
HP-UX のスワップ領域を表示する方法は以下の通りです。
swapinfo (3M)
# /usr/sbin/swapinfo
             Kb      Kb      Kb   PCT  START/      Kb
TYPE      AVAIL    USED    FREE  USED   LIMIT RESERVE  PRI  NAME
dev      524288  138260  386028   26%       0       -    1  /dev/vg00/lvol2
reserve       -   78472  -78472
memory   195132  191668    3464   98%
ディスク要件の計算
計算したスワップ領域以外に、以下の項目にもディスク容量が必要です。
インストール・プロシージャの完了後、インストール・ファイルを削除する必要はありませんが、ディスク容量が不足しているときには削除できます。インストール・プログラムは、ユーザに残りのディスク容量を示し、インストール・ファイルを削除するかどうかを尋ねます。
グローバル・バッファ数の決定
Caché は、以下の最大グローバル・バッファ数をサポートします。
Note:
2 KB のデータベースのみを使用するように構成している場合も、CACHESYSCACHETEMP の Caché データベースは 8 KB になります。ユーザの指定にかかわらず、システムは常に、少なくとも 8 KB のバッファを 200 設定します。通常、特に Caché SQL を頻繁に使用する場合などは、この値を増やして設定します。
上記の最大バッファ数以下の値を設定してください。
ルーチン・バッファ数の決定
Caché は、以下の最大ルーチン・バッファ数をサポートします。
65,535
上記の最大バッファ数以下の値を設定してください。
最大ユーザ数の決定
Caché が認める最大ユーザ数は、以下の内で 最も小さい値 です。
最大データベース・サイズの決定
UNIX の ulimit パラメータにより、プロセスで利用できる最大ファイル・サイズが決まります。Caché 管理者グループでは、ulimit の値を無制限、あるいはユーザが持つ最大のデータベースと同じ大きさに指定する必要があります。
UNIX カーネル・パラメータの構成
以下のセクションでは、さまざまな UNIX プラットフォームでの調節やパフォーマンスについて説明します。
調節可能な UNIX パラメータ値の設定
Caché は、ユーザがサイズを定義したセットに、構造化可能なセマフォ数を使用します。パラメータ SEMMNISEMMNSSEMMSL は、セットごとのセマフォ数と Caché が使用するセマフォ総数を示します。共有メモリの割り当てを決定する UNIX のパラメータと Linux のパラメータは、SHMMAXSHMMNISHMSEG、および SHMALL です。Caché は共有メモリを使用し、共有メモリのセグメントを 1 つ割り当てます。 このセグメントのサイズは、グローバル・バッファとルーチン・バッファに設定された領域によって異なります。以下の数式を使用して、セグメントの最小サイズを決定します。
                       ルーチン・バッファに必要な領域 +  グローバル・バッファに必要な領域 +                               4 MB _____________________________________ =         共有メモリ・セグメントのサイズ
データを複数のコンピュータに分散する場合、Caché は 2 次セグメントを割り当てます。既定では、2 次セグメントにはメモリを割り当てません 。(分散型データを使用する予定がある場合、構成のガイドラインについて、販売代理店もしくはインターシステムズ ジャパンのサポート窓口までお問い合わせください)。その他のシステム要件に従って、NBUFNHBUF を変更できます。Caché は自身のディスクのすべてをバッファリングするため、NBUFNHBUF を小さく設定しておく必要があります。以下の表は、UNIX パラメータの最も一般的な名前 (変更が必要になる場合もあります)、インターシステムズが推薦する各パラメータの値、それらの概要の一覧です。ユーザのパラメータ値が、少なくともこの最小値以上に設定されていることを確認してください。プラットフォームによっては、実装されないパラメータや異なる形で参照されるパラメータもあるため、詳細は、プラットフォーム固有の調節の注意を参照してください。
調節可能な UNIX パラメータ
カーネル・パラメータ 最小推奨値 定義
CDLIMIT 最大仮想ボリュームでのバイト数 最大ファイル・サイズ
MSGMAX 2 最大メッセージ・サイズ (単位はバイト)
MSGMNI 2 同時に存在する可能性がある、一意に識別できる最少メッセージ列数
NOFILES 35 プロセスごとのオープン・ファイル数
SEMMNI SEMMNI と SEMMSL との積は、ユーザ・プロセス数に 4 加算した数よりも大きくなければなりません。 カーネル内のセモフォ識別子の数 (いつでも有効にできる一意のセマフォ設定の数)
SEMMNS 128 または ... システム内の総セマフォ数。ユーザ・プロセスには、ジョブ起動プロセスおよび他のソフトウェアに必要な、他のすべてのセマフォが含まれています。
実行される予定のプロセス数。プロセス テーブルが拡大する可能性がある場合、大きめの数値を使用します。
SEMMSL SEMMNI 参照 識別子リストごとの最大セマフォ数
SHMALL 60 または ... システム全体の共有メモリの最大総数値 (単位は KB)。1000 は MCOMMON 共有域を示します。
1000 + 全グローバル・バッファ領域 + 全ルーチン・バッファ領域 *
SHMMNI 3 システム全体の最大共有メモリ識別子数
SHMSEG 3 プロセスごとに付随する共有メモリ・セグメント数
SHMMAX 60 または ... 共有メモリ・セグメントの最大サイズ (KB)。
1000 + 全グローバル・バッファ領域 + 全ルーチン・バッファ領域
* これは、Caché UNIX で必要とされる SHMALL の最小値です。システムの共有メモリを使用する他のすべてのアプリケーションについても考慮する必要があります。共有メモリの使用量が不確かな場合、SHMSEGSHMMAX の積から SHMALL を計算します。単位はページです。どのような場合でも、この大きい方の値を適用すれば十分です。
Important:
オペレーティング・システム・ドキュメントが明示していない限りは、割り当てられたメモリをサポートするため、十分なスワップ領域が必要です。 特定のオペレーティング・システム (Solaris など) では、Caché はページング不可能な “ロックされた共有メモリ・セグメント” を作成します。しかし、オペレーティング・システム・ドキュメントが明示していない限り、これらのメモリ・セグメントはスワップ領域が必要です。
プラットフォーム構成の問題
以下のセクションは、個別のプラットフォームに対する構成の問題を含みます。詳細は、使用しているプラットフォームのシステム・マニュアルを参照してください。
Tru64 UNIX プラットフォームの問題
Tru64 UNIX サポート対象のリリースでは、以下のカーネル・パラメータを、割り当てるすべての共有メモリ・サイズに設定することをお勧めします (バッファ・プールやルーチン・バッファ、他のデータ構造に割り当てられた領域を含む)。
以下のパラメータは実装されていません。
SMMAX および SMSEG は、それぞれ SHMMAXSHMSEG と呼ばれます。
sysconfig -q subsystem [attribute] コマンドは、指定されたサブシステムの属性に対する現在の値、または指定された特定の属性を表示します。詳細は、sysconfig(8) に対する Tru64 UNIX ドキュメント・エントリを参照してください。
以下はその例です。
>sysconfig -q ipc
msg_max = 8192
msg_mnb = 16384
msg_mni = 64
msg_tql = 40
shm_max = 268435456
shm_min = 1
shm_mni = 128
shm_seg = 32
sem_mni = 16
sem_msl = 1000
sem_opm = 10
sem_ume = 10
sem_vmx = 32767
sem_aem = 16384
max_kernel_ports = 56864
ssm_threshold = 8388608
ssm_enable_core_dump = 1
shm_allocate_striped = 1
shm_enable_core_dump = 1
属性の値を永久に変更するには、sysconfigdb -a -f stanza_file subsystem コマンドを使用して、サブシステム、属性、および新しい永続属性値を含む stanza 形式のファイルを指定します。サブシステムの引数は、ユーザが変更したい属性を持つサブシステムを指定します。
以下は、ipc サブシステム属性 shm_maxsem_msl の永続値を変更する stanza 形式の例です。
ipc:
  shm_max = 268435456
  sem_msl = 1000
stanza 形式ファイルに関する詳細は、stanza(4)sysconfigdb(8) を参照してください。
新規の永続値を使用するには、システムを再起動するか、属性を実行時に調整することができる場合は、sysconfig -r コマンドを使用して現在の値を変更します (詳細は、Tru64 UNIX System Configuration and Tuning guide の Section 3.6.4 を参照してください)。
SUN Solaris プラットフォームの問題
以下は、SUN Solaris バージョン 8 と 9 プラットフォームで Caché を構成し、調整するときに必要な説明です。
  1. 以下のパラメータ CDLIMITNOCALL、および SHMALL は実装されていません。
  2. NOFILES パラメータは無制限です。
  3. /etc/system ファイルを編集し、以下の変数を追加して、共有メモリ・セグメントを増加します。
    set shmsys:shminfo_shmmax=value
    set shmsys:shminfo_shmmin=value
    set shmsys:shminfo_shmmni=value
    set shmsys:shminfo_shmseg=value
    set semsys:seminfo_semmap=value
    set semsys:seminfo_semmni=value
    set semsys:seminfo_semmns=value
    set semsys:seminfo_semmsl=value
    set semsys:seminfo_semmnu=value
    set semsys:seminfo_semume=value
    
    共有メモリ変数
    変数 概要
    shmsys:shminfo_shmmax 共有メモリ・セグメントの最大サイズ
    shmsys:shminfo_shmmin 共有メモリ・セグメントの最小サイズ
    shmsys:shminfo_shmmni 共有メモリ識別子の数
    shmsys:shminfo_shmseg プロセスごとのセグメント数
    semsys:seminfo_semmap セマフォ・マップでのエントリ数
    semsys:seminfo_semmni セマフォ識別子数
    semsys:seminfo_semmns システム内のセマフォ数
    semsys:seminfo_semmsl ID ごとの最大セマフォ数
    semsys:seminfo_semmnu undo 機能を使用したプロセス数
    semsys:seminfo_semume プロセスごとの undo 構造数
  4. 共有メモリ値の変更を検証します。
    # grep shmsys /etc/system
  5. システムを再起動します。
    # init 6
以下の共有メモリ値のサンプルは、大規模なデータベース・アプリケーションを実行している大規模なメモリ (128 MB) のシステムを割り当てます。
set shmsys:shminfo_shmmax=268435456
set shmsys:shminfo_shmmin=200
set shmsys:shminfo_shmmni=200
set shmsys:shminfo_shmseg=200
set semsys:seminfo_semmap=250
set semsys:seminfo_semmni=500
set semsys:seminfo_semmns=500
set semsys:seminfo_semmsl=500
set semsys:seminfo_semmnu=500
set semsys:seminfo_semume=100
AIX プラットフォームの問題
一覧のパラメータは調整の必要がありません。 各パラメータはカーネルによって必要に応じて動的に調整されるからです。詳細は、AIX operating system documentation を参照してください。
以下の表は、IBM pSeries AIX 5.2 オペレーティング・システムに対して調整可能なパラメータの一覧です。
AIX プロセス間通信の調整可能なパラメータ
パラメータ 目的 動的値
msgmax 最大メッセージ・サイズを指定します 最大値 4 MB
msgmnb キューでの最大バイト数を指定します 最大値 4 MB
msgmni メッセージ・キュー ID の最大数を指定します 最大値 4096
msgmnm キューごとの最大メッセージ数を指定します 最大値 524288
semaem 終了の調整最大値を指定します 最大値 16384
semmni セマフォ ID の最大数を指定します 最大値 4096
semmsl ID ごとの最大セマフォ数を指定します 最大値 65535
semopm semop() 呼び出しごとの最大オペレーション数を指定します 最大値 1024
semume プロセスごとの最大 undo エントリ数を指定します 最大値 1024
semvmx セマフォの最大値を指定します 最大値 32767
shmmax 共有メモリ・セグメントの最大サイズを指定します 32 ビット・プロセスでは最大値 256 MB、64 ビットでは最大値 0x80000000u
shmmin 共有メモリ・セグメントの最小サイズを指定します 最小値 1
shmmni 共有メモリ ID の最大数を指定します 最大値 4096
HP-UX プラットフォームの問題
リリース 11i の HP-UX では、パラメータ CDLIMITNOFILES は実装されていません。バージョンによっては、SEMMSL はコードで直接 500 と指定されており、NCALLNCALLOUT と呼ばれます。
HP システム V IPC 共有メモリ・サブシステムを使用してパラメータを更新します。詳細は、HP システム V 内部プロセス通信メカニズムのオンライン ドキュメント ページを参照してください。値を変更するには、以下の手順を実行してください。
  1. システム管理マネージャ (SAM) プログラムを起動するために、/usr/sbin/sam コマンドを入力します。
  2. [Kernel Configuration] アイコンをダブルクリックします。
  3. [Configurable Parameters] アイコンをダブルクリックします。
  4. 変更したいパラメータをダブルクリックし、[Formula/Value] フィールドに新規の値を入力します。
  5. [OK] ボタンをクリックします。
  6. 上記の手順を、変更したいすべてのカーネル構成パラメータに対して繰り返します。
  7. すべてのカーネル構成パラメータの設定が完了したら、[action] メニューから [Process New Kernel] を選択します。
カーネル構成パラメータの値の変更後、HP-UX オペレーティング・システムは自動的に再起動します。
Red Hat Linux プラットフォームの問題
Linux プラットフォームでの、既定の共有メモリ制限 (shmmax) は、32 MB です。この値は Caché では小さすぎますが、proc ファイル・システムで変更することができます。 その場合、再起動は必要ありません。
Caché 用にのみマシンを使用している場合、InterSystems では、共有メモリをメモリの総容量の約半分に設定することをお勧めします。
例えば 128 MB で設定したい場合は、以下のコマンドを入力します。
$ echo 134217728 >/proc/sys/kernel/shmmax
上記のコマンドは、スタートアップ時のスクリプトで入力することができます。
また、sysctl(8) が利用できる場合はこれを利用して、パラメータを制御することもできます。/etc/sysctl.conf というファイルを検索し、以下のような行を追加します。
kernel.shmmax = 134217728
このファイルは通常、スタートアップ時に処理されますが、sysctl は後で明示的に呼び出すこともできます。
他のパラメータは、Caché アプリケーションに対して効果的にサイズ調整されています。他のパラメータの値を表示するには、/usr/src/linux/include/asm-xxx/shmparam.h/usr/src/linux/include/linux/sem.h の 2 つのファイルを参照してください。
詳細は、Red Hat Database:Administrator and User's GuideManaging Kernel Resources の章を参照してください。
SuSE Linux プラットフォームの問題
SuSE LInux プラットフォームでの、既定の共有メモリ制限 (shhmaxshmall) は Caché にとって小さ過ぎます。この制限は、再起動しなくても proc ファイル システム内で変更できます。
Caché 用にのみマシンを使用している場合、InterSystems では、共有メモリをメモリの総容量の約半分に設定することをお勧めします。
例えば 512 MB で設定したい場合は、以下のコマンドを入力します。
#sets shmall and shmmax shared memory
echo 536870912 >/proc/sys/kernel/shmall     #Sets shmall to 512 MB
echo 536870912 >/proc/sys/kernel/shmmax     #Sets shmmax to 512 MB
上記のコマンドは、スタートアップ時のスクリプトで入力することもできます。
また、/etc/profile というファイルを変更することにより、システム メモリ ユーザ制限に対する設定を変更します。以下のような行を追加します。
 
#sets user limits (ulimit) for system memory resources
ulimit -v 512000     #set virtual (swap) memory to 512 MB 
ulimit -m 512000     #set physical memory to 512 MB
 
この同じファイルで、以下のような行を追加することにより、PATH パラメータと CLASSPATH パラメータの値を永久に変更できます。
#sets env values PATH and CLASSPATH
export PATH=$PATH:/usr/cache/bin:/path/to/j2sdk/bin:/.
export CLASSPATH=
      $CLASSPATH:/cache/dev/java/lib/CacheDB.jar:/path/to/otherjar/file:/.