允许但不鼓励在 Ubuntu 上交换

允许但不鼓励在 Ubuntu 上交换

关于完全禁用 Ubuntu 交换区的帖子很多。是否可以告诉 Ubuntu 允许但不鼓励使用交换区?

我在一台配备 1GB RAM 和小型 SSD 的笔记本电脑上安装了 Xubuntu,将其变成了 Samba 服务器。在最坏的情况下,可用内存仍然可以容纳交换文件中的所有数据:

~$ free -m
            total       used       free     shared    buffers     cached
Mem:           991        696        294         17         66        175
-/+ buffers/cache:        454        536
Swap:         1952        107       1845

当有可用内存时,我想阻止交换,因为交换会执行大量的 IO 写入,从而迅速降低 SSD 的性能。

是否可以优先考虑 RAM 而不是交换,或者选择仅限于“交换开启/关闭”?这会带来什么副作用(如果有的话)?


感谢您指出现有的答案,它们虽然相关但很难找到。用户必须知道 90% 的答案才能搜索“如何配置 swappiness”。问题已回答。希望这个问题标题有助于索引。

答案1

除非您拥有相当旧的 SSD,否则半现代的 SSD 可以处理大量写入,因此如果您拥有半现代的 SSD,您实际上不需要做任何事情。

如果您仍想减少交换,请减少swappiness(现代 Linux 上的最小值为1,而不是0,如果您想全力以赴,尽管这10是建议的最小值并且60是 Ubuntu 的默认值)。当交换最终开始时,这会大大减慢速度(如果内存压力很大,系统可能会冻结一段时间),因为几乎没有任何东西会提前被换出。

要设置swappiness,请将10下面的 替换为swappiness您想要的,1其中100较低的值交换频率较低。打开终端(按++ Ctrl),然后运行:AltT

sudo sysctl vm.swappiness=10
sudo nano /etc/sysctl.conf

现在,在底部添加一行(或者如果已经有一行vm.swappiness,则编辑它):

vm.swappiness = 10

Ctrl+O保存。按Ctrl+X退出nano。关闭终端窗口。

相关内容