LinuxのHugepages - Javaプロセスがhugepagesを使用して起動されることを確認する方法

LinuxのHugepages - Javaプロセスがhugepagesを使用して起動されることを確認する方法

私はRed Hat Enterprise Linux Serverバージョン5.9でJavaサーバーを実行しています。最近私はHugePagesを使い始めました。なぜなら、私が使いたかったいくつかの利点があるからです。システムは正しく設定されており(多くのウェブサイトやブログの場合と同様に)、大きなページに対して40G RAMが設定されています。

HugePages_Total: 20480

巨大ページ_無料:20480

HugePages_Rsvd: 0

大きいページサイズ: 2048kB

サーバーの合計メモリー:128G。 hugePagesを設定した後、システムが再起動し、ヒープサイズが29GのhugePagesでサーバープロセスが開始されました。すべてが順調に進んでいます。最近、jvmパラメータをいくつか変更し、ヒープサイズを30Gに増やしました。 jvmプロセスが再起動されたときに巨大なページを使用しませんでした。ログにエラーが表示されます。

Java HotSpot(TM)サーバーVM警告:共有メモリーを予約できません(errno = 22)。

Javaパラメータの他の変更がこの問題を引き起こさないことを確認するためにいくつかのテストを実行し、ヒープサイズの増加が原因であると結論付けました。

今は理解できません。システムはhugePagesがまったく使用されていないことを示しているため、まだ40Gのスペースが残り、Javaはまだそのうち30Gを保持できません。

なぜこれが起こるのかを説明できる人はいますか?

もっと重要なのは、これが起こらないようにする方法がありますか?

これは本番システムなので、最終構成を作成すると残りのスペースがないため、巨大ページの外部でJavaプロセスを実行することはできません。最終構成は96G大容量ページで、1つの32GB Javaプロセスが継続的に機能し、リソースが緊急時に他の2つのプロセスを実行するようにスケジュールされています。このような緊急事態が発生した場合は、JavaプロセスがhugePagesを使用できることを確認する必要があります。

どんな助けでもいいでしょう。

ベストアンサー1

JVMで巨大なページ使用を明示的に有効にする必要があると思います-XX:+UseLargePages。この投稿を確認してください。大規模なJavaヒープとLinuxの大規模ページの調整

他の関連JVMスイッチを確認したい場合があります。

おすすめ記事