AIX® プラットフォームの問題
一部の AIX® パラメータの既定の設定は、パフォーマンスに悪影響を及ぼす可能性があります。設定および推奨事項については以下を参照してください。
I/O ペーシング・パラメータ
AIX® は、InterSystems IRIS ライト・デーモンの動作を阻害する可能性のある I/O ペーシング・アルゴリズムを実装しています。AIX® 5.2 および AIX® 5.3 では、HACMP クラスタを使用すると I/O ペーシングが自動的に有効になります。一方、AIX® 6.1 以降では、すべてのシステムで I/O ペーシングが有効となり、既定の最高水準点は以前のバージョンよりも大きくなっています。
ライト・デーモンの速度が遅い場合やライト・デーモンが停止する場合は、この最高水準点の調整が必要なことがあります。詳細は、IBM AIX ドキュメントの "ディスク入出力ペーシングOpens in a new tab" を参照してください。
Important:
IBM AIX® 6.1 以降では、最高水準点の調整は不要です。
システムへの影響について疑問点がある場合は、設定を変更する前にインターシステムズのサポート窓口Opens in a new tabまたは AIX® サプライヤまでお問い合わせください。これらの推奨事項は、JFS と Enhanced JFS (JFS2) 両方のファイル・システムに適用されます。
ファイル・システムのマウント・オプション
さまざまなマウント・オプションを使用することで作業負荷のパフォーマンスを向上させられる可能性があります。
Note:
ファイル・システムによるキャッシュが効果を発揮する、InterSystems IRIS ではない負荷 (例えば、オペレーティング・システム・レベルのバックアップやファイル・コピー) は、cio マウント・オプションにより速度が低下します。
ハード・シャットダウンやシステム・クラッシュの後の IRIS.WIJ ファイルを使用したリカバリ速度を向上させるには、IRIS.WIJ ファイルを扱うファイル・システムで、ファイル・システム・バッファリングを伴うマウント・オプション (例えば、rw) を使用することをお勧めします。
mount オプションの詳細は、IBM AIX ドキュメントの "mount コマンドOpens in a new tab" を参照してください。
メモリ管理パラメータ
ファイル・システムの数およびファイル・システムに対するアクティビティの量によって、JFS または JFS2 のメモリ構造が制限され、それらのメモリ構造を使用する I/O 処理に遅延が生じる可能性があります。
こうした状況を監視するには、vmstat -vs コマンドを実行し、2 分経過してから、もう一度 vmstat -vs コマンドを実行します。次のような結果が出力されます。
# vmstat -vs
1310720 memory pages
1217707 lruable pages
144217 free pages
1 memory pools
106158 pinned pages
80.0 maxpin percentage
20.0 minperm percentage
80.0 maxperm percentage
62.8 numperm percentage
764830 file pages
0.0 compressed percentage
0 compressed pages
32.1 numclient percentage
80.0 maxclient percentage
392036 client pages
0 remote pageouts scheduled
0 pending disk I/Os blocked with no pbuf
5060 paging space I/Os blocked with no psbuf
5512714 filesystem I/Os blocked with no fsbuf
194775 client filesystem I/Os blocked with no fsbuf
0 external pager filesystem I/Os blocked with no fsbuf
以下のパラメータが増加している場合は、InterSystems IRIS のパフォーマンスを向上するため、それらの値を大きくしてください。
-
pending disk I/Os blocked with no pbuf
-
paging space I/Os blocked with no psbuf
-
filesystem I/Os blocked with no fsbuf
-
client filesystem I/Os blocked with no fsbuf
-
external pager filesystem I/Os blocked with no fsbuf
これらのパラメータを既定値より大きくする場合は、以下の手順に従ってください。
-
現在の値を 50% 大きくします。
-
vmstat 出力を確認します。
-
2 分間隔で、vmstat を 2 回実行します。
-
フィールドがまだ増大している場合は、もう一度、パラメータ値を同じ割合だけ大きくして、上記の手順に従います。vmstat を 2 回実行したとき、フィールドが増大しなくなるまで繰り返してください。
Important:
I/O パターンは時間の経過と共に変化する可能性があるので、現在値と再起動値の両方を変更し、vmstat 出力を定期的 (時間単位、日単位、または週単位) に確認します。
詳細は、IBM の以下の Web ページを参照してください。
AIX® の調整可能パラメータ
AIX® プロセス間通信の調整可能なパラメータ
以下のテーブルは、IBM pSeries AIX® 5.2 オペレーティング・システムの調整可能なパラメータの一覧です。以下に一覧表示されているパラメータは調整の必要がありません。これらのパラメータは、必要に応じて、カーネルによって動的に調整されます。詳細は、AIX ドキュメントの "プロセス間通信のチューナブル・パラメーターOpens in a new tab" を参照してください。
Parameter (パラメータ) |
目的 |
動的値 |
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 |
maxuproc
maxuproc は、root 以外の単独ユーザが開始可能なプロセスの最大数を指定する調整可能パラメータで、このサブセクションの説明に従って調整できます。
このパラメータの設定が低すぎると、プロセスの開始を試みるユーザがさらに増えた場合に、CSP ページの消失、バックグラウンド・タスクの失敗など、オペレーティング・システムのさまざまなコンポーネントで障害が起こる可能性があります。したがって、maxuproc パラメータは、root ユーザ以外 (インタラクティブ・ユーザ、Web サーバ・プロセスなど、プロセスを開始可能なものすべて) による開始が見込まれるプロセスの最大数よりも大きく設定する必要があります。
Note:
この値を過度に高く設定しないでください。この値には不必要に新規プロセスを作成し続ける暴走アプリケーションからサーバを保護する目的があります。しかし、設定が低すぎると不明な問題の原因になります。
maxuproc を予想される最大プロセス数の倍にして、エラーを起こさないだけの余裕をとりつつ、暴走プロセスから保護することをお勧めします。例えば、システムに 1000 人のインタラクティブ・ユーザがいて、頻繁に 500 個のバックグラウンド・プロセスを実行する場合、この値は最低でも 3000 を選択するとよいでしょう。
maxuproc 値は、コマンド行もしくは smit/smitty 管理者用ユーティリティのいずれかより、以下のように双方共に root ユーザとして検証および変更ができます。
maxuproc の値を増やすと、変更は瞬時に有効となります。maxuproc の値を減らすと、変更は次回のシステムの再起動まで有効になりません。どちらの場合も、変更はシステムを再起動しても存続します。
必須の C/C++ ランタイム・ライブラリ
InterSystems IRIS をインストールする前に、必須の C/C++ ランタイム・ライブラリが IBM AIX® システムにインストールされていることを確認する必要があります。
InterSystems IRIS for AIX は、IBM XL C/C++ for AIX 16.1.0 コンパイラを使用してコンパイルされます。InterSystems IRIS のインストール先のシステムに、既にインストールされているランタイムに対応するバージョンがない場合は、インストールする必要があります。ランタイムは、IBM Support Web サイトの "IBM XL C/C++ Runtime for AIX 16.1Opens in a new tab" からダウンロードできます。
InterSystems IRIS 共有ライブラリ・サポートに対する共有ライブラリ環境変数
InterSystems IRIS 共有ライブラリ・サポートには、インストールされたすべての C リンカを参照するバッチ・ファイルが含まれています。
標準 UNIX® C ライブラリまたは独自の C ライブラリを LIBPATH 環境変数で定義した環境が必要です。
このような定義がない環境では、標準 UNIX® C ライブラリのパスである /usr/lib と /lib を LIBPATH に追加します。
Raw Ethernet の使用法
Raw Ethernet を使用するには、IBM AIX® マシンに DLPI (データ・リンク・プロバイダ・インタフェース) パッケージがインストールされている必要があります。マシンに DLPI パッケージがない場合、IBM プロバイダから取得し、以下の手順に従って DLPI デバイスを作成してください。
-
root としてログインします。
-
/etc/pse.conf ファイルの PSE ドライバ・セクションで、DLPI ドライバを参照している 4 行をアンコメントします。
-
ファイルを保存します。
-
コンピュータを再起動します。
DLPI デバイスがインストールされていない場合、%SYSTEM.INetInfoOpens in a new tab クラスの EthernetAddress() メソッドは、イーサネット・デバイスの情報ではなく、NULL 文字列を返します。
Red Hat Linux プラットフォームの問題
このトピックには、以下の調整に関する情報が含まれます。
共有メモリ制限
Linux プラットフォームでの、既定の共有メモリ制限 (shmmax) は、32 MB です。この値は InterSystems IRIS では小さすぎますが、proc ファイル・システムで変更することができます。その場合、再起動は必要ありません。新しいメモリ制限は、Red Hat Linux システムを再起動するまで維持されます。
例えば 128 MB で設定したい場合は、以下のコマンドを入力します。
$ echo 134217728 >/proc/sys/kernel/shmmax
上記のコマンドは、起動スクリプトに入力することができます。
また、sysctl(8) が利用できる場合はこれを利用して、パラメータを恒久的に設定することもできます。以下のような行を /etc/sysctl.conf に追加します。
kernel.shmmax = 134217728
このファイルは通常、スタートアップ時に処理されますが、sysctl は後で明示的に呼び出すこともできます。
Important:
1 台のマシン上で 複数の InterSystems IRIS インスタンスを実行する場合、msgmni パラメータの設定値が小さすぎる可能性があります。この値には、システムで同時に実行する InterSystems IRIS インスタンス数の 3 倍に相当する値を設定してください。
他のパラメータは、InterSystems IRIS アプリケーションに対して十分にサイズ調整されています。他のパラメータの値を表示するには、/usr/src/linux/include/asm-xxx/shmparam.h と /usr/src/linux/include/linux/sem.h の 2 つのファイルを調べてください。
詳細は、"Red Hat Enterprise Linux 4: リファレンス・ガイド" の “proc ファイル・システムOpens in a new tab” の章を参照してください。
ロックインされたメモリ
Linux プラットフォームでは、共有メモリがヒュージ・ページに割り当てられている場合、ヒュージ・ページはメモリ内で自動的にロックされます (それ以上の操作は必要ありません)。ヒュージ・ページの割り当ての詳細は、この章の "Linux でのヒュージ・ページの構成" を参照してください。
ヒュージ・ページを使用しない場合、共有メモリ・セグメントをメモリにロックしてページングを防ぐように InterSystems IRIS を構成できます。これについては、"構成パラメータ・ファイル・リファレンス" の “memlock” エントリの LockSharedMemory セクションで説明されています。
それ以外の場合は、メモリ内にロックされる可能性のある最大サイズを増やす必要があります。既定値は 32 KB です。現在の値を表示するには、ulimit コマンドを使用します。
例えば、現在の制限値をすべて表示するには、以下のようにします。
bash$ ulimit -a
core file size (blocks, -c) unlimited
data seg size ( KBytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (KBytes, -l) 32 <---------- THIS ONE
max memory size (KBytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size ( KBytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 49000
virtual memory ( KBytes, -v) unlimited
file locks (-x) unlimited
max-locked memory のみ表示するには、-l オプションを使用します。
bash$ ulimit -l
32
権限を持っていれば、ulimit コマンドを使用して直接値を変更できますが、/etc/security/limits.conf ファイルで memlock パラメータを更新することをお勧めします。memlock の制限値が小さすぎる場合、Linux から ENOMEM (メモリ不足) エラーが表示されますが、これでは原因が明らかになりません。実際にメモリは割り当てられています。エラーを起こしているのはロックなのです。
詳細は、"構成パラメータ・ファイル・リファレンス" の "memlock" を参照してください。
多数の同時プロセスの調整
多数のプロセスまたは Telnet ログインを必要とするシステムを実行する場合は、以下の調整を行う必要があります。
-
/etc/xinetd.d/telnet ファイルに、以下の行を追加します。
instances = unlimited
-
/etc/xinetd.conf ファイルで、インスタンスの設定を以下のように追加または変更します。
instances = unlimited
-
これらの変更が完了したら、以下のコマンドを使用して xinetd を再起動します。
# service xinetd restart
-
既定の pty (擬似ターミナル接続) 制限は 4096 です。これでも足りない場合は、/etc/sysctl.conf ファイルに最大 pty 行を追加するか変更します。以下はその例です。
kernel.pty.max=10000
ダーティ・ページのクリーンアップ
(例えば 8 GB 以上の) 大規模なメモリ・システムでは、フラット・ファイルを何度も書き込む場合 (例えば InterSystems IRIS のバックアップやファイル・コピーなど)、proc/sys/vm/ に格納されている以下のパラメータを調整することにより、パフォーマンスを向上させることができます。
-
dirty_background_ratio — pdflush が書き込みを開始するまでに、ダーティ・ページで満たすことのできるアクティブの最大割合。このパラメータは 5 に設定することをお勧めします。
-
dirty_ratio — より多くの書き込みが許可される代わりに、タイム・スライス間のダーティ・バッファを書き込むプロセスが強制されるまでに、ダーティ・ページで満たすことのできる合計メモリの最大割合。このパラメータは 10 に設定することをお勧めします。
これらの変数は、/etc/sysctl.conf ファイルに以下を加えることで設定できます。
vm.dirty_background_ratio=5
vm.dirty_ratio=10
これらの変更は、Linux pdflush デーモンに対して、大量の更新バーストでストレージが溢れる可能性のある大量の更新をキューに入れるより頻繁に、ダーティ・ページへの書き出しを強制するものです。
Kerberos の使用
Red Hat Linux プラットフォームで Kerberos を使用するには、krb5-libs パッケージに加えて krb5-devel パッケージもインストールする必要があります。krb5-devel をインストールすると、Kerberos を使用するために必要なシンボリック・リンクが設定されます。このパッケージは、開発環境だけでなく、実稼働環境にも必要です。これらのコンポーネントの詳細は、Red Hat NetworkOpens in a new tab Web サイトを参照してください。
SUSE Linux プラットフォームの問題
このトピックには、以下の調整に関する情報が含まれます。
共有メモリ制限
SUSE Linux プラットフォームでの、既定の共有メモリ制限 (shhmax と shmall) は InterSystems IRIS にとって小さすぎます。この制限は、再起動しなくても proc ファイル システム内で変更できます。
InterSystems IRIS はデータベース・バッファ、グローバル・バッファ、ルーチン・バッファ、およびライセンス使用に共有メモリを使用します。InterSystems IRIS 専用にマシンを使用している場合は、共有メモリをメモリの総容量の約半分に設定することをお勧めします。詳細は、"システム・リソースの計画と管理" の "メモリの計画"、および "システム管理ガイド" の "メモリと開始設定" と "ライセンスの機能範囲と使用の決定" を参照してください。
Note:
共有メモリ制限を変更する推奨事項は、SUSE Linux 64 ビット・システムには適用されません。
例えば 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
上記のコマンドは、スタートアップ時のスクリプトで入力できます。SUSE Linux 製品のドキュメントでは、/etc/init.d/boot.local スクリプト・ファイル内にコマンドを入れることが推奨されています。
また、/etc/profile.local というファイルを変更することで、システム・メモリ・ユーザ制限に対する設定を変更できます。以下のような行を追加します。
#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/iris/bin:/path/to/j2sdk/bin:/.
export CLASSPATH=
$CLASSPATH:/iris/dev/java/lib/JDK18/intersystems-jdbc-3.0.0.jar.
Important:
システム・アップグレード時に変更が失われるリスクを回避するために、/etc/profile ファイルは変更しないでください。
ロックインされたメモリ
Linux プラットフォームでは、共有メモリがヒュージ・ページに割り当てられている場合、それらはメモリ内で自動的にロックされます (それ以上の操作は必要ありません)。ヒュージ・ページの割り当ての詳細は、"Linux でのヒュージ・ページの構成" を参照してください。
ヒュージ・ページを使用しない場合、共有メモリ・セグメントをメモリにロックしてページングを防ぐように InterSystems IRIS を構成できます。これについては、"構成パラメータ・ファイル・リファレンス" の “memlock” エントリの LockSharedMemory セクションで説明されています。
それ以外の場合は、メモリ内にロックされる可能性のある最大サイズを増やす必要があります。手順については、この章の "Red Hat Linux プラットフォームの問題" にある "ロックインされたメモリ" のセクションを参照してください。
Kerberos の使用
SUSE Linux プラットフォームで Kerberos を使用するには、krb5-libs パッケージに加えて krb5-devel パッケージもインストールする必要があります。krb5-devel をインストールすると、Kerberos を使用するために必要なシンボリック・リンクが設定されます。このパッケージは、開発環境だけでなく、実稼働環境にも必要です。これらのコンポーネントの詳細は、SUSE documentationOpens in a new tab の Web サイトを参照してください。