Linux 系统上交换空间的介绍

学习如何修改你的系统上的交换空间的容量,以及你到底须要多大的交换空间。性能

当今不管什么操做系统交换Swap空间是很是常见的。Linux 使用交换空间来增长主机可用的虚拟内存。它能够在常规文件或逻辑卷上使用一个或多个专用交换分区或交换文件。学习

典型计算机中有两种基本类型的内存。第一种类型,随机存取存储器 (RAM),用于存储计算机使用的数据和程序。只有程序和数据存储在 RAM 中,计算机才能使用它们。随机存储器是易失性存储器;也就是说,若是计算机关闭了,存储在 RAM 中的数据就会丢失。测试

硬盘是用于长期存储数据和程序的磁性介质。该磁介质能够很好的保存数据;即便计算机断电,存储在磁盘上的数据也会保留下来。CPU(中央处理器)不能直接访问硬盘上的程序和数据;它们必须首先复制到 RAM 中,RAM 是 CPU 访问代码指令和操做数据的地方。在引导过程当中,计算机将特定的操做系统程序(如内核、init 或 systemd)以及硬盘上的数据复制到 RAM 中,在 RAM 中,计算机的处理器 CPU 能够直接访问这些数据。操作系统

交换空间内存

交换空间是现代 Linux 系统中的第二种内存类型。交换空间的主要功能是当所有的 RAM 被占用而且须要更多内存时,用磁盘空间代替 RAM 内存。资源

例如,假设你有一个 8GB RAM 的计算机。若是你启动的程序没有填满 RAM,一切都好,不须要交换。假设你在处理电子表格,当添加更多的行时,你电子表格会增加,加上全部正在运行的程序,将会占用所有的 RAM 。若是这时没有可用的交换空间,你将不得不中止处理电子表格,直到关闭一些其余程序来释放一些 RAM 。文档

内核使用一个内存管理程序来检测最近没有使用的内存块(内存页)。内存管理程序将这些相对不常用的内存页交换到硬盘上专门指定用于“分页”或交换的特殊分区。这会释放 RAM,为输入电子表格更多数据腾出了空间。那些换出到硬盘的内存页面被内核的内存管理代码跟踪,若是须要,能够被分页回 RAM。数据分析

Linux 计算机中的内存总量是 RAM + 交换分区,交换分区被称为虚拟内存.it

Linux 交换分区类型内存管理

Linux 提供了两种类型的交换空间。默认状况下,大多数 Linux 在安装时都会建立一个交换分区,可是也可使用一个特殊配置的文件做为交换文件。交换分区顾名思义就是一个标准磁盘分区,由 mkswap 命令指定交换空间。

若是没有可用磁盘空间来建立新的交换分区,或者卷组中没有空间为交换空间建立逻辑卷,则可使用交换文件。这只是一个建立好并预分配指定大小的常规文件。而后运行 mkswap 命令将其配置为交换空间。除非绝对必要,不然我不建议使用文件来作交换空间。(LCTT 译注:Ubuntu 近来的版本采用了交换文件而非交换空间,因此我对于这种说法保留见解)

频繁交换

当总虚拟内存(RAM 和交换空间)变得快满时,可能会发生频繁交换。系统花了太多时间在交换空间和 RAM 之间作内存块的页面切换,以致于几乎没有时间用于实际工做。这种状况的典型症状是:系统变得缓慢或彻底无反应,硬盘指示灯几乎持续亮起。

使用 free 的命令来显示 CPU 负载和内存使用状况,你会发现 CPU 负载很是高,可能达到系统中 CPU 内核数量的 30 到 40 倍。另外一个状况是 RAM 和交换空间几乎彻底被分配了。

事实上,查看 SAR(系统活动报告)数据也能够显示这些内容。在个人每一个系统上都安装 SAR ,并将这些用于数据分析。

交换空间的正确大小是多少?

许多年前,硬盘上分配给交换空间大小是计算机上的 RAM 的两倍(固然,这是大多数计算机的 RAM 以 KB 或 MB 为单位的时候)。所以,若是一台计算机有 64KB 的 RAM,应该分配 128KB 的交换分区。该规则考虑到了这样的事实状况,即 RAM 大小在当时很是小,分配超过 2 倍的 RAM 用于交换空间并不能提升性能。使用超过两倍的 RAM 进行交换,比实际执行有用的工做的时候,大多数系统将花费更多的时间。

RAM 如今已经很便宜了,现在大多数计算机的 RAM 都达到了几十亿字节。个人大多数新电脑至少有 8GB 内存,一台有 32GB 内存,个人主工做站有 64GB 内存。个人旧电脑有 4 到 8GB 的内存。

当操做具备大量 RAM 的计算机时,交换空间的限制性能系数远低于 2 倍。Fedora 28 在线安装指南 定义了当前关于交换空间分配的方法。下面内容是我提出的建议。

下表根据系统中的 RAM 大小以及是否有足够的内存让系统休眠,提供了交换分区的推荐大小。建议的交换分区大小是在安装过程当中自动创建的。可是,为了知足系统休眠,您须要在自定义分区阶段编辑交换空间。

表 1: Fedora 28 文档中推荐的系统交换空间

系统内存大小 推荐的交换空间 推荐的交换空间大小(支持休眠模式)
小于 2 GB 2 倍 RAM 3 倍 RAM
2 GB – 8 GB 等于 RAM 大小 2 倍 RAM
8 GB – 64 GB 0.5 倍 RAM 1.5 倍 RAM
大于 64 GB 工做量相关 不建议休眠模式
在上面列出的每一个范围之间的边界(例如,具备 2GB、8GB 或 64GB 的系统 RAM),请根据所选交换空间和支持休眠功能请谨慎使用。若是你的系统资源容许,增长交换空间可能会带来更好的性能。

固然,大多数 Linux 管理员对多大的交换空间量有本身的想法。下面的表2 包含了基于我在多种环境中的我的经历所作出的建议。这些可能不适合你,可是和表 1 同样,它们可能对你有所帮助。

表 2: 做者推荐的系统交换空间

RAM 大小 推荐的交换空间
≤ 2GB 2X RAM
2GB – 8GB = RAM

8GB 8GB 这两个表中共同点,随着 RAM 数量的增长,超过某一点增长更多交换空间只会致使在交换空间几乎被所有使用以前就发生频繁交换。根据以上建议,则应尽量添加更多 RAM,而不是增长更多交换空间。如相似影响系统性能的状况同样,请使用最适合你的建议。根据 Linux 环境中的条件进行测试和更改是须要时间和精力的。
相关文章
相关标签/搜索