无论是 windows 系统还是 linux 系统, 除了物理内存外, 都还有一个虚拟内存。在 linux 上, 虚拟内存被称为 swap space
。过去以来, 虚拟内存的大小应该是物理内存的两倍, 但是最近几年来, 物理内存的大小至少都有了好几个 GB, 如果 16G 内存用 32G 的 swap 岂不是太占用硬盘空间?
下图是虚拟内存和交换空间的映射关系, 虚拟内存的存在, 可以提高电脑的运行速度, 所以其存在很有意义
我们看看 redhat 的官方答复是怎么说的
对于内存较少 (1 GB 及以下) 的系统尤其重要。在这些系统上, 如果分配的交换空间不足, 可能会导致不稳定等问题, 甚至导致已安装的系统无法启动。
Amount of RAM in the system 物理内存 | Recommended swap space 建议的交换空间大小 | Recommended swap space if allowing for hibernation 如果开启休眠功能建议的交换空间大小 |
---|---|---|
⩽ 2GB | 2 times the amount of RAM | 3 times the amount of RAM |
> 2GB - 8GB | Equal to the amount of RAM | 2 times the amount of RAM |
> 8GB - 64GB | At least 4 GB | 1.5 times the amount of RAM |
> 64GB | At least 4 GB | Hibernation not recommended |
总结起来就是
- 如果不打算开启休眠功能, 物理内存在 8G 以下, 则 swap 设置为与物理内存一样大
- 如果不打算开启休眠功能, 物理内存在 8G 以上, 则 swap 空间设置为 8G 即可
- 当物理内存大于 64G 时, 不建议开启休眠功能
- 物理内存小于 1G 时, 则 swap 空间最少设置为 1G
以下是 Ubuntu 的指南, 更加细致: (从左至右依次是RAM大小, 不开启休眠, 开启休眠, 最大值)
RAM No hibernation With Hibernation Maximum
256MB 256MB 512MB 512MB
512MB 512MB 1024MB 1024MB
1024MB 1024MB 2048MB 2048MB
RAM No hibernation With Hibernation Maximum
1GB 1GB 2GB 2GB
2GB 1GB 3GB 4GB
3GB 2GB 5GB 6GB
4GB 2GB 6GB 8GB
5GB 2GB 7GB 10GB
6GB 2GB 8GB 12GB
8GB 3GB 11GB 16GB
12GB 3GB 15GB 24GB
16GB 4GB 20GB 32GB
24GB 5GB 29GB 48GB
32GB 6GB 38GB 64GB
64GB 8GB 72GB 128GB
128GB 11GB 139GB 256GB
256GB 16GB 272GB 512GB
512GB 23GB 535GB 1TB
1TB 32GB 1056GB 2TB
2TB 46GB 2094GB 4TB
4TB 64GB 4160GB 8TB
8TB 91GB 8283GB 16TB
原文
Linux的swap空间需要设置多大?
16.17.5. Recommended Partitioning Scheme
SwapFaq