Linux内核提供了一个可以调整的设置,用于控制交换文件(swap file)的使用频率,称为swappiness。
将swappiness设置为零意味着除非绝对必要(即内存不足),否则会避免使用磁盘,而将swappiness设置为100意味着程序会立即被交换到磁盘上。
Ubuntu系统默认设置为60,这意味着如果内存使用量接近我的RAM的一半,交换文件将会经常被使用。您可以通过运行以下命令来检查您自己系统的swappiness值:
one@onezero:~$ cat /proc/sys/vm/swappiness
60
由于我有4 GB 的内存,所以我想将其降低到10或15。当我的内存使用率达到80%或90%时,交换文件才会被使用。要更改系统的swappiness值,请以root身份打开/etc/sysctl.conf文件。然后,在文件中更改或添加以下行:
vm.swappiness = 10
重启以使更改生效
您也可以在系统运行时更改该值
sysctl vm.swappiness=10
你也可以通过以root身份运行
swapoff -a
,然后再运行
swapon -a
来清除你的交换空间,而不必重新启动以达到相同的效果。
计算你的交换空间公式:
free -m (total) / 100 = A
A * 10
root@onezero:/home/one# free -m
total used free shared buffers cached
Mem: 3950 2262 1687 0 407 952
-/+ buffers/cache: 903 3047
Swap: 1953 0 1953
所以总共是 3950 / 100 = 39.5 * 10 = 395。
所以它的意思是当剩余的内存达到
10 % 的 395 MB 时,它开始使用 swapiness。