1、内存性能指标

1、系统内存使用情况

  • 已用内存和剩余内存
  • 共享内存 :通过 tmpfs 实现的,是一种特殊的缓存
  • 可用内存:新进程可以使用的最大内存,包括 剩余内存和可回收内存
  • 缓存:一部分是,磁盘读取的页缓存,用来缓存从磁盘读取的数据,加快再次访问速度。另一部分,Slab 分配器中的可回收内存
  • 缓冲区:对原始磁盘的临时存储,用来缓存将要写入磁盘的数据。这样内核可以将分散的写,统一写入磁盘

    2、进程内存使用情况

  • 虚拟内存:包括进程代码段、数据段、共享内存、已申请的堆内存、已换出的内存。注意:已申请的内存,即使没有分配物理内存,也算作虚拟内存

  • 常驻进程:进程实际使用的物理内存,不包括 Swap 和共享内存
  • 共享内存:既包括与其他进程共同使用的真实的共享内存,还包括加载的动态链接库和程序的代码段等
  • Swap内存:通过Swap换出到磁盘的内存。

系统调用内存分配请求后,并不会立刻为其分配物理内存,而是在请求首次访问时,通过缺页异常来分配。缺页异常又分为下面两种场景。

  • 可以直接从物理内存中分配时,被称为次缺页异常
  • 需要磁盘 I/O 介入(比如 Swap)时,被称为主缺页异常

    2、工具

    image.png
    image.png

    3、分析瓶颈

  1. 先用 free 和top ,查看系统整体内存使用情况
  2. 再用 vmstat 和 pidstat ,查看趋势,判断内存问题类型
  3. 详细分析,如内存分配分析、缓存/缓冲区分析、具体进程的内存使用分析

image.png