「SWAP」- 关于交换分区的大小

问题描述

交换分区是一种磁盘分区,它被当作“备用内存”使用。内核将内存中的“冷”数据换下来,写入「交换分区」,以腾出内存空间用于其他需求。
有人推荐「交换分区」的大小应该为「物理内存」的1/2倍、1倍、2倍。

那「交换分区」应该设置多大才合适呢?

解决方案

先说结论:针对现在的计算机硬件,内存容量已经不再是,可以直接禁用交换分区。

如果一定要开启交换分区:

那交换分区应该设置多大?

关于「交换大小」问题没有明确的答案,只有建议。(每次听到这种话都感觉是屁话……)

在Red Hat的「Do we really need swap on modern systems?」中:

  • 对于现代系统(即4GB或更高的内存),建议交换大小为内存的20%。

在CentOS的建议中:

  • 如果内存小于2 GB,则交换分区的大小是RAM的两倍
  • 如果内存大于2 GB,则大小为内存大小加上2 GB。例如,如果是3GB内存,则配置5GB交换分区

但是如果是作为笔记本系统的话,又有不同的地方。例如,休眠是写入交换分区的,所以这也要考虑进去。

在Ubuntu中:

  • 如果RAM小于1 GB,则交换分区的大小应至少应为RAM的大小,并且最多为RAM大小的两倍;
  • 如果RAM大于1 GB,则交换分区的大小应至少等于RAM大小的平方根,并且最多为RAM大小的两倍;
  • 如果使用休眠,则交换大小应等于RAM的大小,再加上RAM大小的平方根;

在很长一段时间中,交换分区的建议大小通常是RAM的两倍。

在 Raspbian 中,禁用交换分区

How do I permanently disable the swap service? – Forum – Raspberry Pi – element14 Community

sudo sync
sudo swapoff -a
sudo apt-get purge -y dphys-swapfile
sudo rm /var/swap
sudo sync

reboot

swapon -s

参考文献

How Much Swap Should You Use in Linux?