Linux中的交换内存如何工作?

时间:2020-02-23 14:33:13  来源:igfitidea点击:

为了了解Linux中的交换内存,我们将了解内存的概念以及内存达到最大容量时Linux系统的反应。

关于内存,提到内存和交换空间是很常见的。
在本教程中,我们讨论内存和交换内存,以了解为什么Linux中的交换内存如此重要。

设置上下文...

有时,您会在工作时遇到系统缓慢的情况。
这通常是由于物理内存或者内存处于最大容量而导致的。

这是我们要避免的事情,因为内存空间不可用会导致高的I/O等待时间并降低系统的响应速度。
为了解决这个问题,系统利用交换空间。
它有助于确保系统不会耗尽系统的物理内存。

如何使用内存?

内存或者随机存取存储器是任何数字设备中最重要的部分。
该硬件是存储处理器当前使用的所有数据的位置。

与其他位置(例如HDD或者SSD)相比,处理器可以更快地读取此存储位置。

由于其易失性,内存仅存储当前正在使用的数据。
一旦系统关闭,它将丢失所有存储在其上的内存。
因此,我们使用HDD,SSD或者光盘驱动器之类的存储设备永久存储任何所需的数据。

但是这些存储设备还可以在其他情况下为我们提供帮助。
一种这样的情况是内存接近满容量并且无法同时保存所有必需的数据时。

这使我们想到了Linux中交换内存的概念。

了解Linux中的交换内存

Linux中的交换内存用于在系统面临高负载的情况下防止内存中的数据溢出。
这有助于防止系统由于内存不足而变得无响应。
它还可以确保应用程序或者进程不会遇到"内存不足"错误。

交换内存如何工作?

就内存而言,页面是内存空间的固定块。
占用内存的数据块以这些页的形式存储。

如果内存存储空间接近其极限,则OS需要优先处理可利用该存储空间的进程。
因此,操作系统会选择可能休眠的旧数据或者进程以释放内存。

然后,将这些数据写入系统上ROM存储设备的预定义部分。
此部分称为"交换空间"。

Linux中交换内存的此功能允许OS始终保持足够的可用内存空间。
以后,这些页面将根据需要与存储在内存中的页面进行"交换"。

为什么交换内存很重要?

内存空间是宝贵的资源。
所有过程都需要它。
Linux中的交换内存使操作系统可以平衡可用资源。
反过来,这又可以提高系统的工作效率。

Linux中交换存储器中存储的数据比内存中存储的数据需要更长的访问时间。
但是,这不会引起任何问题。

交换存储器中写入的所有数据一经释放就立即加载回内存,或者当前进程需要该数据。
这使Linux中的交换内存成为可靠的故障保护,可防止系统中正在运行的进程发生任何内存不足异常。

注意:请记住一个重要的细节,即仅对使用机械硬盘驱动器的系统建议使用交换内存。

对于使用固态驱动器的系统,从长远来看,已发现创建交换内存分区会导致硬件降级。
这会缩短SSD的寿命,并可能会导致内存故障。

如何检查系统的交换内存分配?

对于大多数系统,通常会在内存属性中遇到一个称为"虚拟内存"的术语。
虚拟内存是系统上的空间,等于Linux中内存和交换内存的总和。

默认情况下,几乎所有现代Linux系统都默认声明一个交换分区,以防止出现内存溢出情况。

因此,对于Linux用户而言,检查其系统上的虚拟内存和交换内存分配可能至关重要。
这有助于确定是否要根据需要增加或者减少交换分区。

要检查系统上虚拟内存的总分配和利用率,请在终端中键入以下命令。

free -h

可用内存交换

如上面的屏幕快照所示,这显示了总的可用内存和交换内存。

它还显示了当前正在使用的内存量以及系统可用的可用内存量。

旁说明:我已经明确声明了Linux服务器的0%交换,因为它是一个测试环境,不需要交换空间。

如果只希望查找系统上交换分区的大小,则可以使用命令行显示以下命令,使用cat命令显示存储在/proc/swaps中的交换配置文件的内容:

cat /proc/swaps

如前所述,我的系统上没有配置交换空间,但是您可以运行此命令来查看为系统配置的交换空间。