swap交换空间

物理内存就是系统硬件提供的内存大小,是真正的内存。相对于物理内存,在 Linux 下还有一个虚拟内存的概念,虚拟内存是为了满足物理内存的不足而提出的策略,其设计目的是为了解决真实物理内存不足的问题,它是利用磁盘空间虚拟出的一块逻辑内存。用作虚拟内存的磁盘空间被称为交换空间(又称 swap 空间)。

作为物理内存的扩展,Linux 会在物理内存不足时,使用交换分区的虚拟内存,更详细地说,就是内核会将暂时内存中暂时不常用的数据临时存放到硬盘中,以便腾出物理内存空间。这样一来,物理内存得到了释放,这块内存就可以用于其他目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。

但由于交换分区毕竟是通过硬盘设备读写数据的,速度肯定要比物理内存慢,所以只有当真实的物理内存耗尽后才会调用交换分区的资源。

Linux 的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。

当然要深入了解Linux的内存机制,我们还需要掌握以下几点内容:

  1. Linux 系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存 Linux
  2. 根据“最近最少使用”的原则(LRU最近最少使用置换算法),将一些不经常使用的页面文件交换到虚拟内存
  3. 交换空间的页面在使用时会首先被交换到物理内存,如果此时没有足够的物理内存来容纳这些页面,它们又会被马上交换出去,如此一来,虚拟内存中可能没有足够的空间来存储这些交换页面,最终会导致Linux 出现假死机、服务异常等问题

swap 配额大小

因此,合理规划和设计 Linux 内存的使用是非常重要的,关于物理内存和交换空间的大小设置问题,取决于实际所用的硬盘大小,我们看下redhat官方建议:

linux模拟高内存占用stress linux 虚拟内存 swap_死机