Although there is a similar blog entry on this topic, I’d rather to blog it anyway for my own reference.
If the WebLogic Server was installed on Linux and when starting, you might see the following message:
What happened is the default JRockit JVM prefers to uses large pages for Java heap but the Linux OS is not setup yet for this option.
HugePages is a feature integrated into the Linux kernel 2.6. It’s a method to have larger page size that is useful for working with large memory. HugePages is userful for both 32-bit and 64-bit configurations. Its size varies from 2MB to 256MB, depending on the kernel version and the hardware architecture. Using HugePages reduces the OS maintenance of page states, and increases Translation Lookaside Buffer (TLB) hit ratio.
Run the following will show a filesystem of type hugetlbfs configured in the kernel:
First, we need to create the hugepages directory and mount it on the ‘hugetlbfs’ type filesystem.
chmod 777 hugepages
Using root, add the line into /etc/fstab for auto-mount in future restarts:
nodev /mnt/hugepages hugetlbfs rw,auto,uid=500,user,sync 0 0
To make it effective without restart, do the following:
Next, we need to configure the hugepages size
To check the huge pages configuration on the OS:
cat /proc/meminfo|grep Huge
The ‘Hugepagesize’ is the size of hugepages the system allocates which is 2Mb. 2MB size of HugePages is available with Linux x86-64 and Linux x86. 256 MB size of HugePages is available only with Linux Itanium.
Because it’s a virtual memory to physical memory mapping, it’s mounted under /mnt/ directory.
To set the huge page size at run time (for example to set 1024), use the following:
sysctl –w vm.nr_hugepages=1024
The following line is doing the same:
echo 1024 > /proc/sys/vm/nr_hugepages
When set to 1024, actually the allocated memory would be:
1024 * 2M = 2 G
To make the setting permanent and effective on future OS restarts, add the following line into the /etc/sysctl.conf file:
Restart WebLogic server and the “cannot acquire large pages for Java heap” will be gone.
Run the following line again to check how is the hugepages is used:cat /proc/meminfo|grep Huge