可能影响容器化应用程序的cgroup内存管理问题
近日,LinkedIn工程团队发表了一篇题为“不要让Linux控制组不受控制地运行”的文章。控制组(cgroup)是Linux的一项特性,像Docker和CoreOS这样的项目使用该特性限制进程的资源使用。该文概括地介绍了cgroup在内存管理方面存在的几个可能导致性能退化的问题以及可能的解决方案。
Cgroup是一种可以确保应用程序使用的资源不超出限额的机制,但不保证隔离性。一个操作系统实例中可以运行多个cgroup,其中每一个所使用的内存、CPU等都有不同的限额。不过,当有额外的内存需求(文章作者称之为“内存压力”)时,操作系统的行为可能会导致在cgroup中运行的应用程序出现意料之外的不良结果。
Cgroup是按层次组织的,操作系统在“根”cgroup中运行,其他cgroup都是根cgroup的子节点。例如,Docker容器会运行在根cgroup的一个子cgroup中。
该文探讨的问题涉及“匿名内存”和“页面缓存”,前者是程序请求的内存,后者用来存储程序数据的缓存版本。通常,这些数据是保存在类似硬盘这样的永久性存储上,供程序执行时使用。缓存用于提高那些数据的访问速度。这两种内存类型的分配总是可以被根cgroup或操作系统作废。
当主存可用时,操作系统会将页面缓存加载到RAM,但当应用程序请求额外的内存时,它会回收内存。内存回收会导致页面缓存被删除,这是跨cgroup的,因为在这种情况下,OS不会遵守cgroup自己的设置。这可能导致cgroup的页面缓存被回收,影响了应用程序的性能。
当通过回收页面缓存满足了cgroup的内存需求时,另一个问题出现了。用于存储页面缓存的内存是cgroup内存限额的一部分。因此,如果cgroup(在Docker环境里,则是容器)分得了8GB内存,则它需要将这8GB的空间同时用于页面缓存和匿名内存。这一点很容易忽视,因而可能会导致错误的性能预期。
当需要的主存超过系统可用的内存时,操作系统会执行交换操作,将存储在主存中的程序数据写入辅存,如硬盘。操作系统可以从任意子cgroup把用户内存交换出去,导致那些组中的应用程序性能退化。
对于这些问题,文章作者提出了几项建议,其中包括“预触(pre-touching)”内存,即确保内存在进程启动时分配,而不是在程序请求时。在不同的平台上,具体的做法也不相同。另外,也可以更好地估计应用程序的内存占用,那样,内存分配就可以更准确。页面缓存不容易估计,但匿名内存很容易。匿名内存可以通过类似驻留集大小(RSS)这样的系统指标来估计。
新版本的cgroup已经发布。该版本包含若干改进,但尚未针对这些情况进行测试。
本文转自d1net(转载)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
以“互联网+”能力开放打造信息服务新供给
信息服务表现出新的需求趋势 互联网已成为当前国家经济转型的重要推动力。为适应经济发展的新常态,各行各业都迫切需要通过转型求得新的发展,管理和生产流程的在线化和数据化、生产和制造的柔性化和定制化、产品和服务的网状协同等已逐渐成为企业转型的新特征和新模式。“互联网+”背景下,信息服务表现出新的需求和趋势。 第一,信息服务与业务流程紧密结合。“互联网+”引发了企业组织结构和业务流程管理的变革,大幅提升了企业的智能化程度,起到了推动再造战略、商业和运营管理模式的作用。企业组织结构和业务流程管理的变革需要高效的信息化管控手段,要求企业业务流程信息化过程中对通信服务进行整合嵌入。调研显示,通信能力嵌入企业信息化软件的业务流程,可为使用软件的企业创造全新的融合价值,除节省软件采购开支外,销售成交率、客户联系量、客户满意度得到了大幅提升,工作流程有效缩短,工作效率显著提高。 第二,信息服务需要智能、灵活的通信支持。“互联网+”时代,用户可以发挥自主权,参与到产品的设计与生产过程中,定制个性化的产品和更好的服务体验。企业借助互联网开发新产品和新业务,拓展新服务和新渠道,完善和提升原有的商业与运营模式。企...
- 下一篇
Big Switch监控和数据中心交换架构 加速SDN网络转型
SANTA CLARA,CA(2016年6月22日)- Big Switch Networks ,给全球带来超大设计灵感的网络数据中心领导者,今天宣布其基于SDN的 Big Monitoring Fabric 和Big Cloud Fabric 解决方案有了重大更新,新版本提供了重要客户安全监控使用案例、网络功能虚拟化(NFV)、IP存储、最新的开放式以太网交换机的广泛支持。此外,还增强了可视化,故障排除和自动化的网络运营,Big Switch不断加速数据中心网络转型的创新步伐。 要了解更多关于Big Monitoring Fabric 5.7和 Big Cloud Fabric 3.6,可注册参加在线研讨会, 6月29日上午10时(PST):http://go.bigswitch.com/16q2webinarlaunch_reg.html Big Monitoring Fabric新功能亮点包括Big Switch DPDK服务节点的先进功能,增强了out-of-band网络监控服务,实现了全网监控,保证网络的安全性。Big Cloud Fabric更新包括将Red Hat的Ope...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器