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|grepHugepagesizeコマンドを実行します。% 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パラメータ設定を同じにする必要があります。