This is an old revision of the document!
Kernel Tuning
General Information
Kernel tuning using sysctl.conf
Checklist
- Any distro, but many examples are done via Red Hat based systems
Hugepages
Problem: Unable to access a VM's console, and it shows out of memory errors on boot.
Solution: Reduce the value of “vm.nr_hugepages” to less than 1/2 of total memory in MBs.
/etc/sysctl.conf
vm.nr_hugepages = 1024
1 hugepage = 2 MBs, so the above is equal to 2GB
Explanation: Hugepages that is configured to be greater than or equal to total installed memory causes memory starvation during boot due to no memory available for normal use.
Alternative config location: Hugepages could also be configured at /boot/grub/grub.conf
Swappiness
Swappiness controls how likely the kernel is to move processes out of memory and onto swap disk space.
The setting is from 0 to 100.
- 0 = Avoid swapping for as long as possible
- 60 = Linux default
- 100 = Aggressively swap from memory to disk
Check the setting:
cat /proc/sys/vm/swappiness 60
To change the setting: edit sysctl.conf, add a line, save, and re-read the config:
vim /etc/sysctl.conf vm.swappiness=1 :wq sysctl -p
More details about OOM: https://owlbearconsulting.com/doku.php?id=linux_wiki:oom_killer
File Descriptors
Viewing and setting the system wide file descriptors.
View system wide file descriptor information
sysctl fs.file-nr fs.file-nr = 6144 0 809542
The three numbers returned:
- 6144 = used file descriptors
- 0 = allocated but not used
- 809542 = system max
Change System FD Limits
Edit /etc/sysctl.conf
fs.file-max = 810542
Example above increases system wide max by 1,000.
More details, including per user settings: https://owlbearconsulting.com/doku.php?id=linux_wiki:file_descriptors