UNIX®、Linux、および macOS 用のシステム・パラメータの計算
UNIX®、Linux、および macOS 用のシステム・パラメータの計算
ここでは、システムに最適なパラメータの計算方法について、以下の各セクションで説明します。
-
メモリとディスク要件の決定 — メモリ要件、スワップ領域、ディスク要件、最大バッファ数、最大ユーザ数、最大データベース・サイズを計算します。
-
UNIX® カーネル・パラメータの構成 — UNIX® の調整可能パラメータの値の設定、および他のプラットフォーム固有のメモリ管理に関する問題について説明します。
-
プラットフォーム構成の問題 — 個々の UNIX®/Linux プラットフォーム固有の問題に対する構成上の問題について説明します。
Caché の最適なパフォーマンスを得るには、特定の Caché システム・パラメータに適切な値を計算する必要があります。これらの値から、ユーザは一定のシステム・レベル・パラメータを調整する必要があるかどうかを決定できます。ディスク・アクセスが必要なスワッピングやページングを最小限に抑える値を選択することにより、システムのパフォーマンスが向上します。
このセクションの内容をよく読んで、ご使用のオペレーティング・システムと Caché の両方に最適な値を計算してください。ここに記載されているテーブルを使用して、現在のシステムから計算された値をシステム・レベル・パラメータとして記録してください。Caché のインストール時にこのテーブルを参照できます。最適のパフォーマンスを得るためには、システムの稼動後、必要に応じて値を修正します。
ご使用のオペレーティング・システム・レベルのメモリ組織に精通していない場合は、適切なシステム・ドキュメントを参照してください。
メモリとディスク要件の決定
このセクションでは、ほとんどのシステムに対応する基本的なメモリ要件とディスク要件の概要について説明します。これらの要件はプラットフォームによって異なるため、詳細は使用しているプラットフォームのマニュアルを参照してください。固有の要件には以下のものがあります。
Caché のメモリ管理を可能にする主な 2 つの方法については、"Caché のメモリ管理" のセクションを参照してください。
メモリ要件の計算
以下のテーブルに記載されているメモリ使用状況の内訳から、Caché に必要なメモリ量を計算します。
コンポーネント | メモリ要件 |
---|---|
オペレーティング・システム | 1800 KB (オペレーティング・システムに依存) |
Caché | 842 KB |
グローバル・データベース・キャッシュ | バッファあたり 8 KB |
ルーチン・キャッシュ | ルーチン・バッファあたり 32 KB |
ユーザ・オーバーヘッド | プロセスあたり 1024 KB |
ネットワーク (存在する場合) | 各ネットワーク・システム・プロセス (DMNNET および RECEIVE) のポートごとに 300 KB。Caché ポートには、1 ポートにつき 2 つの DMNNET システム・プロセスがあります。さらに、ネットワークが共有するメモリ要件があります。この値は、ポート数および構成されているリモート・ホスト数によって異なります。標準のシステムにおけるメモリ要件は約 304 KB です。 |
既定では、ルーチン・バッファとグローバル・バッファを含め、共有メモリが自動的に割り当てられ、合計でそのシステムで使用可能な共有メモリ領域の 1/8 です。大容量のアプリケーションや大規模なユーザをサポートする計画がある場合、以下の公式に従ってシステムを調整します。
(number of routine buffers)*32 KB + (number of global buffers)*(block size) + 4 MB ___________________________________ = Shared memory needed
同時に実行できるダイレクト Caché セッションの数が負荷の増大によって変化するアプリケーションの場合、プロセスの処理に必要なメモリ量は処理能力が向上するに従って増大します。例えば、コアを 4 つから 8 つにアップグレードしたシステムでは、アップグレード前よりもはるかに多くのセッション (プロセス) をサポートできます。これらの各プロセスでメモリを消費するので、物理メモリの増設が必要になることがあります。
実行するプロセスの数が限られているサーバ (Ensemble のECP データ・サーバなど) 専用の構成の場合、負荷の増大はプロセス数の増加によるものとは限りません。したがって、処理能力がより高いシステムで大きな負荷が発生しても、プロセスで必要とするメモリ量が必ずしも増加しているわけではありません。
Linux システムの既定のメモリ・ページ・サイズは 4 KB です。最新の Linux ディストリビューションには、ヒュージ・ページ (システム構成に応じて、2 MB または 1 GB のメモリ・ページ・サイズ) のオプションが含まれています。ヒュージ・ページを使用してページ・テーブルの領域を節約することで、メモリを節約できます。ヒュージ・ページが構成されていると、システムはメモリの割り当て時に自動的にヒュージ・ページを使用します。Caché をホストするシステムでは、ほとんどの状況でヒュージ・ページを使用することをお勧めします。
2.6.38 カーネルを使用する一部の Linux ディストリビューションには、透過的ヒュージ・ページ (THP) が導入されていて、ヒュージ・ページの作成、管理、および使用が自動化されます。ただし、THP は Caché に割り当てられたメモリの大半を構成する共有メモリ・セグメントを処理しません。また、実行時にメモリ割り当ての遅延を引き起こすことがあり、パフォーマンスに影響する可能性があります。この影響は、ジョブまたはプロセスの作成頻度が高いアプリケーションでは顕著に表れます。このような理由から、Caché をホストするすべてのシステムで THP を無効化するようにお勧めします。このトピックの詳細は、InterSystems Developer Community の "Linux Transparent Huge Pages and the impact to CachéOpens in a new tab" を参照してください。
Linux でヒュージ・ページを構成するには、以下の操作を実行します。
-
ステータスを確認します。
/proc/meminfo にはヒュージ・ページに関する情報が記録されています。既定では、ヒュージ・ページは割り当てられていません。既定のヒュージ・ページ・サイズは 2 MB です。以下はその例です。
HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 Hugepagesize: 2048 KB
-
ヒュージ・ページ数を変更します。
ページ数のシステム・パラメータを直接変更できます。例えば、2,056 ページのヒュージ・ページを割り当てるには以下のように指定します。
# echo 2056 > /proc/sys/vm/nr_hugepages
Note:また、以下のように sysctl(8) を使用することもできます。
# sysctl -w vm.nr_hugepages=2056
ヒュージ・ページは連続したページとして割り当てる必要があります。また、割り当て後には再起動が必要になることがあります。したがって、割り当てを確実なものとして恒久的な変更とするには、以下の手順に従います。
-
/etc/sysctl.conf ファイルに以下の行を入力します。
echo "vm.nr_hugepages=2056" >> /etc/sysctl.conf
-
システムを再起動します。
-
再起動後に、meminfo を検証します。例えば、以下のようになります。
[root woodcrest grub]# tail -4 /proc/meminfo HugePages_Total: 2056 HugePages_Free: 2056 HugePages_Rsvd: 0 Hugepagesize: 2048 KB
-
-
Caché でのヒュージ・ページの使用を検証します。
Caché を起動すると、割り当てられた共有メモリの量が、例えば以下のようなメッセージで表示されます (これは cconsole.log ファイルに記録されています)。
Allocated 3580MB shared memory: 3000MB global buffers, 226MB routine buffers
ヒュージ・ページで使用可能なメモリ量は、割り当てられる共有メモリの合計量より多いことが必要です。このメモリ量が不足していると、ヒュージ・ページは使用できません。
Note:ヒュージ・ページが構成されていても割り当てができない場合に Caché の起動を防止するには、memlock パラメータを 7 に設定します ("Caché パラメータ・ファイル・リファレンス" の "memlock" を参照)。
ヒュージ・ページは、物理メモリから割り当てられます。このメモリには、ヒュージ・ページを使用するアプリケーションとプロセスのみがアクセスできます。
その他すべてのアプリケーションとプロセスは、ヒュージ・ページに割り当てられていない物理メモリのみを使用できます。
共有メモリの量に比べて過剰に大きい値を HugePages_Total に指定することはお勧めできません。ここで使用していないメモリを他のコンポーネントで使用することはできないからです。
Caché が起動時にヒュージ・ページの割り当てに失敗して、標準ページに切り替えた場合、Caché は、その他すべてのジョブと同じメモリ・プールから共有メモリを割り当てるようになります。
メモリ内で共有メモリ・セグメントをロックしてページングを防止するように Caché を構成している場合、ヒュージ・ページでは、メモリにロック可能な最大サイズを、必要とする量まで増やすことができます。これについては、この章の "Red Hat Linux プラットフォームの問題" の "ロックインされたメモリ" で説明しています。
AIX® は複数のページ・サイズ (4 KB、64 KB、16 MB、および 16 GB) をサポートしています。4 KB ページと 64 KB ページの使用は、Caché にとって透過的です。Caché が 16 MB のラージ・ページを使用するようにするには、そのラージ・ページを AIX® で構成する必要があります。AIX® は、構成済みのラージ・ページまたはヒュージ・ページの数を需要に基づいて自動的に変更することはありません。現時点では、Caché は 16 GB のヒュージ・ページを使用しません。
ラージ・ページは高性能な環境でのみ構成します。ラージ・ページに割り当てられたメモリは、ラージ・ページのみが使用できるようになるためです。
ラージ・ページを割り当てるには、memlock=64 でない限り、ユーザに CAP_BYPASS_RAC_VMM および CAP_PROPAGATE の権限、または root 権限が必要です。
既定では、ラージ・ページが構成されていると、システムはメモリ割り当てで自動的にラージ・ページを使用します。ラージ・ページに共有メモリを割り当てることができない場合、共有メモリは標準 (スモール) ページに割り当てられます。ラージ・ページの詳細な制御については、"Caché パラメータ・ファイル・リファレンス" の "memlock" を参照してください。
ラージ・ページは、以下のように vmo コマンドを使用して構成します。
vmo -r -o lgpg_regions=<LargePages> -o lgpg_size=<LargePageSize>
<LargePages> は予約するラージ・ページの数を指定し、<LargePageSize> は、ハードウェアでサポートされるラージ・ページのサイズをバイト単位で指定します。
動的 LPAR (Logical PARtitioning : 論理区画) をサポートするシステムでは、-r のオプションを省略して、システムを再起動することなく動的にラージ・ページを構成できます。
例えば、以下のコマンドは、1 GB のラージ・ページを構成します。
# vmo -r -o lgpg_regions=64 -o lgpg_size=16777216
ラージ・ページを構成したら、 bosboot コマンドを実行してこの構成をブート・イメージに保存します。システムの起動後、以下の vmo コマンドを使用して固定されたメモリ用にこのラージ・ページを有効にします。
vmo -o v_pinshm=1
ただし、memlock=64 の場合、vmo -o v_pinshm=1 は必要ありません。memlock の詳細は、"Caché パラメータ・ファイル・リファレンス" の "memlock" を参照してください。
スワップ領域の計算
ユーザのシステムで利用できるスワップ領域の容量は、実際のメモリに 256 KB を加算した値を下回らないようにしてください。
この最小値を考慮した上で、Caché に最低限必要なスワップ領域として以下の値をお勧めします。
((# of processes + 4)† * (1024 KB))‡ + total global buffer space + total routine buffer space _____________________________________ = Minimum swap space
† Caché コントロール・プロセス、ライト・デーモン、ガーベッジ・コレクタ、およびジャーナル・デーモンのために、プロセス数に 4 を追加します。また、各スレーブのライト・デーモンのために 1 を加算します。また、各スレーブのライト・デーモンのために 1 を加算します。プロセス数は、同時に実行する可能性があるすべてのユーザ・プロセスおよびジョブ・プロセスを含んでいる必要があります。ネットワーク接続の場合、RECEIVE システム・プロセスのために 1 を加算し、ユーザが実行している DMNNET デーモン数 (ポートごとに 2 つ) を加算します。
‡ 1024 KB という数字は概算です。これは、Caché の実行プログラムの現在のサイズに基づいて算出されるため、各 Caché プロセスに割り当てるパーティション・サイズによって変化します。ほとんどのシステムでは、最低限必要なスワップ領域を割り当てれば十分ですが、システムによっては、最悪のケースに備えてスワップ領域を割り当てる必要があります。このような場合、ユーザが指定するパーティション・サイズによっては、この数字を 1.5 MB まで上げる必要があります。
使用している UNIX® システムで、必要なスワップ領域が使用可能かどうかを必ず確認してください。システムのスワップ領域に関する詳細情報については、使用している UNIX® オペレーティング・システムのマニュアルを参照してください。
Solaris プラットフォームのスワップ領域を計算する方法は以下のとおりです。
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
AIX® のスワップ領域を表示する方法は以下のとおりです。
lsps –a
Page Space Physical Volume Volume Group Size %Used
Active Auto Type
hd6 hdisk2 rootvg 512 MB 72
yes yes lv
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é 用に 67 MB
-
CSP (Caché Server Pages) 用に 3 MB
-
Caché ODBC サポート用に 3.5 MB
-
Caché 管理者ソース用に 2.5 MB
-
Caché エンジン・リンク・ライブラリ用に 6.6 MB
-
Caché アプリケーション・データベース用の領域
-
ライト・イメージ・ジャーナル・ファイルの初期サイズ用に、バッファ・プール・サイズの約 12.5%。ユーザのディスクにライト・イメージ・ジャーナル・ファイル用に十分な容量がない場合、Caché を起動したときに、システムが起動しなかったことを示すメッセージが表示されます。
-
ジャーナル・ファイルに必要な容量
インストール手順の完了後、インストール・ファイルを削除する必要はありませんが、ディスク容量が不足しているときには削除できます。インストール・ファイルを削除した場合に節約できるディスク容量が示され、削除するかどうかを尋ねるプロンプトが表示されます。
グローバル・バッファ数の決定
Caché は、以下の最大グローバル・バッファ数をサポートします。
-
32 ビットのプラットフォーム : 以下の条件を満たす 2 KB バッファと 8 KB バッファの組み合わせ
-
HP-UX では 1GB 以下
-
32 ビットのプラットフォームでは 2GB 以下
2 GB という値は、オペレーティング・システムがプロセス・データに割り当てる合計のアドレス領域で、共有メモリ、および Caché とオペレーティング・システムのデータが含まれます。したがって、実際には達成できない上限値を示しています。
-
-
64 ビットのプラットフォーム :
グローバル・バッファ数はオペレーティング・システムと有効なメモリによってのみ制限されます。
最大バッファ数より小さい値を設定してください。
詳細は、"Caché パラメータ・ファイル・リファレンス" の “config” のセクションにある "グローバル" と、"Caché システム管理ガイド" の “Caché の構成” の章にある "メモリと開始設定" を参照してください。
ルーチン・バッファ数の決定
Caché は、以下の最大ルーチン・バッファ数をサポートします。
65,535
最大バッファ数より小さい値を設定してください。
詳細は、"Caché パラメータ・ファイル・リファレンス" の “config” のセクションにある "ルーチン" と、"Caché システム管理ガイド" の “Caché の構成” の章にある "メモリと開始設定" を参照してください。
最大ユーザ数の決定
Caché が許可する最大ユーザ数は、以下のうちで最も小さい値です。
-
ライセンス制限
-
セマフォ数 - 4
詳細は、"Caché システム管理ガイド" の “Caché ライセンスの管理” の章にある "ライセンスの機能範囲と使用の決定" を参照してください。
最大データベース・サイズの決定
UNIX® の ulimit パラメータにより、プロセスで利用できる最大ファイル・サイズが決まります。Caché 管理者グループでは、ulimit の値を無制限、あるいはユーザが持つ最大のデータベースと同じ大きさに指定する必要があります。
詳細は、"Caché システム管理ガイド" の “Caché の構成” の章にある "データベースの構成" を参照してください。
UNIX® カーネル・パラメータの構成
以下のセクションでは、さまざまな UNIX® プラットフォームでの調整やパフォーマンスについて説明します。
調整可能な UNIX® パラメータ値の設定
Caché は、ユーザがサイズを定義したセットで、構成可能なセマフォ数を使用します。パラメータ SEMMNI、SEMMNS、SEMMSL は、セットごとのセマフォ数と Caché が使用するセマフォ総数を示します。共有メモリの割り当てを制御する UNIX®/Linux パラメータは、SHMMAX、SHMMNI、SHMSEG、および SHMALL です。Caché は共有メモリを使用し、共有メモリのセグメントを 1 つ割り当てます。このセグメントのサイズは、グローバル・バッファとルーチン・バッファに設定された領域によって異なります。以下の数式を使用して、セグメントの最小サイズを求めます。
space required for routine buffers + space required for global buffers + 4 MB _____________________________________ = Shared memory segment size
データを複数のコンピュータに分散する場合、Caché は 2 つ目のセグメントを割り当てます。既定では、2 つ目のセグメントにはメモリを割り当てません (分散型データを使用する予定がある場合、構成のガイドラインについては、ベンダもしくはインターシステムズのサポート窓口までお問い合わせください)。その他のシステム要件に従って、NBUF と NHBUF を変更できます。Caché は独自のディスク・バッファリングを行うため、NBUF と NHBUF を小さく設定しておく必要があります。以下のテーブルは、値の変更が必要となる可能性がある一般的な UNIX® パラメータの名前、インターシステムズが推奨する各パラメータの最小値、およびそれらの概要の一覧です。ユーザのパラメータ値が、少なくともこの最小値以上に設定されていることを確認してください。プラットフォームによっては、実装されないパラメータや異なる形で参照されるパラメータもあるため、詳細は、プラットフォーム固有の調整の注意を参照してください。
カーネル・パラメータ | 推奨の最小値 | 定義 |
---|---|---|
CDLIMIT | 最大仮想ボリュームでのバイト数 | 最大ファイル・サイズ |
MSGMAX | 2 KB | 最大メッセージ・サイズ (単位はバイト) |
MSGMNI | Caché インスタンスの数 x 3 (各 Caché インスタンスは 3 つのメッセージ・キューを使用) | 同時に存在する可能性がある、一意に識別できる最小メッセージ・キュー数 |
NOFILES | 35 | プロセスごとに開くことができるファイル数 |
SEMMNI | SEMMNI と SEMMSL との積は、ユーザ・プロセス数に 4 加算した数よりも大きくなければなりません。 | カーネル内のセマフォ識別子の数 (同時に有効にできる一意のセマフォ・セットの数) |
SEMMNS | 128 または ... | システム内の総セマフォ数。ユーザ・プロセスには、ジョブ起動プロセスおよび他のソフトウェアに必要な、他のすべてのセマフォが含まれています。 |
実行される予定のプロセス数。プロセス・テーブルが拡大する可能性がある場合、大きめの数値を使用します。 | ||
SEMMSL | SEMMNI 参照 | 識別子リストごとの最大セマフォ数 |
SHMALL | 60 KB または ... | システム全体の共有メモリの最大総数値(単位は KB)。1000 は MCOMMON 共有域を示します。 |
1000 + 全グローバル・バッファ領域 + 全ルーチン・バッファ領域 * | ||
SHMMNI | 3 | システム全体の最大共有メモリ識別子数 |
SHMSEG | 3 | プロセスごとに付随する共有メモリ・セグメント数 |
SHMMAX | 60 KB または ... | 共有メモリ・セグメントの最大サイズ (KB) |
1000 + 全グローバル・バッファ領域 + 全ルーチン・バッファ領域 |
* これは、Caché UNIX® で必要とされる SHMALL の最小値です。システムの共有メモリを使用する他のすべてのアプリケーションについても考慮する必要があります。共有メモリの使用量が不確かな場合、SHMSEG と SHMMAX の積から SHMALL を計算します。単位はページです。どのような場合でも、この大きい方の値を適用すれば十分です。
オペレーティング・システム・ドキュメントで明示されていない限り、割り当てられたメモリをサポートするために十分なスワップ領域が必要です。特定のオペレーティング・システム (Solaris など) では、Caché は ロックされた共有メモリ・セグメント を作成しますが、それらはページング不可能ですがスワップ領域は必要となる場合があります。
最大ファイル・サイズの調整
Caché を実行するシステムでは、最大ファイル・サイズのハード制限 (RLIMIT_FSIZE) を unlimited にする必要があります。インストール前に、オペレーティング・システムでこの値を unlimited に設定します。root ユーザおよび Caché を実行するユーザの両方に対して、この制限が unlimited に設定されたことを確認します。 Caché は、I/O エラーを防止するために、そのデーモン内でプロセスのソフト制限も RLIMIT_FSIZE に設定します。
RLIMIT_FSIZE が無制限 (unlimited) に設定されていない場合、Caché はインストールまたは起動されなくなります。
最大ファイル・サイズのシステム・ハード制限 (RLIMIT_FSIZE) を設定する手順は、オペレーティング・システムのドキュメントを参照してください。