CGroup 交互
CGroups 正在不断发展,部分原因是它们构成了当今许多商业服务的核心。 令人惊奇的是,它们仍然是一个未完成的项目。 隔离和分配系统元素是一项持续的努力,还有许多工作要做。 并且由于安全问题,可能永远无法将虚拟系统呈现为完全独立的系统。 总是需要做出妥协。
最近,Andrey Ryabinin 试图修复他认为 CGroups 处理低内存情况时存在的问题。 在当前的内核中,低内存情况会导致 Linux 从所有 CGroups 中平均回收内存。 但这非但没有做到公平,反而会惩罚那些有效利用内存的 CGroup,奖励那些分配了超出所需内存的 CGroup。
Andrey 的解决方案是在从那些正在大量使用的 CGroup 回收内存之前,先从那些拥有未使用内存的 CGroup 中回收。 这似乎比原来的行为更不公平,因为只会针对某些 CGroup 而不是其他 CGroup。
Andrey 的想法得到了 Rik van Riel 等人的支持。 但并非所有人都如此着迷。 例如,Roman Gushchin 指出,活动内存和未使用内存之间的区别并不像 Andrey 认为的那么清晰。 他们就这个问题争论了很多,因为公平对待的整个问题都悬而未决。 如果 Andrey 的重点是防止 CGroups “玩弄系统” 以确保获得更多内存,那么处理低内存情况的正确方法取决于能够清楚地识别哪些 CGroups 应该被指定回收,哪些应该被排除在外。
与此同时,这种情况可能被视为一个安全问题,绝对需要保护独立的 CGroups 彼此隔离。 如果是这样,那么像 Andrey 的补丁这样的东西就是必要的,而且更多具有安全意识的开发人员会开始对获得精确的细节感兴趣。
注意:如果您在上面被提及并且想要在评论区上方发表回复,请将您的回复文本发送至 ljeditor@linuxjournal.com。