一种基于内存共享机制的容器间快速通信方法研究.pptVIP

一种基于内存共享机制的容器间快速通信方法研究.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于内存共享机制的容器间快速通信方法研究

一种基于内存共享机制的容器间快速通信方法研究 BUPT 演讲者:陆文龙 学 校:北京邮电大学 目 录 1 研究概述 研究介绍 研究背景和意义 3 2 3 系统测试 研究概述 研究概述 作者 罗浩 北京邮电大学 陆文龙 北京邮电大学 薛晨 国家计算机网络与信息安全管理中心 2 摘要 提出了一种基于内核内存共享的同宿主Docker容器间高速通信方案。该方案在不破坏Docker容器间隔离特性的基础上实现容器间内存共享;并在该内核内存共享空间设计了面向连接的通信模型。在NUMA体系环境下的验证结果表明:该通信方案与Docker默认的虚拟网桥通信方式相比,对于Docker容器在同一NUMA节点上和在跨NUMA节点上的两种通信场景,最大吞吐量分别提升了350%和110%。 1 研究背景和意义 研究背景和意义 Docker是一款轻量级虚拟化容器的管理引擎,利用Linux内核特性命名空间(namespaces)及控制组(cgroups)为容器提供隔离的运行环境。IPC namespaces隔离特定的IPC资源,这导致Linux系统上传统的进程间通信方式(如system V IPC)不能应用在同宿主Docker容器间的进程通信中,同宿主Docker容器间通常采用Linux bridge的方式进行通信。 本研究提出的基于内核共享内存的同宿主Docker容器间通信方案,相比于Linux bridge通信方式,在以下方面做出了改进: 优化的数据传输路径 轻量级的应用程序接口 * 研究介绍 系统介绍 Docker0为连接容器的虚拟网桥;veth1和veth2分别为绑定到虚拟网桥上与容器A和容器B连接的虚拟网路接口;eth0为容器A和容器B各自的网络接口。在SHMBC通信方案中,直接将内核内存块C映射到进行通信的容器A和容器B中的通信进程地址空间C’中。 系统包括三个管理模块:容器管理、连接管理和内存空间管理,在Docker容器的宿主机操作系统内核中,维护一张容器表和一张连接状态表,以及一个共享内存池。 内存空间管理 1 内存空间管理用来维护一个共享内存池,该内存池中的内存块由连续的物理内存页组成,为通信连接提供共享内存空间。 每个内存块由缓冲区状态信息和数据区域(多个数据块组成)。在缓冲区状态信息中包含数据块数量、读索引、写索引,以及其他统计信息。其中,读/写索引在数据区域实现环形缓冲队列,并实现无锁操作。 数据块 缓冲区状态信息 内存块 …… 内存块 内存块 …… 内存池 读指针 写指针 数据块 数据块 数据块 数据块 数据块 容器管理 2 容器管理模块负责发现宿主机上的Docker容器,动态的维护宿主机系统中的容器列表。它使用Docker提供的“docker inspect”命令来获取容器的相关信息。 右图为“Docker inspect”获取到的Docker容器的详细信息分类,以及“容器表”中的信息项。 Docker inspect获取信息 变量名 说明 Id 容器编号 State 容器状态 Name 容器名 Hostconfig 容器配置 Networksetting 容器网络配置 容器表 容器ID 运行状态 容器名 挂载文件 IP地址列表 监听端口列表 连接管理 listen() 等待连接 query() 查询目标容器 receive() 接收数据 accept() 接受连接 send() 发送数据 send() 发送数据 connection() 申请连接 close() 关闭连接 receive() 接收数据 close() 关闭连接 3 连接管理通过“连接表”实现。服务端建立监听连接,在连接表中注册监听连接状态信息,等待客户端的连接请求;客户端查询连接目标容器是否为同宿主容器,如果是,申请连接服务端,否则提示用户采用socket通信方式;客户端申请连接,如果存在对应服务端的监听连接则建立连接,否则失败返回;连接建立后,服务端和客户端之间开始传输数据;数据传输完成,关闭连接。 服务端 客户端 系统测试 测试环境 在对系统进行测试时,充分考虑了当前的NUMA体系结构对测试结果的影响,分别测试了NUMA节点内和NUMA节点间的Docker容器通信性能。 测试环境如下: 服务器型号 DELL PowerEdge T620 CPU型号 2 * Intel Xeon? CPU E5-2620 内存容量 32GB 操作系统 Ubuntu 14.04 测试结果 NUMA节点内测试 NUMA节点间测试 THANK YOU THANK YOU BUPT 陆文龙 * * 1,SHMBC通信方案是共享内存通信方式在同宿主Docker容器间通信场景的一种实现,它简化了同宿主Docker容器间的数据传输路径,是一种零拷贝的数

您可能关注的文档

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档