对于进一步提升资源隔离能力以保障系统 QoS,Linux cgroup 机制还存在哪些不足?
• 在 CPU QoS 方面,尽管 cgroup 支持 Quota、Share 等 QoS 机制,但在高资源 利用率下,核心的问题还是对硬件资源的竞争,以及内核 CFS 调度算法如何同时满足延迟敏感任务和批处理计算任务的需求。内核社区实现了 Intel 提出的 CAT、MBA 等 CPU Cache,内存带宽能隔离机制,谷歌和阿里云还实现了各自定制的调度器算法,以解决高利用率下调度延迟的问题。目前,此方向的技术演进非常快,而且更多的试错还在进行中,并未形成更通用的解决方案。
• 在内存领域,cgroup 机制仅仅实现了按照 cgroup 记账,以及 cgroup 内存资源的使用上限,在 page cache 层面,buddy 子系统、高利用率高压力的并发竞争,还有很多未解决的问题。目前谷歌和阿里都各自实现了有 QoS 差别的主动内存回收算法,以及 per cgroup 的内存回收策略,一定程度上可以缓解内存压力。但是,软件层面的严重共享的底层设计,让内存 QoS 难以得到很好的保障。
• 在存储领域,长期以来,Linux 内核缺乏一个可用于生产环境且具备 QoS 能力 的文件系统,只有块设备层实现了基于 cgroup 的 QoS 机制,支持按照带宽、延迟来配置共享磁盘 QoS 策略。在传统物理机环境下,因为磁盘空间和资源有限,在容器共享文件系统时,QoS 的保障问题没有很好的解决方案。在虚拟化云服务器上,由于云盘的使用,避免文件系统共享或者磁盘共享比较容易做到,所以问题迎刃而解。
• 在网络领域,Linux 网络栈 QoS 是基于 TC 模块实现的,并且早于 cgroup 的发展,技术也比较成熟。在容器调度的高利用率的情况下,网络 QoS 的问题通常与其他资源竞争问题交织在一起,例如,CPU 和内存压力经常带来网络延迟的抖动。因此,更好的网络 QoS 方案是全栈和系统化的定制。
《弹性计算:无处不在的算力》电子书可以通过以下链接下载:https://developer.aliyun.com/topic/download?id=7996"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。