一种查询任务通信方法及系统技术方案

技术编号:19857554 阅读:25 留言:0更新日期:2018-12-22 11:42
本发明专利技术提供了一种查询任务通信方法及系统,包括:在接收到的查询请求的服务器解析查询请求,将查询请求中的查询语句分解成多个子步骤,子步骤的相关信息属于查询任务的元数据;从多个子步骤的第一个子步骤开始逐步处理查询请求,得到查询中间结果;若下一个子步骤依赖的数据在远端服务器,则将查询中间结果和查询任务的元数据分别通过GPUDirect RDMA和RDMA的方式发送给远端的服务器,远端服务器根据接收到的查询中间结果和查询任务的元数据继续处理查询请求的子步骤。本发明专利技术降低了整个通信过程的开销、避免了网络资源的争用且提高了整个查询系统的性能。

【技术实现步骤摘要】
一种查询任务通信方法及系统
本专利技术涉及通信
,具体地,涉及一种基于GPUDirectRDMA的查询任务通信方法。
技术介绍
大数据时代,数据规模越来越庞大,比如互联网的网页数量规模达几十亿之多,庞大的数据常被切分成多份存储在多台机器中。为了在庞大的数据集中查找出感兴趣的数据,提供查询服务的软件通常都运行在由多台机器组成的分布式环境中。随着硬件技术的不断发展,数据中心内逐渐出现了配备高性能图形处理单元(GPU)的服务器,GPU相比CPU有更强的计算性能和更高的内存带宽,因此常被作为计算任务的加速器,作为CPU的补充。在数据中心中广泛使用的英伟达GPU,它有自己专用的内存,这部分GPU内存与CPU使用的系统内存(CPU内存)是相互分离的。因此在GPU上执行计算任务之前,需要先把计算所需的数据拷贝到GPU内存上,然后才能在GPU上发起计算任务。在分布式计算环境中处理查询任务时,通常需要涉及到机器之间的相互通信,发送查询任务的中间结果。例如服务器A给服务器B发送查询任务的中间结果,需要先把中间结果数据从GPU内存拷贝到CPU内存,然后通过网络把数据发送到服务器B的CPU内存中,服务器B再把数据拷贝到GPU内存,继续处理查询任务。显而易见的是,上述通信过程中频繁的GPU和CPU之间的数据拷贝会显著增加查询任务的耗时,对于查询这一类延迟容忍度低的任务而言,会造成不好用户的体验。RDMA:RemoteDirectMemoryAccess,远程直接内存访问。英伟达(NVDIA)最近推出的GPUDirectRDMA技术旨在减少GPU服务器之间通信时不必要的内存拷贝,能把服务器A的GPU内存中的数据通过高性能网络直接发送到服务器B的GPU内存中。这给在分布式计算环境中的服务器间通信提供了一种新的可能性。然而,如何利用好这个新技术,降低查询任务的处理延迟,是一个亟待解决的技术难题。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种查询任务通信方法及系统。根据本专利技术提供的一种查询任务通信方法,包括:注册步骤:将数据集分发加载在集群中的每台服务器上,并在服务器上注册GPU内存和CPU内存分别用于GPUDirectRDMA和RDMA;查询请求步骤:将查询请求发送给集群中的一台服务器;解析查询步骤:在接收到的查询请求的服务器解析查询请求,将查询请求中的查询语句分解成多个子步骤,子步骤的相关信息属于查询任务的元数据;查询处理步骤:从多个子步骤的第一个子步骤开始逐步处理查询请求,得到查询中间结果;其中,若下一个子步骤依赖的数据在远端服务器,则将查询中间结果和查询任务的元数据分别通过GPUDirectRDMA和RDMA的方式发送给远端的服务器,远端服务器根据接收到的查询中间结果和查询任务的元数据继续处理查询请求的子步骤。较佳的,所述注册步骤包括:在集群中的服务器上加载数据集,并进行初始化工作,在每台服务器分别注册GPU内存和CPU内存。较佳的,所述查询请求步骤包括:服务器接收到查询请求后初始化查询任务的相关数据,清空中间结果表,为处理查询任务做准备。较佳的,所述解析查询步骤包括:服务器对查询请求进行解析,查询请求包括多个查询语句,根据不同的查询语句,将查询请求分解成多个子步骤执行;在执行每一个子步骤之前,先把子步骤依赖的数据从CPU内存拷贝到GPU内存,然后再在GPU上执行子步骤的处理逻辑。较佳的,所述查询处理步骤包括:服务器从第一个子步骤开始处理查询请求,用子步骤中的查询条件对数据集进行匹配操作;其中,查询请求的控制流逻辑在CPU上执行,对数据集的匹配操作在GPU上执行,匹配操作得出的查询中间结果存放在GPU内存中;由于数据集会分散地存储在整个集群中,接收到查询请求的服务器在本地执行完一部分子步骤后,判断下一个子步骤依赖的数据是否在本地,如果在本地,那么继续处理后续子步骤;如果不在本地,那么把查询中间结果发给远端的服务器,由远端服务器基于已得出的中间结果执行后续的子步骤;所述把查询中间结果发给远端的服务器包括:以GPU内存的起始地址和查询中间结果的大小作为参数,调用RDMA网卡的单侧操作,将查询中间结果写入到远端服务器的GPU内存中,查询中间结果属于查询任务的数据信息;服务器发送完查询中间结果后,还需要发送查询任务的元数据,元数据中记录了查询请求后续的子步骤,远端服务器根据元数据来执行后续的子步骤;服务器将元数据进行序列化,将序列化后的元数据拷贝到CPU内存中,然后以缓冲区的起始地址和元数据的大小作为参数,调用RDMA网卡的单侧操作,将元数据写入到远端服务器的CPU内存中。较佳的,远端服务器接收到查询的中间结果后,将中间结果从GPU内存拷贝到另一块GPU内存中,记录所述另一块GPU内存的起始地址;远端服务器继续接收查询任务的元数据,将元数据从CPU内存中拷贝到另一块CPU内存中,反序列化后得到查询任务的元数据信息;并将记录的GPU内存的起始地址保存到元数据中;远端服务器依据元数据在CPU上执行查询任务的控制流逻辑,继续执行后续的子步骤,将子步骤依赖的数据从CPU内存拷贝到GPU内存,同时基于先前得出的中间结果,在GPU上进行数据集的匹配操作。根据本专利技术提供的一种查询任务通信系统,包括:注册模块:将数据集分发加载在集群中的每台服务器上,并在服务器上注册GPU内存和CPU内存分别用于GPUDirectRDMA和RDMA;查询请求模块:将查询请求发送给集群中的一台服务器;解析查询模块:在接收到的查询请求的服务器解析查询请求,将查询请求中的查询语句分解成多个子步骤,子步骤的相关信息属于查询任务的元数据;查询处理模块:从多个子步骤的第一个子步骤开始逐步处理查询请求,得到查询中间结果;其中,若下一个子步骤依赖的数据在远端服务器,则将查询中间结果和查询任务的元数据分别通过GPUDirectRDMA和RDMA的方式发送给远端的服务器,远端服务器根据接收到的查询中间结果和查询任务的元数据继续处理查询请求的子步骤。较佳的,所述注册模块包括:在集群中的服务器上加载数据集,并进行初始化工作,在每台服务器分别注册GPU内存和CPU内存;所述查询请求模块包括:在服务器接收到查询请求后初始化查询任务的相关数据,清空中间结果表,为处理查询任务做准备;所述解析查询模块包括:服务器对查询请求进行解析,查询请求包括多个查询语句,根据不同的查询语句,将查询请求分解成多个子步骤执行;在执行每一个子步骤之前,先把子步骤依赖的数据从CPU内存拷贝到GPU内存,然后再在GPU上执行子步骤的处理逻辑。较佳的,所述查询处理模块包括:服务器从第一个子步骤开始处理查询请求,用子步骤中的查询条件对数据集进行匹配操作;其中,查询请求的控制流逻辑在CPU上执行,对数据集的匹配操作在GPU上执行,匹配操作得出的查询中间结果存放在GPU内存中;由于数据集会分散地存储在整个集群中,接收到查询请求的服务器在本地执行完一部分子步骤后,判断下一个子步骤依赖的数据是否在本地,如果在本地,那么继续处理后续子步骤;如果不在本地,那么把查询中间结果发给远端的服务器,由远端服务器基于已得出的中间结果执行后续的子步骤;所述把查询中间结果发给远端的服务器包括:以GPU内存的起始地址和查询中间结果本文档来自技高网
...

【技术保护点】
1.一种查询任务通信方法,其特征在于,包括:注册步骤:将数据集分发加载在集群中的每台服务器上,并在服务器上注册GPU内存和CPU内存分别用于GPUDirect RDMA和RDMA;查询请求步骤:将查询请求发送给集群中的一台服务器;解析查询步骤:在接收到的查询请求的服务器解析查询请求,将查询请求中的查询语句分解成多个子步骤,子步骤的相关信息属于查询任务的元数据;查询处理步骤:从多个子步骤的第一个子步骤开始逐步处理查询请求,得到查询中间结果;其中,若下一个子步骤依赖的数据在远端服务器,则将查询中间结果和查询任务的元数据分别通过GPUDirect RDMA和RDMA的方式发送给远端的服务器,远端服务器根据接收到的查询中间结果和查询任务的元数据继续处理查询请求的子步骤。

【技术特征摘要】
1.一种查询任务通信方法,其特征在于,包括:注册步骤:将数据集分发加载在集群中的每台服务器上,并在服务器上注册GPU内存和CPU内存分别用于GPUDirectRDMA和RDMA;查询请求步骤:将查询请求发送给集群中的一台服务器;解析查询步骤:在接收到的查询请求的服务器解析查询请求,将查询请求中的查询语句分解成多个子步骤,子步骤的相关信息属于查询任务的元数据;查询处理步骤:从多个子步骤的第一个子步骤开始逐步处理查询请求,得到查询中间结果;其中,若下一个子步骤依赖的数据在远端服务器,则将查询中间结果和查询任务的元数据分别通过GPUDirectRDMA和RDMA的方式发送给远端的服务器,远端服务器根据接收到的查询中间结果和查询任务的元数据继续处理查询请求的子步骤。2.根据权利要求1所述的查询任务通信方法,其特征在于,所述注册步骤包括:在集群中的服务器上加载数据集,并进行初始化工作,在每台服务器分别注册GPU内存和CPU内存。3.根据权利要求1所述的查询任务通信方法,其特征在于,所述查询请求步骤包括:服务器接收到查询请求后初始化查询任务的相关数据,清空中间结果表,为处理查询任务做准备。4.根据权利要求1所述的查询任务通信方法,其特征在于,所述解析查询步骤包括:服务器对查询请求进行解析,查询请求包括多个查询语句,根据不同的查询语句,将查询请求分解成多个子步骤执行;在执行每一个子步骤之前,先把子步骤依赖的数据从CPU内存拷贝到GPU内存,然后再在GPU上执行子步骤的处理逻辑。5.根据权利要求1所述的查询任务通信方法,其特征在于,所述查询处理步骤包括:服务器从第一个子步骤开始处理查询请求,用子步骤中的查询条件对数据集进行匹配操作;其中,查询请求的控制流逻辑在CPU上执行,对数据集的匹配操作在GPU上执行,匹配操作得出的查询中间结果存放在GPU内存中;由于数据集会分散地存储在整个集群中,接收到查询请求的服务器在本地执行完一部分子步骤后,判断下一个子步骤依赖的数据是否在本地,如果在本地,那么继续处理后续子步骤;如果不在本地,那么把查询中间结果发给远端的服务器,由远端服务器基于已得出的中间结果执行后续的子步骤;所述把查询中间结果发给远端的服务器包括:以GPU内存的起始地址和查询中间结果的大小作为参数,调用RDMA网卡的单侧操作,将查询中间结果写入到远端服务器的GPU内存中,查询中间结果属于查询任务的数据信息;服务器发送完查询中间结果后,还需要发送查询任务的元数据,元数据中记录了查询请求后续的子步骤,远端服务器根据元数据来执行后续的子步骤;服务器将元数据进行序列化,将序列化后的元数据拷贝到CPU内存中,然后以缓冲区的起始地址和元数据的大小作为参数,调用RDMA网卡的单侧操作,将元数据写入到远端服务器的CPU内存中。6.根据权利要求5所述的查询任务通信方法,其特征在于,远端服务器接收到查询的中间结果后,将中间结果从GPU内存拷贝到另一块GPU内存中,记录所述另一块GPU内存的起始地址;远端服务器继续接收查询任务的元数据,将元数据从CPU内存中拷贝到另一块CPU内存中,反序列化后得到查询任务的元数据信息;并将记录的GPU内存的起始地址保存到元数据中;远端服务器依据元数据在CPU上执行查询任务的控制流逻辑,继续执行后续的子步骤,将子步骤依赖的数据从CPU内存拷贝到GPU内存,同时基于...

【专利技术属性】
技术研发人员:陈榕陈海波臧斌宇管海兵王思源
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1