了解如何修改系统上的交换空间量,以及您真正需要多少交换空间。无论今天的操作系统是什么,交换交换空间都是很常见的。Linux使用交换空间来增加主机可用的虚拟内存。它可以在常规文件或逻辑卷上使用一个或多个专用交换分区或交换文件。典型计算机中有两种基本类型的内存。第一种是随机存取存储器(RAM),用于存储计算机使用的数据和程序。计算机只能使用存储在RAM中的程序和数据。随机存取存储器是易失性存储器;也就是说,如果关闭计算机,存储在RAM中的数据将丢失。硬盘是一种磁性介质,用于长期存储数据和程序。磁介质非常擅长保存数据;即使计算机断电,存储在磁盘上的数据也会保留。CPU(中央处理器)不能直接访问硬盘上的程序和数据;它们必须首先被复制到RAM中,这是CPU访问代码指令和操作数据的地方。在启动过程中,计算机将某些操作系统程序(如内核、init或systemd)和数据从硬盘复制到RAM中,计算机的处理器CPU可以直接访问这些数据。交换空间交换空间是现代Linux系统中的第二种内存类型。交换空间的主要作用是当所有RAM被占用并且需要更多内存时,用磁盘空间替换RAM内存。例如,假设您有一台RAM为8GB的??计算机。如果您启动不填满RAM的程序,一切都很好,不需要交换。假设您正在处理电子表格。随着更多行的添加,您的电子表格将增长,加上所有正在运行的程序,将占用所有RAM。如果此时没有可用的交换空间,您将不得不停止处理电子表格,直到您关闭一些其他程序以释放一些RAM。内核使用内存管理器来检测最近未使用的内存块(页面)。内存管理程序将这些相对不常用的内存页面交换到硬盘上指定用于“分页”或交换的特殊分区。这样可以释放RAM,为将更多数据输入电子表格腾出空间。那些换出到磁盘的内存页面由内核的内存管理代码跟踪,并且可以在需要时调回RAM。Linux计算机内存总量为RAM+交换分区,交换分区称为虚拟内存。Linux交换分区类型Linux提供两种交换空间。默认情况下,大多数Linux安装都会创建交换分区,但也可以使用专门配置的文件作为交换文件。交换分区,顾名思义,就是一个标准的磁盘分区,交换空间由mkswap命令指定。如果没有可用的磁盘空间来创建新的交换分区,或者如果卷组中没有空间来为交换空间创建逻辑卷,则可以使用交换文件。这只是一个创建并预分配为指定大小的常规文件。然后运行??mkswap命令将其配置为交换空间。除非绝对必要,否则我不建议使用文件作为交换空间。(LCTT译注:Ubuntu的最新版本使用交换文件而不是交换空间,因此我对这种说法保留意见)频繁交换当总虚拟内存(RAM和交换空间)快满时,就会发生频繁交换。系统花费大量时间在交换空间和RAM之间对内存块进行分页,以至于几乎没有时间进行实际工作。这种情况的典型症状是:系统变得缓慢或完全没有响应,并且HDD指示灯几乎一直亮着。使用free命令显示CPU负载和内存使用情况,会发现CPU负载很高,可能是系统CPU核数的30到40倍。另一种情况是RAM和交换空间几乎完全分配。事实上,查看SAR(系统活动报告)数据也可以揭示这一点。我在我的每个系统上都安装了SAR,并使用它们进行数据分析。交换空间的正确大小是多少?许多年前,硬盘上分配的交换空间量是计算机RAM大小的两倍(当然,那时候大多数计算机的RAM以KB或MB为单位)。因此,如果计算机有64KB的RAM,则应分配128KB的交换空间。该规则考虑到当时RAM大小非常小并且为交换空间分配超过2倍RAM并没有提高性能的事实。在大多数系统上,使用两倍以上的RAM进行交换将花费比实际执行有用工作更多的时间。现在RAM很便宜,现在大多数计算机都有GB的RAM。我的大多数新电脑至少有8GB内存,一台有32GB,我的主工作站有64GB。我的旧电脑有4到8GB的??内存。当运行具有大量RAM的计算机时,交换空间的限制性能因素远低于2x。Fedora28在线安装指南定义了交换空间分配的当前方法。以下是我的建议。下表根据系统中的RAM量以及是否有足够的内存供系统休眠提供了建议的交换分区大小。建议的交换分区大小是在安装过程中自动建立的。但是,为了满足系统休眠,您需要在自定义分区阶段编辑交换空间。表1:Fedora28文档中推荐的系统交换空间系统内存大小推荐的交换空间推荐的交换空间大小(支持休眠)小于2GB2xRAM3xRAM2GB–8GB等于2xRAM大小RAM8GB–64GB0.5xRAM1.5xRAM大于64GB工作负载相关不建议在上面列出的每个范围之间的边界上休眠(例如,具有2GB、8GB或64GB的系统RAM),具体取决于所选的交换空间和支持休眠功能,请与警告。如果您的系统资源允许,增加交换空间可能会带来更好的性能。当然,大多数Linux管理员对于应该有多少交换空间都有自己的想法。下面的表2包含基于我在各种环境中的个人经验的建议。这些可能对您不起作用,但像表1一样,它们可能对您有所帮助。表2:作者推荐的SystemSwapSpaceRAMSizeRecommendedSwapSpace≤2GB2XRAM2GB–8GB=RAM8GB8GB这两张表的共同点,随着RAM量的增加,增加更多的swap空间超过某个点只会导致Frequent交换发生在交换空间几乎被完全使用之前。基于以上建议,您应该添加尽可能多的RAM,而不是添加更多的交换空间。对于影响系统性能的类似情况,请使用最适合您的建议。根据Linux环境中的条件进行测试和更改需要花费时间和精力。
