[Java] Configuring your Linux server to use largepages for JRockit

 JRockitはLinuxプラットフォームのLargepageを利用できるので、メモリ割り当てやGCの激しいアプリケーションのパフォーマンスが向上します。しかし。Solarisのようなプラットフォームや、Hotspotを用いている場合、Largepageはすでに利用可能な状態になっており、利用するように設定するだけなのですが、Linuxの場合は以下のような設定をしてLargepageを利用できるようにする必要があります。

[訳注] LargepageはHugepageと呼ぶことがあります。このエントリではLargepageとしています。

(CONFIG_HUGETLB_PAGEとCONFIG_HUGETLBFSを使って)カーネルでLargepageを有効にしますが、たいていの場合はやる必要がなく、次の手順でLargepageを利用できるか否かを確認することができます。
# cat /proc/meminfo | grep Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
この結果、このシステムが2MBのLargepageをサポートしていることがわかります。
予約するLargepageに必要なメモリの量をカーネルに知らせるためには、以下のような設定が必要です。
# echo 4000 > /proc/sys/vm/nr_hugepages
上記の設定で、Largepageのために8GB予約したことになります。
変更を永続化する場合には、/etc/sysctl.confに次の設定を追加してください。
vm.nr_hugepages = 4000
/etc/fstab中に以下の行を加えて、uidが9500のユーザーに/mnt/hugepagesに対してRead/Write権限を与えます。
nodev            /mnt/hugepages        hugetlbfs    rw,auto,uid=9500,user,sync    0 0
再起動せずに、次のコマンドで設定を反映できます。
# mount -a
これで設定は終了したので、JRockitを-XlargePages:exitOnFailure=trueのオプションを指定して起動します。VMの起動が成功したら、JRockitで利用しているLargepageの個数を確認してみましょう。
# cat /proc/meminfo | grep Huge
VMが起動できない場合には、設定手順に問題があったことを示していますので、再度やり直してみましょう。


原文はこちら。
http://blogs.sun.com/dkumar/entry/configuring_your_jrockit_to_use

0 件のコメント:

コメントを投稿