Huge pages and Java
Posted in:
Java
Enable huge pages for docker
Step 1: Create external volumes to used by multiple containers
touch make_hugepages_volumes.sh
# paste below content to that file
docker volume create --driver local \
--opt type=none \
--opt device=/dev/hugepages \
--opt o=bind hugepages
chmod +x make_hugepages_volumes.sh
bash make_hugepages_volumes.sh
Step 2:
Used in docker-compose.yml
Example:
version: "3"
services:
selenium-hub:
image: selenium/hub:4.6.0-20221104
container_name: selenium-hub
expose:
- 4442
- 4443
- 4444
volumes:
- hugepages:/dev/hugepages
environment:
- SE_JAVA_OPTS=-XX:+UseHugeTLBFS -XX:+UseLargePages -Xms128M -Xmx128M
- JAVA_OPTS=-XX:+UseHugeTLBFS -XX:+UseLargePages -Xms128M -Xmx128M
restart: unless-stopped
volumes:
hugepages:
external: true
Step 4: Start your docker-compose and recheck to make sure hugepages under used
grep HugePages_ /proc/meminfo HugePages_Total: 1200 HugePages_Free: 907 HugePages_Rsvd: 331 HugePages_Surp: 0
References
https://kstefanj.github.io/2021/05/19/large-pages-and-java.html
https://mpolednik.github.io/2017/06/20/hugepages-and-virtualization/