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