交换空间是每个人似乎都有想法的事情之一,我也不例外。我所有的系统管理员朋友都有他们的意见,大多数发行版也提出了建议。
多年前,关于应该分配多少交换空间的经验法则是计算机中安装的 RAM 容量的 2 倍。当然,那是在典型计算机的 RAM 以 KB 或 MB 为单位衡量的时候。因此,如果一台计算机有 64KB 的 RAM,那么 128KB 的交换分区将是最佳大小。
这考虑到了 RAM 内存大小通常很小的事实,并且为交换空间分配超过 2 倍 RAM 并不能提高性能。对于超过两倍 RAM 的交换空间,大多数系统花费在抖动上的时间比执行有用的工作更多。
RAM 内存已经变得非常便宜,现在许多计算机的 RAM 都在数十 GB 范围内。我的大多数较新的计算机至少有 4GB 或 8GB 的 RAM,两台有 32GB,而我的主要工作站有 64GB。在处理具有大量 RAM 的计算机时,交换空间的限制性能因素远低于 2 倍乘数。因此,建议的交换空间被认为是系统内存工作负载的函数,而不是系统内存。
表 1 提供了 Fedora 项目建议的交换分区大小,具体取决于系统中的 RAM 容量以及您是否需要足够的内存来休眠系统。为了允许休眠,您需要在自定义分区阶段编辑交换空间。“推荐”的交换分区大小在默认安装期间自动建立,但我通常发现它对于我的需求来说要么太大要么太小。
Fedora 28 安装指南 定义了当前关于交换空间分配的思考。请注意,其他版本的 Fedora 和其他 Linux 发行版可能略有不同,但这与 Red Hat Enterprise Linux 用于其建议的表格相同。自 Fedora 19 以来,这些建议没有改变。
系统中安装的 RAM 容量 | 建议的交换空间 | 建议的带休眠的交换空间 |
---|---|---|
≤ 2GB | 2 倍 RAM | 3 倍 RAM |
2GB – 8GB | = RAM | 2 倍 RAM |
8GB – 64GB | 4G 到 0.5 倍 RAM | 1.5 倍 RAM |
>64GB | 最小 4GB | 不建议休眠 |
表 1:Fedora 28 文档中建议的系统交换空间。
表 2 包含我根据多年来在多种环境中的经验提出的建议。
系统中安装的 RAM 容量 | 建议的交换空间 |
---|---|
≤ 2GB | 2 倍 RAM |
2GB – 8GB | = RAM |
> 8GB | 8GB |
表 2:我建议的系统交换空间。
这两个表都可能不适用于您的环境,但它们将为您提供一个起点。主要考虑因素是,随着 RAM 容量的增加,添加更多交换空间只会导致在交换空间接近填满之前就发生抖动。如果您的虚拟内存太少,您应该尽可能添加更多 RAM,而不是更多交换空间。
为了测试 Fedora(和 RHEL)交换空间建议,我在我的两个最大系统(RAM 分别为 32GB 和 64GB 的系统)上使用了其建议的 0.5*RAM。即使在运行四到五个虚拟机、LibreOffice 中的多个文档、Thunderbird、Chrome 网络浏览器、多个终端模拟器会话、Xfe 文件管理器以及许多其他后台应用程序时,我看到任何交换使用的唯一时间是在我安排在每天早上大约 2 点进行的备份期间。即便如此,交换使用量也不超过 16MB——是的,是兆字节。这些结果适用于我的系统和我的负载,不一定适用于您的真实环境。
我最近在 Opensource.com 与其他一些社区版主就交换空间进行了对话,我的朋友 Chris Short 是这个杰出而才华横溢的群体中的一员,他向我指出了一篇旧文章,他在文章中建议使用 1GB 作为交换空间。这篇文章写于 2003 年,他后来告诉我,他现在建议零交换空间。
所以,我们想知道,您怎么看?您在您的系统上推荐或使用什么交换空间?
38 条评论