永久关闭交换空间是否安全?

我的系统变得越来越慢,尤其是在使用Firefox / Chromium和虚拟机时。我注意到我至少有3.2GB的空闲内存(使用Gnome系统监视器),而且没有进行交换。
现在我所做的就是执行了“swapoff -a”命令,系统性能提高了30%。所以我的问题是:使用“swapoff”安全吗?如果我使用“swapoff”重新启动计算机,会安全吗?

enter image description here


1你确定Ubuntu在完全使用RAM之前会使用你的交换空间吗?执行 free -m 命令后会得到什么输出?通常情况下,关闭交换空间不会有任何影响,因为Ubuntu会尽可能地使用RAM,并且不应该出现RAM未使用而交换空间被使用的情况。 - ste_kwr
2只是让您知道,我的8GB系统上没有交换空间,只有单个SSD。 - Lekensteyn
3你可以选择关闭交换空间,这样应该没问题,或者调整交换空间的值。它可以在/proc/sys/vm/swappiness找到。使用'sysctl'进行更持久的更改。需要注意的是,休眠功能需要交换空间。我认为睡眠功能实际上不需要它,但休眠功能需要。 - Marky
@kniwor 是的,我试过了,在使用了2.5 GB的内存后...它开始使用交换空间,然后我不得不重新启动系统才能正常运行。有时候在使用了1 GB内存后,我的系统会变慢。 - One Zero
我已经检查了5到6次。 - One Zero
猫 /proc/sys/vm/swappiness = 60 - One Zero
3个回答

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。

12这是一个关于配置交换空间的极好指南。非常棒的回答。你甚至可以发布一个新问题,询问“如何配置交换空间”,并复制这个回答,这样其他人就更容易找到了。来到这个问题的人都会寻找“是”或“否”的答案,而你的回答则是给那些已经选择“是”的人提供的指南。 - Tom Brossman
1@TomBrossman,我已经完成了,你可以查看它 http://askubuntu.com/questions/103915/how-do-i-configure-swappiness - One Zero
13这个虽然是一个有用的指南,但并没有回答问题。提问者想知道的是是否安全,而不是如何做。 - fouric
2@InkBlend 更奇怪的是,这个毫无回答的问题竟然是提问者本人所提出的。 - underscore_d
无论如何,非常感谢你的建议。使用这个Ubuntu笔记本电脑真是开启了一个全新的世界。 - Don Pflaster

可能的。你应该阅读Ubuntu FAQ页面这里的'为什么需要交换空间'部分,并根据自己的判断。

如果你更重视速度而不是交换空间提供的安全保障,你应该禁用它。

如果你从不挂起到磁盘,总是关机和重新启动,你可以安全地禁用它。

如果你有很多内存(你的4GB + 运行的虚拟机是一个危险情况),那么你可以禁用它。

对我来说,我的操作系统安装在SSD上,有8GB的内存,从未挂起过。我不需要交换空间,从未看到它被使用,并且我只是出于习惯在安装时设置了它。

作为替代方案,这里有一个关于Firefox的about:config调整来自Lifehacker,它解释了如何仅使用RAM作为浏览器缓存。在尝试之前,请阅读文章底部链接的反驳意见。


不,这是不安全的。原因是当系统的RAM用尽并且无法进行任何交换时,它可能会冻结,除了硬重启之外没有恢复的机会。这不仅仅是关于能否挂起的问题。
来源:我的14.04版本就有这个问题。
你应该保留一定数量的交换空间,请参考Ubuntu FAQ中的建议数值。