3.9.3 Hugepage機能の適用(Linux限定)
Linux版の64ビット版OpenTP1では,次に示す共用メモリにLinuxのHugepage機能を適用することができます。
-
システムサービス用共用メモリ
-
DAMサービス用共用メモリ
-
TAMサービス用共用メモリ
Hugepage機能を適用すると,共用メモリを管理する単位(ページサイズ)が4KBから2MB※に拡大されます。ページサイズが拡大されると,ページごとに必要となるOS管理領域(PTE:Page Table Entry)を小さくできます。PTEは共用メモリを使用するプロセスごとにも必要となるため,プロセス増加時のメモリ消費量を軽減できる場合があります。
- 注※
-
固定値ではなくOSのデフォルト値が2MBです。Hugepage機能を適用した拡大後のページサイズは「grep Hugepagesize /proc/meminfo」を実行して確認できます。ページサイズを確認する際は単位に注意してください。
- 〈この項の構成〉
(1) 動作環境の設定
Linuxのカーネルパラメタで,Hugepage機能を有効にする設定をしてください。Hugepage機能を有効にするカーネルパラメタの設定をしていない場合,または設定した値が不十分である場合は,共用メモリの確保に失敗し,OpenTP1は起動しません。
次に,Hugepage機能を有効にするときに指定するカーネルパラメタと,指定値の見積もり方法について説明します。
(a) Hugepage機能を有効にするときに指定するカーネルパラメタ
Linuxのカーネルパラメタの指定値の目安を次の表に示します。なお,指定値を有効にするにはOSを再起動してください。
カーネルパラメタ |
指定値の目安 |
オプション設定ファイル※1 |
---|---|---|
vm.nr_hugepages |
下記「OpenTP1が必要とするvm.nr_hugepagesの求め方」を参照して求めた値を指定してください。すでに値が指定されていた場合は,既定値に求めた値を加算してください。 |
/etc/sysctl.conf |
vm.hugetlb_shm_group |
Hugepage機能を使用するグループIDを指定してください。※2 |
/etc/sysctl.conf |
soft memlock |
OpenTP1管理者のユーザIDを対象として,unlimitedを指定してください。 |
/etc/security/limits.conf |
hard memlock |
- 注※1
-
使用しているOSのバージョン,およびカーネルのバージョンごとに異なります。使用しているOSのマニュアルを参照し,表中の指定値で示した値を指定してください。
- 注※2
-
このパラメタに指定した値を,プロセスサービス定義のprc_hugepage_group_idオペランドに指定してください。
(b) OpenTP1が必要とするvm.nr_hugepagesの求め方
次に示す計算式を用いて,OpenTP1が必要とするvm.nr_hugepagesを求めます。サーバマシン内にこの機能を適用するOpenTP1システムを複数構成している場合,各システムで値を算出し,その合計値を用いて計算してください。
OpenTP1が必要とするvm.nr_hugepages= A+B+C
- (凡例)
-
↑↑:小数点以下を切り上げます。
A:システムサービス用共用メモリが必要とするvm.nr_hugepages
-
システムサービス用共用メモリにHugepage機能を適用する場合:
↑マニュアル「OpenTP1 システム定義」の共用メモリのサイズの算出式で算出した値÷ページサイズ(単位:KB)↑
-
システムサービス用共用メモリにHugepage機能を適用しない場合:0
B:DAMサービス用の共用メモリが必要とするvm.nr_hugepages
-
DAMサービス用共用メモリにHugepage機能を適用する場合:
↑マニュアル「OpenTP1 システム定義」のDAMサービス用の共用メモリの算出式で算出した値÷ページサイズ(単位:バイト)↑
-
DAMサービス用共用メモリにHugepage機能を適用しない場合:0
C:TAMサービス用共用メモリが必要とするvm.nr_hugepages
-
TAMサービス用共用メモリにHugepage機能を適用する場合:
↑マニュアル「OpenTP1 システム定義」のTAMサービス用の共用メモリの算出式で算出した値÷ページサイズ(単位:バイト)↑
-
TAMサービス用共用メモリにHugepage機能を適用しない場合:0
-
(2) Hugepage機能適用の方法
共用メモリにHugepage機能を適用する方法について,共用メモリの種別ごとに説明します。
-
システムサービス用共用メモリ
システム環境定義のshmpool_attributeオペランドにhugepageを指定します。
-
DAMサービス用メモリプール
DAMサービス定義のdam_cache_attributeオペランドにhugepageを指定します。
-
TAMサービス用メモリプール
TAMサービス定義のtam_pool_attriオペランドにhugepageを指定します。