Swap Memory in Linux
In Linux, swap memory is a type of virtual memory that is used when the system’s physical memory (RAM) is full. It allows the system to temporarily store data in the swap space on the hard drive when the RAM is full, which can help improve system performance.
To create swap memory in Linux, you can use the
fallocate command to create a file that will be used as swap space. For example, to create a 1 GB swap file, you can use the following command:
sudo fallocate -l 1G /swapfile
This command creates a file named
/swapfile with a size of 1 GB (1024 MB) in the root directory.
Next, you need to set the appropriate permissions on the swap file. This can be done using the chmod and chown commands. For example, to set the permissions to 600 (read and write access only for the owner), you can use the following command:
sudo chmod 600 /swapfile
To set the owner of the swap file to the root user, you can use the following command:
sudo chown root:root /swapfile
After setting the permissions on the swap file, you can use the
mkswap command to initialize it as swap space. For example, you can use the following command:
sudo mkswap /swapfile
Finally, you can enable the swap file by using the
swapon command. For example, you can use the following command:
sudo swapon /swapfile
After enabling the swap file, it will be used by the system whenever the RAM is full. You can check the status of the swap space using the free command. For example, the following command shows the total, used, and free swap space:
Once you have created a swap file and enabled it in Linux, you can tune the kernel to use it more efficiently. This can help improve system performance by allowing the kernel to make better use of the available swap space.
To tune the kernel to use the swap memory, you can modify the
vm.vfs_cache_pressure sysctl parameters. These parameters control how the kernel uses the swap space and the page cache, respectively.
vm.swappiness parameter determines how aggressively the kernel will use the swap space. A value of 0 means that the kernel will only use the swap space when the physical memory is completely full, while a value of 100 means that the kernel will use the swap space even when there is free physical memory available.
vm.vfs_cache_pressure parameter determines how aggressively the kernel will shrink the page cache. A value of 0 means that the kernel will never shrink the page cache, while a value of 100 means that the kernel will aggressively shrink the page cache.
To modify these
sysctl parameters, you can use the sysctl command. For example, to set the
vm.swappiness parameter to 10 and the
vm.vfs_cache_pressure parameter to 50, you can use the following commands:
sudo sysctl vm.swappiness=10
sudo sysctl vm.vfs_cache_pressure=50
These commands set the
vm.vfs_cache_pressure parameters to the specified values. You can use the
sysctl command to view the current values of these parameters as well.
Note that the sysctl parameters are reset to their default values when the system is restarted. To make the changes permanent, you can add the sysctl commands to the
/etc/sysctl.conf file. This file is read by the kernel when the system is booted, and the specified
sysctl parameters will be set automatically.
To add the sysctl commands to the
/etc/sysctl.conf file, you can use the following commands:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.conf
Recently I have created a bash script that automates the process of creating and enabling swap memory in Linux. It is mainly intended for use on on low memory machines.
#Linux #swap memory #ubuntu #debian