Show Table of Contents
3.7. memory
memory 子系统自动生成 cgroup 中任务使用的内存资源报告,并设定由那些任务使用的内存限制:
- memory.stat
- 报告大范围内存统计,如下表所述:
表 3.1. memory.stat 报告的值
统计 描述 cache页缓存,包括 tmpfs(shmem),单位为字节rss匿名和 swap 缓存,不包括 tmpfs(shmem),单位为字节mapped_filememory-mapped 映射的文件大小,包括 tmpfs(shmem),单位为字节pgpgin存入内存中的页数 pgpgout从内存中读出的页数 swapswap 用量,单位为字节 active_anon在活跃的最近最少使用(least-recently-used,LRU)列表中的匿名和 swap 缓存,包括 tmpfs(shmem),单位为字节inactive_anon不活跃的 LRU 列表中的匿名和 swap 缓存,包括 tmpfs(shmem),单位为字节active_file活跃 LRU 列表中的 file-backed 内存,以字节为单位 inactive_file不活跃 LRU 列表中的 file-backed 内存,以字节为单位 unevictable无法再生的内存,以字节为单位 hierarchical_memory_limit包含 memorycgroup 的层级的内存限制,单位为字节hierarchical_memsw_limit包含 memorycgroup 的层级的内存加 swap 限制,单位为字节另外,这些文件除hierarchical_memory_limit和hierarchical_memsw_limit之外,都有一个对应前缀total,它不仅可在该 cgroup 中报告,还可在其下级 cgroup 中报告。例如:swap报告 cgroup 的 swap 用量,total_swap报告该 cgroup 及其所有子组群的 swap 用量总和。当您解读memory.stat报告的数值时,请注意各个统计数据之间的关系:active_anon+inactive_anon= 匿名内存 +tmpfs的文件缓存 + swap 缓存因此,active_anon+inactive_anon≠rss,因为rss不包括tmpfs。active_file+inactive_file= 缓存减去tmpfs大小
- memory.usage_in_bytes
- 报告该 cgroup中进程使用的当前总内存用量(以字节为单位)。
- memory.memsw.usage_in_bytes
- 报告该 cgroup 中进程使用的当前内存用量和 swap 空间总和(以字节为单位)。
- memory.max_usage_in_bytes
- 报告该 cgroup 中进程使用的最大内存用量(以字节为单位)。
- memory.memsw.max_usage_in_bytes
- 报告该 cgroup 中进程使用的最大内存用量和 swap 空间用量(以字节为单位)。
- memory.limit_in_bytes
- 设定用户内存的最大量(包括文件缓存)。如果没有指定单位,则将该数值理解为字节。但是可以使用前缀代表更大的单位 -
k或者K代表千字节,m或者M代表 MB,g或者G代表 GB。您不能使用memory.limit_in_bytes限制 root cgroup;您只能在该层级中较低的组群中应用这些值。在memory.limit_in_bytes中写入-1删除现有限制。 - memory.memsw.limit_in_bytes
- 设定最大内存与 swap 用量之和。如果没有指定单位,则将该值解读为字节。但是可以使用前缀代表更大的单位 -
k或者K代表千字节,m或者M代表 MB,g或者G代表 GB。您不能使用memory.memsw.limit_in_bytes限制 root cgroup;您只能在该层级中较低的组群中应用这些值。在memory.memsw.limit_in_bytes中写入-1删除现有限制。 - memory.failcnt
- 报告内存达到在
memory.limit_in_bytes设定的限制值的次数。 - memory.memsw.failcnt
- 报告内存加 swap 空间限制达到在
memory.memsw.limit_in_bytes设定的值的次数。 - memory.force_empty
- 当设定为
0时,会清空这个 cgroup 中任务所使用的所有页面的内存。这个接口只可在 cgroup 中没有任务时使用。如果无法清空内存,则在可能的情况下将其移动到上级 cgroup 中。删除 cgroup 前请使用memory.force_empty以避免将不再使用的页面缓存移动到它的上级 cgroup 中。 - memory.swappiness
- 将内核倾向设定为换出这个 cgroup 中任务所使用的进程内存,而不是从页缓冲中再生页面。这也是在
/proc/sys/vm/swappiness中设定的使用同一方法为整个系统设定的内核倾向。默认值为60。低于这个值会降低内核换出进程内存的倾向,将其设定为0则完全不会为 cgroup 中的任务换出进程内存。高于这个值将提高内核换出进程内存的倾向,大于100时内核将开始换出作为这个 cgroup 中进程的地址空间一部分的页面。请注意那个值为0不会阻止换出进程内存;系统缺少内存时仍可能发生换出内存,这是因为全局虚拟内存管理逻辑不读取该 cgroup 值。要完全锁定页面,请使用mlock()而不时 cgroup。您不能更改以下组群的 swappiness:- root cgroup,它使用在
/proc/sys/vm/swappiness中设定的 swappiness。 - 有属于它的子组群的 cgroup。
- memory.use_hierarchy
- 包含指定是否应将内存用量计入 cgroup 层级的吞吐量的标签(
0或者1)。如果启用(1),内存子系统会从超过其内存限制的子进程中再生内存。默认情况(0)是子系统不从任务的子进程中再生内存。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.