假设“top”实用程序使用 VIRT/RES/SHM 术语:
cgroup 是否memory.limit_in_bytes
适用于 VIRT 或 RES 内存大小?我之所以问这个问题,是因为在 Fedora 23 中,在我看来 RES(常驻)内存受到 cgroup 的限制。然后我安装了 Fedora 25,突然我遇到了以前没有发生过的频繁进程终止(底部包含一些 dmesg 输出来说明问题)。我有一种预感,在 Fedora 23 和 25 之间,cgroup 改变了行为,现在似乎限制了 VIRT 而不是 RES 内存使用量。
有人能证实我的怀疑吗?有办法恢复旧的行为吗?我在 cgroup 内核文档中搜索过,但没有找到任何东西,也许是因为我搜索的术语不正确。
dmesg 输出:
Tue Jun 20 01:46:12 2017: Memory cgroup out of memory: Kill process 787 (Web Content) score 204 or sacrifice child
Tue Jun 20 01:46:12 2017: Killed process 787 (Web Content) total-vm:14151032kB, anon-rss:5000940kB, file-rss:6132kB, shmem-rss:115956kB
答案1
它适用于包括文件缓存在内的用户内存。
在这里检查 memory.limit_in_byteshttps://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-memory.html
memory.limit_in_bytes 设置用户内存的最大数量(包括文件缓存)。
存在:
cache:页面缓存,包括 tmpfs(shmem),以字节为单位
rss:匿名和交换缓存,不包括 tmpfs (shmem),以字节为单位