37.2. 系统内存概述

Linux 内核旨在最大程度提高系统内存资源 (RAM) 的利用率。由于这些设计特性,根据工作负载的内存要求,系统内存部分在内核内代表工作负载使用,而一小部分内存可用。这个空闲内存可用于特殊系统分配,也保留用于其他低或者高优先级系统服务。

系统内存的其余部分专用于工作负载本身,并分为以下两类:

文件内存

这个类别中添加的页面代表持久性存储中的部分文件。这些页面缓存中的页面可以在应用程序的地址空间中映射或取消映射。您可以使用应用程序将文件映射到其地址空间,或使用 mmap 系统调用,或通过缓冲的 I/O 读写系统调用处理文件。

缓冲区的 I/O 系统调用以及直接映射页面的应用程序可以重新使用未映射的页面。因此,这些页面会由内核存储在缓存中,特别是当系统没有运行任何内存密集型任务时,以避免对同一组页面造成昂贵的 I/O 操作。

匿名内存
此类别的页面由动态分配的进程使用,或者与持久性存储中的文件无关。这组页面会备份每个任务的内存中控制结构,如应用堆栈和堆区域。

图 37.1. 内存用量模式

RHEL 内存用量模式