我刚刚找到了一个JVM配置,其中配置的大页面的大小远远大于JVM的分配堆大小。
我在下面添加的配置适用于Websphere Application Server,但对于使用大页面的任何其他Java应用程序,问题都是相同的。 通常,使用-Xlp(IBM Knowledge Center- Tuning Linux systems)开关为IBM JRE启用大页面,对于使用-XX的Oracle启用大页面:+ UseLargePages(Oracle: Java Support for Large Memory Pages)
当前配置显示
vm.nr_hugepages = 4096
Hugepagesize: 2048 kB (from meminfo)
-Xmx 6144 (for java process)
JVM以启用-Xlp开始。
我认为通过vm.nr_hugepages 8GB被固定,因此不可用于其他进程。 但Java只能为Heap索取6GB。
任何人都可以解释其他2GB会发生什么?
提前致谢!
答案 0 :(得分:1)
剩余的2GB大页面被固定在连续的实内存中,等待应用程序使用它们(JVM配置本身不会增加堆足以使用剩余的大页面)。对于除了潜在的来电者之外的任何事情,这种记忆都是无法使用的。
庞大的页面内核选项
hugepages
定义配置的持久性大页面的数量 内核在启动时。默认值为0.这是唯一可能的 如果足够的话,分配(或解除分配)大页面 系统中物理上连续的空闲页面。由此保留的页面 参数不能用于其他目的。
在以后的Linux版本中有一个“透明的大页面”选项,试图通过将不知情的应用程序移动到可能存在的任何松弛空间来解决某些类型的问题,但似乎并没有太多的爱。