Tuning the memory subsystem in Linux is a powerful but delicate task. The right settings can boost your system’s performance, but incorrect changes may cause instability or slowdowns. Always adjust one parameter at a time and monitor your system before making further changes.
Exploring /proc/sys/vm
The /proc/sys/vm directory contains files that represent kernel parameters for the virtual memory subsystem. You can read and write to these files to tune system behavior.
To view the files, use:
cd /proc/sys/vm
ls -l
Sample output:
-rw-r--r-- 1 root root 0 Oct 16 04:21 block_dump
-rw-r--r-- 1 root root 0 Oct 16 04:21 dirty_background_ratio
-rw-r--r-- 1 root root 0 Oct 16 04:21 dirty_expire_centisecs
-rw-r--r-- 1 root root 0 Oct 16 04:21 dirty_ratio
-rw-r--r-- 1 root root 0 Oct 16 04:21 dirty_writeback_centisecs
-rw-r--r-- 1 root root 0 Oct 16 04:21 drop_caches
-rw-r--r-- 1 root root 0 Oct 16 04:21 swappiness
-rw-r--r-- 1 root root 0 Oct 16 04:21 vfs_cache_pressure
...
Key Parameters and Their Effects
dirty_background_ratio
Purpose: Sets the percentage of system memory filled with “dirty” pages (pages to be written to disk) before the background writeback daemon (pdflush) starts writing them out.
Check current value:
sysctl vm.dirty_background_ratio
Default example:
vm.dirty_background_ratio = 10
Tuning:
Increasing this value (for example, to 20) means less frequent flushes, which may benefit systems with fast disks but can cause larger flushes at once.
sysctl -w vm.dirty_background_ratio=20
swappiness
Purpose: Controls how aggressively the kernel swaps memory pages to disk.
Check current value:
sysctl vm.swappiness
Default example:
vm.swappiness = 60
Tuning:
Lower values reduce swapping (good for desktops), higher values increase swapping (can benefit workloads with long-sleeping processes).
sysctl -w vm.swappiness=100
dirty_ratio
Purpose: Sets the percentage of system memory that can be filled with dirty pages before processes generating writes must themselves start writing data to disk.
Check current value:
sysctl vm.dirty_ratio
Default example:
vm.dirty_ratio = 40
Tuning:
Lowering this value (for example, to 25) causes data to be written to disk more frequently, reducing the risk of large data loss but possibly impacting performance.
sysctl -w vm.dirty_ratio=25
Best Practices for VM Tuning
Change one setting at a time.
Monitor system performance after each change using tools like vmstat, top, or free.
If performance improves, keep the new setting. If not, revert to the previous value.
Document your changes for future reference and troubleshooting.
No comments:
Post a Comment