文档

Memcg Exstat功能

更新时间:

本文主要介绍Alibaba Cloud Linux 2(内核版本4.19.91-18.al7开始)和Alibaba Cloud Linux 3支持的Memcg Exstat(Extend/Extra)功能。

背景信息

Alibaba Cloud Linux支持的Memcg Exstat功能相较于社区版内核额外提供了以下memcg统计项:

  • 在cgroup v1接口支持了memory.eventsmemory.events.localmemory.stat接口。

  • 增加memcg全局最低水位调整产生的延迟统计。

  • 增加memcg后台异步回收产生的延迟统计。

功能概述

Alibaba Cloud Linux内核功能均基于内核接口来实现,本节主要介绍各个功能对应的接口实现方式。

功能

说明

memory events统计

在社区版内核的cgroup v2接口中存在memory.eventsmemory.events.local两个接口,能够查询memcg内发生特定事件的次数统计信息。接口详情请参见内核文档cgroup-v2.rst

Alibaba Cloud Linux在cgroup v1接口新增了memory.eventsmemory.events.local接口。

说明

memcg根组目录下不存在对应的接口文件。

memory workingset统计

在社区版内核的cgroup v2接口中存在memory.stat接口,该接口提供了workingset refaultworkingset activateworkingset nodereclaim三个统计项,接口详情请参见内核文档cgroup-v2.rst

Alibaba Cloud Linux在cgroup v1接口新增了memory.stat接口,并支持查询workingset refaultworkingset activateworkingset nodereclaimworkingset restore四个统计项。 新增的统计项workingset restore官方说明,请参见如下内容。

+    workingset_restore
+    Number of restored pages which have been detected as an active
+    workingset before they got reclaimed.

memcg全局最低水位调整产生延迟统计

Alibaba Cloud Linux支持memcg全局最低水位线分级功能,详情请参见Memcg全局最低水位线分级

Alibaba Cloud Linux在memcg.exstat接口中,提供了memcg超过偏移后的全局最低水位线导致的抑制时间统计,即统计项wmark_min_throttled_ms

说明

该统计项将递归到父组,且memcg根组目录下不存在该接口文件。

统计说明:

  • 统计输出文件:memory.exstat

  • 统计输出项:wmark_min_throttled_ms

  • 统计输出单位:ms

memcg后台异步回收产生延迟统计

Alibaba Cloud Linux支持memcg后台异步回收功能,即memcg kswapd特性,详情请参见Memcg后台异步回收

Alibaba Cloud Linux在memcg.exstat接口中,提供了memcg后台异步回收产生的延迟统计(包含回收过程中的阻塞时间和实际工作时间),即统计项wmark_reclaim_work_ms

说明

该统计项将递归到父组,且memcg根组目录下不存在该接口文件。

统计说明:

  • 统计输出文件:memory.exstat

  • 统计输出项:wmark_reclaim_work_ms

  • 统计输出单位:ms

功能使用示例

本示例在memcg的挂载点(一般情况下为/sys/fs/cgroup/memory)创建测试文件,确认该memcg文件内包含memory.eventsmemory.events.localmemory.exstat三个控制接口,并确认memory.stat控制接口内包含workingset统计项。

  1. 运行以下命令创建测试文件。

    mkdir /sys/fs/cgroup/memory/test
  2. 分别查询memory.eventsmemory.events.localmemory.exstat接口。

    1. 运行以下命令查询memory.events接口。

      cat /sys/fs/cgroup/memory/test/memory.events

      查询结果示例如下所示。

      low 0
      high 0
      max 0
      oom 0
      oom_kill 0
    2. 运行以下命令查询memory.events.local接口。

      cat /sys/fs/cgroup/memory/test/memory.events.local

      查询结果示例如下所示。

      low 0
      high 0
      max 0
      oom 0
      oom_kill 0
    3. 运行以下命令查询memory.exstat接口。

      cat /sys/fs/cgroup/memory/test/memory.exstat

      查询结果示例如下所示。

      wmark_min_throttled_ms 0
      wmark_reclaim_work_ms 0
  3. 运行以下命令确认memory.stat接口中是否包含workingset统计项。

    cat /sys/fs/cgroup/memory/test/memory.stat | grep workingset

    返回结果示例如下所示,表示已包含workingset统计项。

    workingset_refault_anon 0
    workingset_refault_file 0
    workingset_activate_anon 0
    workingset_activate_file 0
    workingset_restore_anon 0
    workingset_restore_file 0
    workingset_nodereclaim 0
    total_workingset_refault_anon 0
    total_workingset_refault_file 0
    total_workingset_activate_anon 0
    total_workingset_activate_file 0
    total_workingset_restore_anon 0
    total_workingset_restore_file 0
    total_workingset_nodereclaim 0
  • 本页导读 (1)
文档反馈