きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

ラージ・ページ・サポート(-Xlp)の考察

SRに-Xlpで1MBのFRAMEを取れないって事象を調べている。
前から疑問だった、-Xlp指定してないのにCRが1MBのFRAME取ってる件もついでに調べている。
少し理解が深まった気がする。


まず-verbose:gcでrequestedPageSizeとpageSizeは確認している。
確かに1MBの要求はあるが、実際には4KBのままという状況。
http://www-03.ibm.com/systems/z/os/zos/tools/java/faq/javafaq.html#64bitx


The large page example below shows the option -Xlp for large 1 megabyte pages is specified. Here you can see that the requested PageSize value of 0x100000 was requested but the pageSize value=0x1000 or 4096 bytes were actually used. Its possible other JVM processes were using all the system wide configured large pages or large pages were never configured on this system. Although large pages were not used, the program HelloWorld ran successfully with 4096 byte pages.
まさしくこういう状況。
ただ他のJVMが既に食いつぶしているかというと、そうではない事はわかっている。
DISPLAY VIRTSTOR,LFAREAで余りが十分にあることが確認出来る。
これが確認出来るということはIEASYSxxでLFAREAが指定されていることは明白で、
システムに設定が施されていないなどということも考えられない。
個々のJOBが使ってるフレームについてはRMF MONITOR IIIで見るのが一番いいだろう。


IARRSM.LRGPAGESのread authorityもチェックした。
WASおよびJDKレベルの話ではなく、OSレベルの話が必要と思い、IARV64マクロに至る。
4KBなのか1MBなのかは、このマクロへのパラメータPAGEFRAMESIZEで決まる。


CRの件でいくと、-Xlpの指定もそうだが、RACFで許可したつもりも無いって点もあり、
IARRSM.LRGPAGES以外の条件が存在することが容易に想像された。
APF-authorizedでも良いっぽい。
インストールの時にAPF関連のは、WASのモジュールではないが、LE関連の登録はする。
しかしHFS上でextattrでaが付いてるとAPF-authorizedという扱いになるので、
きっとCRのモジュールはaでも付いてるんだろう。
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=compass&product=was-nd-zos&topic=rsecclustauth
ここにもあるようにControllerはAPF-authorizedという扱いになっている。
通常のWCTで生成したプロファイルの中でIARRSM.LRGPAGESは出てこないようだ(手元のバージョンのでは)。


さて、-Xlpで指定してないのに1MBを取りに行くようにPAGEFRAMESIZEを指定しとる輩がおるようだ。
いま調べてる範囲のことから、そうでなければおかしい。
1MBを取る取らないは、このパラメータによって変わるからだ。
一部追記:
CR用のプログラム(HFS上にあるWASのプログラム)は、BPXBATA2によってSPAWNされる。
SR用のプログラム(HFS上にあるWASのプログラム)は、BPXBATSLによってSPAWNされる。
BPXBATA2はAPF-authorizedだ。
CRもSRも、アドレス空間に2つのプロセスを持っている。
http://publib.boulder.ibm.com/infocenter/zos/v1r12/topic/com.ibm.zos.r12.bpxa400/dbatalias.htm
そういうことだから、1MBフレームを取ってるのがBPXBATA2である可能性も考える必要があるようだ。


あとIARV64は2GBバーの上を取るものだと思う。
この点から、MEMLIMITとREGIONは確認する価値があるだろう。
特にMEMLIMITは2GBより上の話にダイレクトに関係する。
WASのプロシージャは通常、REGION=0M,MEMLIMIT=NOLIMITになってるはずだが、
誰かが手を加えてる可能性も考えられる。
MEMLIMITが関係するならば、RACFユーザーのOMVSに関するuser limitのうちMEMLIMITは意識すべき。
またSMFPRMxxのMEMLIMITも調べておく必要があるだろう。