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

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

  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研究概述研究介绍研究背景和意义323系统测试 研究概述 研究概述作者罗浩 北京邮电大学陆文龙 北京邮电大学薛晨 国家计算机网络与信息安全管理中心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通信方式,在以下方面做出了改进:优化的数据传输路径轻量级的应用程序接口 7研究介绍 系统介绍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 T620CPU型号2 * Intel Xeon? CPU E5-2620内存容量32GB操作系统Ubuntu 14.04 测试结果NUMA节点内测试 NUMA节点间测试 THANK YOUTHANK YOUBUPT陆文龙

文档评论(0)

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

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

版权声明书
用户编号:8047000056000024

1亿VIP精品文档

相关文档