高性能计算机分布式内存文件系统的网络性能优化方法论文

时间:2021-02-16 13:46:43 计算机毕业论文 我要投稿

高性能计算机分布式内存文件系统的网络性能优化方法论文

  高性能计算应用对计算节点内存的不均衡需求导致节点之间内存利用率差异较大,为充分利用高性能计算机的内存资源,产生了基于计算节点内存构建分布式文件系统的需求。此时,基于Socket的网络通信成为制约系统性能的主要瓶颈。

高性能计算机分布式内存文件系统的网络性能优化方法论文

  高性能计算应用对计算节点内存的不均衡需求导致计算节点之间内存利用率差异较大,为充分利用高性能计算机的内存资源,为缓解这一状况,产生了基于计算节点空闲内存构建分布式内存文件系统的需求。当存储介质从磁盘变为内存,系统服务端I/O性能大幅提高,基于Socket的网络通信成为制约系统性能的主要瓶颈。针对这一问题,本文提出一种基于RDMA的数据传输机制RBP,通过在读、写不同场景下灵活配置和使用RBP,大幅提高了系统的网络传输性能。

  1 相关工作

  1.1 MooseFS

  近年来,大数据、云计算、高性能计算蓬勃发展,分布式文件系统取得长足进步。其中,GFS(Google File System)提出的以大量不可靠的服务器为基础构建高可靠的存储系统的设计思想[1],对分布式文件系统发展具有重要意义。GFS并不开源,因此选择设计接近的开源系统MooseFS[2],其具备支持POSIX语义、易扩展、部署维护简便等特点,包括四个部件:

  元数据管理服务器Master,负责提供维护元数据,提供元数据服务,管理数据存储服务器等。

  元数据日志服务器Metalogger,负责备份Master的变化日志文件。

  数据存储服务器Chunkserver,在Master的调度下,为客户端提供数据传输和存储服务。

  客户端Client,通过FUSE[3](File system in Userspace)挂载到MooseFS系统。

  1.2 RDMA

  RDMA是一种高带宽、低延迟的网络传输控制技术,通过将可靠传输协议固化于网卡,支持绕过内核的数据零拷贝。当前,大多数高性能计算机的计算节点之间采用支持RDMA的网络互连。以TH-1A系统为例,其采用支持RDMA的自主设计的高速互联网络[4]。通过Ping Pong方式测试,计算节点之间的最小单边延迟低至1.57us。通过流水传输方式测试,单向数据传输峰值带宽高达6.34GB/s。

  1.3 相关研究

  分布式存储系统的分布式特性决定了其对通信是敏感的,因而往往要求通信能够提供更高的带宽和更低的延迟。鉴于RDMA通信在带宽和延迟方面的良好特性,研究人员在如何利用RDMA通信机制改进分布式存储系统网络性能方面做了很多工作。如N.S. Islam、M. W. Rahman等人为改进HDFS(Hadoop Distributed File System的写性能,在HDFS客户端增加Java适配器,以便借助UCR(Unified Communication Runtime)提供的功能使用RDMA进行通信[5]。Christopher Mitchell、Yifeng Geng等人设计了一个名为Pilaf的分布式内存键值对存储,根据键值对存储以读请求为主的特点,实现了一个基于RDMA的get操作,用来处理只读的服务请求,可以获得显著的性能收益[6]。显然,在利用RDMA改进分布式存储系统网络性能时,需要考虑分布式系统的特点、部署方式、额外开销等诸多因素。

  2 MooseFS基于Socket的性能瓶颈

  MooseFS在处理一个读/写请求过程中,有2个环节涉及实际的数据操作:一是Chunkserver对本地磁盘进行I/O操作,二是Client与Chunkserver之间通过Socket传输数据。当MooseFS部署在磁盘时,Chunkserver中的数据块以EXT4等本地文件系统的文件形式存储在磁盘中;当把MooseFS部署在内存时,则可以借助tmpfs等内存文件系统实现。

  为对比基于磁盘和内存两种形式,服务端I/O性能和系统I/O性能方面的差异,以写为例进行测试。Chunkserver使用TH-1A部署的Lustre系统作为本地文件系统。实验结果表明,相比基于磁盘的存储形式,基于内存存储可以使Chunkserver的写性能提高数倍,然而对系统整体写性能的提升非常有限。此时系统的性能受到基于Socket的数据传输性能的制约。

  3 优化方法

  3.1 基于RDMA的高速缓冲池RBP

  RBP的原理是预先注册一块或多块支持RDMA操作的`内存区,按照系统需求将这片区域划分成不同规格的缓冲块RBB(RDMA Buffer Block)。再根据不同用途,将同样规格的RBB组织成不同的缓冲池RBP,并配合一套专用API,以RBB为单位提供高性能的数据传输服务。

  (1)RBP的结构设计

  RBB由描述区、请求区和数据区三部分组成。描述区负责提供RBB进行RDMA通信信息,包括RBB数据区所在注册内存区的端点信息、数据区偏移、大小等。请求区负责提供传输控制消息,包括Socket连接描述符、请求类型、请求数据偏移、大小等。数据区负责提供位于注册内存区的存储空间。在利用RBB进行RDMA通信时,RBB需要在通信两端成对使用。

  RBP,即RDMA缓冲池,RBP的基础是一个由RBB作为元素的双向链表,此外还包括RBP所包含的注册内存区数组,用于进行RBB管理的计数器,互斥量,条件变量等。

  (2)RBP的使用方式

  RBP的使用方式分为显式和隐式两种,显式使用是指使用者在RBP创建好后就分配得到全部的RBB,此后由使用者自行管理,适用于用途明确且管理简单的情形;隐式使用是指使用者在需要时从RBP分配RBB,使用完后再将RBB释放,由专门的RBP管理模块进行管理,RBB分配与释放对使用者是透明的,适于用作临时用途的情形。一次基于RBP完整的RDMA通信可以分为三个阶段:

  数据准备,本地节点将数据写入到分配的RBB数据区中,并向远程节点发送控制消息。

  数据接收,本地或远程节点根据控制信息通过RDMA操作读/写RBB数据区中的数据。

  资源释放,本地和远程节点释放此前分配的RBB。

  3.2 读优化

  (1)增加特定的读RBP

  Client的每个读请求都会被分配1个数据区,于是为Client增加了一个64MB的Req RBP,其RBB大小等于Chunk大小,设为4MB,用于提供读请求的数据区,从而绕过临时数据缓冲区,直接利用RDMA通信从Chunkserver读取数据。但是,Req RBP中RBB较大,限制了其数量,无法满足多线程下大量请求对数据区的需求。于是Client增加一个作为临时数据缓冲区的Read RBP,与Req RBP互为补充。为配合Client的RBP,Chunkserver增加一个作为临时数据缓冲区Read RBP。两端Read RBP的RBB大小均与CB相同,设为64KB。此外,读优化中的RBP都是隐式使用,因此两端都需要RBP管理模块。

  (2)引入连续读流水线

  RBP对RBB的分配和释放非常灵活,完全可以利用一个RBB准备数据,另一个RBB向Client提供数据,因此,在Chunkserver的读服务线程中对采用RMDA进行连续读的情形引入了流水线。

  (3)设计多通道策略

  为了充分利用Client端Req RBP和Read RBP两个RBP的性能,增加了策略控制。当读请求的接收区大小超过1MB时,首先从Req RBP分配RBB作为数据区,若分配失败则继续采用原有的方式分配内存。由于传输非连续小数据时更适合采用Socket。因此,Chunkserver在提供数据时决定采用哪种通信方式,当要传输的数据小于32KB时,采用Socket通信,其他情况,采用RDMA通信。基于以上策略,读请求的数据传输有3条数据通道。如图1(a)所示,通道①②都通过RDMA读取数据,通道①为Client采用Req RBP接收数据,通道②为Client采用Read RBP接收数据;通道③通过Socket读取数据。

  3.3 写优化

  (1)增加特定的写RBP

  Client已存在一个用于提高写性能的Write Cache,于是增加一个显示使用的Write RBP,将Write RBP与Write Cache进行合并。为实现合并,Write RBP的大小与Write Cache设置保持一致,在初始化Write Cache时,每个CB都会绑定一个从Write RBP分配的RBB。同时,Write RBP初始化后由Write Cache进行管理。

  为配合Client增加的Write RBP,Chunkserver增加一个Write RBP作为临时数据缓冲区,其RBB大小等于CB大小。Chunkserver的Write RBP与Read RBP均由RBP管理模块进行管理。

  (2)设计多通道策略

  出于和读相同的考虑,写同样支持RDMA和Socket两种通信方式。不同的是,由Client端在将CB写入ChunkServer前决定采用哪种通信方式。因此,写请求的数据传输会存在2条数据通道,如图1(b)所示,通道(1)通过RDMA写入数据,通道(2)通过Socket写入数据。

  4 性能评测

  (1)测试环境

  硬件环境:TH-1A系统,6个计算节点,1个作为Master,4个作为Client,1个大内存节点作为Chunkserver。

  软件版本:MooseFS3.0.73,IOR2.10.1。

  测试方法:测试文件大小为2GB,块大小从16KB到4MB不等,采用直接IO模式进行顺序读、写测试。

  (2)测试结果与分析

  客户端对比测试在1个Client下进行,分别采用1、2、4、8个进程进行并行读写,以测试单个客户端的整体性能。测试结果如图2所示,在相同文件块大小和相同进程数时,改进后系统的顺序读写速度全面优于原系统。读速度最大可达到原系统的2.02倍;写速度最大可达到原系统的2.63倍。此外,当原系统进程数从4个增加到8个时,已无明显提升,说明接近基于Socket通信下的性能上限。但对于改进后系统,读块大小超过64KB的文件和写块大小超过512KB的文件,速度依然随进程数增加而稳定提高。

  服务端对比测试在1个Chunkserver下进行,采用4个Client,每个Client采用单进程进行并发读写,以测试单个服务端在顺序读写时提供的聚合带宽,测试结果如图3所示。改进后系统的单个服务端在顺序读时,向4个Client提供的带宽最大可达到原系统的2.04倍;顺序写时的带宽最大可以达到原系统的2.35倍。而且顺序写时的带宽最大值为4.42GB/s,占到计算节点之间RDMA通信最大单向带宽的接近70%。

  5 结束语

  本文提出一种基于RDMA的数据传输机制RBP,在MooseFS原有控制流程的基础上,采用多种切实有效的设计,使其在RDMA网络下的数据传输性能得到大幅提升,但对小数据和多进程的支持还存在改进空间。下一步考虑结合数据预取、写合并、最小匹配等技术,使RBP具有更全面的性能表现和更广泛的应用前景。

【高性能计算机分布式内存文件系统的网络性能优化方法论文】相关文章:

无线通信网络传输性能的优化论文07-07

浅谈WLAN网络容量性能设计和优化11-15

2017最新优化Linux系统硬盘性能方法07-02

PHP性能优化技巧11-11

浅谈企业网络性能诊断方法08-11

网络工程优化方法探讨11-02

windows系统内存的优化技巧10-07

Web系统架构的性能优化10-17

Oracle性能分析与优化10-04