Linuxカーネル・パラメータの構成
想定されるデータベース・サイズおよびデータベースへの同時接続数に基づいて、インスタンスを実行するホストでカーネル・パラメータを構成する必要があります。
データ・インスタンスを実行するホストの場合:
管理インスタンスを実行するホストの場合:
SHMMAXおよびSHMALLパラメータの設定
TimesTen Scaleout内のデータベースは複数の要素で構成されており、各要素にはデータベース内のデータの一部が格納されています。各要素は、共有メモリー・セグメント内に存在します。Linuxでは、共有メモリー・セグメントは複数のページで構成されており、デフォルトのページ・サイズは通常4 KB (4,096バイト)です。次のコマンドを実行してデフォルトのページ・サイズを確認できます。
% getconf PAGESIZE
4096
次の共有メモリーのカーネル・パラメータを構成して、共有メモリー・セグメントのサイズを制御します。
-
shmmax
: 1つの共有メモリー・セグメントの最大サイズ(バイト単位)。この値は、要素の共有メモリー・セグメントの合計サイズに対応できる十分な大きさである必要があります。 -
shmall
: ページ単位で表されるシステム全体の共有メモリー・セグメントの合計サイズ。この値は、ページ・サイズ(4 KB)の倍数で表され、shmall * pagesize
は、shmmax
の値以上にする必要があります。shmall
の値は、物理RAMの合計量以下に設定することをお薦めします。物理メモリーの合計量を表示するには、Linuxcat /proc/meminfo
コマンドを実行します。
ttShmSize
ユーティリティを使用して、PermSize
、TempSize
、LogBufMB
およびConnections
接続属性に予定または設定されている値に基づいて、共有メモリー・セグメントのサイズを決定します。これらの接続属性によって、要素のサイズが決まります。
ノート:
-
ttShmSize
ユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttShmSizeを参照してください。 -
各接続属性の詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのPermSize、TempSize、LogBufMBおよびConnectionsを参照してください。
-
PermSize
値の決定の詳細は、「PermSize属性の値の決定」を参照してください。 -
PermSize
またはTempSize
属性の変更の詳細は、「データベースの接続属性の変更」を参照してください。
この例では、データベースの各要素のPermSize
値は32 GB (32,768 MB)、TempSize
値は4 GB (4,096 MB)、LogBufMB
値は1 GB (1,024 MB)およびConnections
値は2,048です。ttShmSize
ユーティリティでこれらの値を使用して、要素の共有メモリー・セグメントに必要なサイズを決定します。
% ttShmSize -connstr "DSN=database1;PermSize=32768;TempSize=4096;LogBufMB=1024;Connections=2048"
The required shared memory size is 39991547720 bytes.
ノート:
-
ttShmSize
ユーティリティの-connStr
オプションには、システムまたはユーザーの.odbc.ini
ファイルに登録されているデータベース名(DSN)が必要です。ユーザーの.odbc.ini
ファイル内のDSNを使用できます。ttShmSize
では、-connStr
オプションでリストされない接続属性については.odbc.ini
ファイル内にリストされている設定が使用されるということを考慮に入れてください。ttShmSize
では、属性が-connStr
オプションと.odbc.ini
ファイルの両方にない場合は、デフォルトが使用されます。現在のOSユーザーの.odbc.ini
ファイルにデータベース名を追加するには、次の手順を実行します。% vi ~/.odbc.ini ... [database1]
-
管理インスタンスを実行するホストの場合、
shmmax
およびshmall
のサイズは、共有メモリー・セグメントのサイズに基づいて400 MB以上に設定します。より大きいshmmax
およびshmall
が他のアプリケーションで必要になる場合は、これらの設定を増やすことができます。 -
shmmax
およびshmall
の値は、データ・インスタンスを実行する各ホストで同じである必要があります。同様に、これらの値は管理インスタンスを実行する各ホストで同じである必要があります。
shmmax
およびshmall
のサイズを設定するには、次の手順を実行します。
ノート:
shmmax
およびshmall
の設定は、それらをさらに大きくする必要があるアプリケーションが他にある場合は、大きくしてかまいません。
HugePagesの構成
メモリー管理を効率化するためにHugePages
を構成できます。管理インスタンスを実行するホストの場合、HugePages
を構成する必要はありません。構成後は、HugePages
に割り当てられたメモリーは、Linuxシステム上のRAM合計から取得され、他の用途には使用できません。また、HugePages
メモリー・セグメントは自動的にロックされ、ファイル・システムにスワップできません。
HugePages
を構成するには、次のことを把握する必要があります。
-
要素の共有メモリー・セグメントの最大サイズ
-
Linuxシステムの
HugePages
ページ・サイズ -
インスタンス管理者のグループID
SHMMAXおよびSHMALLパラメータの設定の例(ここでは、shmmax
値は39,054,246 kB)、およびTimesTenユーザー・グループおよびオペレーティング・システム・ユーザーの作成の例(ここではinstanceadmin
ユーザーのグループIDは10000)を使用します。
-
共有メモリー・セグメントの合計サイズは39,054,246 kBです。
-
HugePages
ページ・サイズは2,048 KBです。(この値はプラットフォームごとに固定され、構成できません。)HugePagesページ・サイズを決定するには、Linux
cat /proc/meminfo|grep
Hugepagesize
コマンドを実行します。% cat /proc/meminfo | grep Hugepagesize Hugepagesize: 2048 kB
-
グループIDは10,000です。
インスタンス管理者のグループIDを決定するには、
instanceadmin
ユーザーとして、次を実行します。% id uid=55000(instanceadmin) gid=10000(g10000)groups=10000(g10000)
HugePages
を構成するには、次を実行します。
ノート:
-
データ・インスタンスを実行するホストの場合、これらのホストの
HugePages
は同じである必要があります。 -
HugePages
は連続した使用可能メモリー領域への割当てが必要なため、システムを再起動するまでは、要求された割当てが設定されないか、部分的にのみ設定される場合があります。/proc/meminfo
からHugePages_Total
およびHugePages_Free
の値を確認します。再起動するときには、システムで十分なメモリーを使用できると想定し、すべて割り当てられます。 -
TimesTen PL/SQL共有メモリー・セグメントは、構成されている
HugePages
割当ての一部を使用します(PLSQL_MEMORY_SIZE
接続属性の値によって決定されます)。『Oracle TimesTen In-Memory Databaseリファレンス』のPLSQL_MEMORY_SIZEを参照してください。 -
Linuxでは、
HugePages
セグメントは自動的にロックされ、メモリー・セグメントはファイル・システム・スワップの対象になりません。したがって、HugePages
を構成する場合は、MemoryLock
接続属性を設定する必要はありません。
MEMLOCKパラメータの設定
/etc/security/limits.conf
ファイルのmemlock
エントリは、ユーザーがロックできるメモリー量を制御します。これらのエントリはシステム・レベルで設定され、MemoryLock
接続属性の設定とは異なります。管理インスタンスを実行するホストの場合、memlock
パラメータの設定はオプションです。データ・インスタンスを実行するホストの場合、hard
memlock
およびsoft
memlock
のエントリ(KBで表される)を、各要素の共有メモリー・セグメントのサイズに設定します。HugePages
が構成されている場合、memlock
値は、共有メモリー・セグメントのサイズに対応できるように大きくする必要があります。そうしないと、要素がメモリーにロードされません
たとえば、instanceadmin
ユーザーについては、共有メモリー・セグメントの合計サイズが39,054,246 kBだとすると、memlock
エントリを39054246
に設定します。
ノート:
データ・インスタンスを実行するホストの場合、これらのホストのmemlock
設定は同じにする必要があります。同様に、管理インスタンスを実行するホスト間では、それらのmemlock
設定を同じにする必要があります。
SEMMSLおよびSEMMNSパラメータの設定
TimesTenでは、データベースへの最大接続数に上限があります。データベース接続は次のもので構成されます。
-
ユーザー接続: ユーザー・アプリケーションによって確立されます
-
システム接続: TimesTenによって内部的に確立されます(接続数を48に設定)
-
その他の必要な接続(接続数を107に設定)
ユーザー接続数は、ローカルのグリッド要素へのユーザー接続だけでなく、グリッドのすべての要素にわたるすべてのユーザー接続の合計です。たとえば、グリッドで2,048個の同時アプリケーションがサポートされている場合は、データ・インスタンスを実行する各ホストを、2,048個の接続(およびシステム接続)をサポートするように構成する必要があります。
各ユーザー接続およびシステム接続(データベース接続)には1つのセマフォが割り当てられ、データベースのセマフォ合計は次のようになります。
Total semaphores = user connections (N) + system connections (48) + other required connections (107)
Total semaphores = N + 155
セマフォ設定は、/etc/sysctl.conf
のkernel.sem
構成ディレクティブにあります。
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI
説明:
-
SEMMSL
は、配列ごとのセマフォの最大数です。この値は、最大接続数に関連します。この値を155
とユーザー接続数の合計に構成します。 -
SEMMNS
は、システム全体のセマフォの最大数です。ガイドラインとして、SEMMNS = (SEMMNI * SEMMSL)
という式を使用します。 -
SEMOPM
は、semop
コールごとの最大処理数です。 -
SEMMNI
は、配列の最大数です。
次のステップに従って、SEMMSL
およびSEMMNS
の設定を構成します(ユーザーは必ずroot
にしてください)。
ノート:
データ・インスタンスを実行するホストの場合、これらのホストのセマフォ値は同じである必要があります。同様に、管理インスタンスを実行するホストの場合、これらのホストのセマフォ値は同じである必要があります。
SHMMNIパラメータの設定
SHMMNI
値により、ホストで同時に作成できる共有メモリーセグメントの数を制御します。TimesTenでは、TimesTenデータベース用に1つの共有メモリー・セグメントと、PL/SQL用に1つの共有メモリー・セグメントが作成されます。また、各クライアント/サーバー接続の間に割り当てられる、小さい共有メモリー・セグメントもあります。
データ・インスタンスを実行するホストで、データベースへの予想される同時クライアント/サーバー接続数を考慮に入れてSHMMNI
パラメータを構成する必要があります。SHMMNI
を、予想されるクライアント/サーバー接続の数より大きい値に設定します。(必ずTimesTen共有メモリー・セグメント、PL/SQL共有メモリー・セグメント、および共有メモリーを使用するその他のプログラムも考慮に入れてください。)TimesTenにはクライアント/サーバー接続数に含まれないシステム接続があるため、たとえば、8,000個の同時クライアント/サーバー接続が予想される場合は、9000
以上の値が適切です。
次のステップに従って、SHMMNI
設定を構成します。
ノート:
データ・インスタンスを実行するホスト間では、それらのshmmni
パラメータ設定を同じにする必要があります。