Prerequisites
Before enabling HugePages, make sure you have:
- SSH access to your VPS
- Root or sudo privileges
- At least 4GB RAM (recommended)
💡 HugePages reduces memory overhead for large memory allocations, improving performance for databases like MySQL, PostgreSQL, and MongoDB.
Step 1: Check Current HugePages Status
Connect to your VPS:
ssh hxroot@YOUR_SERVER_IP -p 22
grep HugePages /proc/meminfo
cat /proc/sys/vm/nr_hugepages
If HugePages_Total = 0, HugePages are disabled.
Step 2: Calculate Number of HugePages
Default HugePage size is 2MB on most systems.
Example: To allocate 2GB for HugePages:
2GB / 2MB = 1024 pages
Calculate script:
echo "2GB of HugePages requires $((2 * 1024 / 2)) pages"
Step 3: Set Number of HugePages Temporarily
sudo sysctl vm.nr_hugepages=1024
Verify:
grep HugePages /proc/meminfo
Step 4: Make Permanent
sudo nano /etc/sysctl.conf
Add:
vm.nr_hugepages=1024
vm.hugetlb_shm_group=27
Apply:
sudo sysctl -p
Step 5: Set Memory Lock Limit for Database User
Edit limits.conf:
sudo nano /etc/security/limits.conf
Add for mysql user:
mysql soft memlock unlimited
mysql hard memlock unlimited
Or for all users:
* soft memlock unlimited
* hard memlock unlimited
Step 6: Configure MySQL to Use HugePages
Add to /etc/mysql/my.cnf:
[mysqld]
large-pages
Restart MySQL:
sudo systemctl restart mysql
Check MySQL error log for "large pages" message.
Step 7: Configure PostgreSQL for HugePages
PostgreSQL automatically uses HugePages if available.
Verify:
sudo grep huge /var/log/postgresql/postgresql-*.log
Monitor HugePages Usage
watch -n 1 "grep HugePages /proc/meminfo"
Disable HugePages
sudo sysctl vm.nr_hugepages=0
Remove lines from /etc/sysctl.conf.
Check HugePage Size
grep Hugepagesize /proc/meminfo
✅ HugePages enabled. Memory-intensive applications will see improved performance.