CN117435330A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN117435330A
CN117435330A CN202210834105.1A CN202210834105A CN117435330A CN 117435330 A CN117435330 A CN 117435330A CN 202210834105 A CN202210834105 A CN 202210834105A CN 117435330 A CN117435330 A CN 117435330A
Authority
CN
China
Prior art keywords
data
dpu
read
aggregate
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210834105.1A
Other languages
English (en)
Inventor
陈一都
陈强
潘孝刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210834105.1A priority Critical patent/CN117435330A/zh
Priority to PCT/CN2023/100813 priority patent/WO2024012153A1/zh
Publication of CN117435330A publication Critical patent/CN117435330A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据处理方法及装置,该方法包括:第一DPU接收至少一个计算节点中的多个进程对应的多个读请求,对该多个读请求中每个读请求所读取的数据的信息进行聚合得到第一聚合信息;根据第一聚合信息确定第一DPU待读取的第一目标数据。第一DPU对接收到的多个读请求中每个读请求的信息进行聚合,不需要第一DPU将多个读请求依次发送给CPU处理,减少软硬件交互次数,降低CPU的占用率,另外通过将多个读请求的信息进行聚合来读取数据,可减少或避免重复IO,提高IO性能,缩短作业运行时间,进一步降低计算资源占用率。

Description

一种数据处理方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法及装置。
背景技术
在输入输出(input/output,IO)密集型的高性能计算场景,如高性能计算(highperformance computing,HPC)或超算(supercomputing,SC)等大规模应用中,存在许多IO模式为“非连续小IO”的并行应用程序,其IO数量可以达到TB量级。处理器在处理这些非连续小IO时,会消耗较多计算资源及时间资源,并且处理效率慢,应用的IO性能成为应用的技术瓶颈,优化应用的IO性能可以大规模减少应用的计算耗时。
发明内容
本申请提供一种数据处理方法及装置,用于提供应用的IO性能。
第一方面,本申请实施例提供一种数据处理方法,数据处理方法应用于计算系统,该计算系统包括多个计算节点,每个计算节点中运行有至少一个进程,每个计算节点包括数据处理设备DPU;该述方法包括:第一DPU接收该计算系统中的多个进程对应的多个读请求,该多个进行可以是运行同一作业的多个并行进程,第一DPU对该多个读请求中每个读请求所读取的数据的信息进行聚合,以得到第一聚合信息;第一DPU根据该第一聚合信息确定第一DPU待读取的第一目标数据。
通过上述设计,第一DPU对接收到的多个读请求中每个读请求的信息进行聚合,不需要第一DPU将多个读请求依次发送给处理器处理,减少计算节点内的软硬件交互次数,降低CPU的占用率,另外通过将多个读请求的信息进行聚合来读取数据,可减少或避免重复IO,提高IO性能,缩短作业运行时间,进一步降低计算系统内的计算资源占用率。
在一种可能的实现方式中,第一聚合信息用于指示多个读请求所读取的第一聚合数据;也就是说,聚合数据包括多个读请求中每个读请求所读取的数据;第一DPU根据第一聚合信息确定第一DPU待读取的第一目标数据,包括:第一DPU将第一聚合数据划分为多个数据子块;第一DPU根据DPU的标识和数据子块的映射关系确定第一DPU对应的至少一个数据子块,第一目标数据包括第一DPU对应的至少一个数据子块。
通过上述设计,第一DPU对接收到的多个读请求中每个读请求中的信息进行聚合,得到聚合信息,聚合信息指示多个读请求所读取的聚合数据,如此,第一DPU可以将非连续小IO所读取的数据聚合为一段聚合数据,从而减少或避免重复IO,提高读性能,第一DPU将聚合数据划分为多个子块,如每个子块的长度可以是执行一次读操作的适宜长度,总体可以减少读IO的数量。
在一种可能的实现方式中,第一DPU被确定为所述计算系统中的聚合DPU,计算系统还包括第二DPU,所述第二DPU也为聚合DPU,第一DPU用于读取第一目标数据,所述第二DPU用于读取所述第二目标数据,第二目标数据为所述聚合数据中除所述第一目标数据之外的其余部分或全部数据,如第二目标数据包括聚合数据的多个子块中除第一目标数据之外的一个或多个子块。
通过上述设计,第一DPU和第二DPU共同读取聚合数据,当将聚合数据划分为多个子块时,每个DPU读取多个子块中的部分子块,这样可以通过并行读缩短读数据时间,提供一种高效、灵活的读数据方法。
在一种可能的实现方式中,所述方法还包括:第一DPU将从存储设备读取的第一目标数据按照多个读请求所归属的计算节点进行分离,并将分离的数据发给对应的计算节点。
通过上述设计,第一DPU可以以计算节点为粒度分离并发送数据,而不是以读请求对应的进程来分离并发送数据,如此可以将一个计算节点上的多个读请求所请求的数据进行聚合后发送给该计算节点,从而减少网络交互次数。
在一种可能的实现方式中,每个读请求所读取的数据的信息为所述数据的地址信息。
在一种可能的实现方式中,所述方法还包括:第一DPU接收至少一个计算节点中的多个进程对应的多个写请求,对多个写请求中每个写请求中指示待写入数据的信息进行聚合得到第二聚合信息;第一DPU根据第二聚合信息确定所述第一DPU待写入的第三目标数据;
通过上述设计,第一DPU对接收到的多个写请求中每个写请求中的信息进行聚合,不需要第一DPU将多个写请求依次发送给处理器处理,减少计算节点内的软硬件交互次数,降低CPU的占用率,另外通过将多个写请求的信息进行聚合执行数据写操作,可减少或避免重复IO,提高IO性能,缩短作业运行时间,进一步降低计算系统内的计算资源占用率。
在一种可能的实现方式中,第二聚合信息用于指示多个写请求所写入的第二聚合数据;
第一DPU根据第二聚合信息确定第一DPU待写入的第三目标数据,包括:第一DPU将所述第二聚合数据划分为多个数据子块;第一DPU根据DPU的标识和数据子块的映射关系确定第一DPU对应的至少一个数据子块,第三目标数据包括第一DPU对应的至少一个数据子块。
通过上述设计,第一DPU对接收到的多个写请求中每个写请求中的信息进行聚合,得到聚合信息,聚合信息指示多个写请求待写入的聚合数据,如此,第一DPU可以将非连续小IO所请求写入的数据聚合为一段聚合数据,从而减少或避免重复IO,提高写性能,第一DPU将聚合数据划分为多个子块,如每个子块的长度可以是执行一次写操作的适宜长度,总体可以减少写IO的数量。
在一种可能的实现方式中,第一DPU被确定为计算系统中的聚合DPU,计算系统还包括第二DPU,第二DPU也为聚合DPU,第一DPU用于写入第三目标数据,第二DPU用于写入第四目标数据,第四目标数据为第二聚合数据中除第三目标数据之外的其余部分或全部数据。
通过上述设计,第一DPU和第二DPU共同将聚合数据写入存储设备,当将聚合数据划分为多个子块时,每个DPU负责对多个子块中的部分子块执行写操作,这样可以通过并行写缩短写数据时间,提供一种高效、灵活的写数据方法。
在一种可能的实现方式中,所述方法还包括:第一DPU获取所述第三目标数据,并将所述第三目标数据写入与所述第一DPU连接的存储设备。
在一种可能的实现方式中,每个写请求中指示待写入数据的信息为待写入数据的地址信息。
第二方面,本申请实施例还提供了一种数据处理装置,该装置具有实现上述第一方面的方法实例中第一DPU的功能,有益效果可以参见第一方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述装置的结构中包括通信模块、聚合模块、处理模块。这些模块可以执行上述第二方面方法示例中管理节点的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第三方面,本申请还提供了一种计算装置,所述装置包括处理器和供电电路,所述处理器执行所述存储器中的程序指令执行上述第二方面或第二方面任一可能的实现方式提供的方法。所述存储器与所述处理器耦合,其保存有执行数据备份过程中必要的程序指令和数据。供电电路用于为处理器供电。
第四方面,本申请还提供了一种计算设备,所述设备包括处理器和存储器,还可以包括通信接口,所述处理器执行所述存储器中的程序指令执行上述第二方面或第二方面任一可能的实现方式提供的方法。所述存储器与所述处理器耦合,其保存有执行数据备份过程中必要的程序指令和数据。所述通信接口,用于与其他设备进行通信,如接收读请求/写请求,又如,将从存储设备读取数据或将待写入数据写入存储设备。
第五方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质被计算设备执行时,所述计算设备执行前述第二方面或第二方面的任意可能的实现方式中提供的方法。该存储介质中存储了程序。该存储介质包括但不限于易失性存储器,例如随机访问存储器,非易失性存储器,例如快闪存储器、硬盘(hard disk drive,HDD)、固态硬盘(solid state drive,SSD)。
第六方面,本申请提供了一种计算设备程序产品,所述计算设备程序产品包括计算机指令,在被计算设备执行时,所述计算设备执行前述第二方面或第二方面的任意可能的实现方式中提供的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面或第一方面的任意可能的实现方式中提供的方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
第七方面,本申请还提供一种芯片,所述芯片用于通过执行软件程序,实现上述第二方面以及第二方面的各个可能的实现方式中所述的方法。
上述第二方面至第七方面中任一实现方式的有益效果请参见第一方面的描述,此处不再赘述。
附图说明
图1为本申请实施例提供的一种系统架构示意图;
图2为本申请实施例提供的一种作业的执行流程示意图;
图3为本申请实施例提供的一种计算节点的结构示意图;
图4为本申请实施例提供的一种数据处理方法的流程示意图;
图5为本申请实施例提供的一种IO关系示意图;
图6为本申请实施例提供的另一种IO关系示意图;
图7为本申请实施例提供的一种确定子集的场景示意图;
图8的(a)、图8的(b)均为本申请实施例提供的另一种确定子集的场景示意图;
图9为本申请实施例提供的又一种确定子集的场景示意图;
图10为本申请实施例提供的另一种数据处理方法的流程示意图;
图11为本申请实施例提供的一种数据处理装置的结构示意图;
图12为本申请实施例提供的一种计算装置的结构示意图。
具体实施方式
高性能计算(high performance computing,HPC),是跨行业跨应用领域的计算学科,通常将最前沿的计算机技术用于最复杂、最尖端的科学计算和求解,广泛应用于大规模科学问题的计算和海量数据的处理,如气象预报、汽车仿真、生物制药、基因测序、核爆模拟,以及芯片设计制造等。有能力提供HPC服务的计算机集群,称之为“HPC集群”。
计算机集群(computer cluster)是指一组松散或紧密连接在一起工作的计算节点,通常用于执行大型作业。部署集群通常是通过并发度提升总体性能,比速度或可用性相当的单台计算节点的成本效益要高。各个计算节点之间通过网络相互连接,每个计算节点运行自己的操作系统实例。在大多数情况下,每台计算节点使用相同的硬件和相同的操作系统,在某些情况下,也可以在不同的硬件上使用不同的操作系统。
图1是本申请实施例提供的一种计算节点集群的示意图。如图1所示,计算节点集群10包括多个计算节点,如100A、100B、100C、100D和100E。这些计算节点用于提供计算资源。就一台计算节点来说,它可以包括多个处理器或处理器核,每个处理器或者处理器核可能是一个计算资源,因此一台物理计算节点可以提供多个计算资源。计算节点100A、100B、100C、100D和100E之间通过网络112互联。另外,计算节点160作为调度器也连接到网络112。在操作中,调度器160可以控制提交给计算节点集群10的作业的执行。
作业可以从任何合适的源头提交给计算节点集群10。本申请实施例不限定提交作业的位置,也不限定用户提交作业的具体机制。在图1中,例如,用户132可以从企业130向计算节点集群10提交作业136。具体的,在该示例中,用户132操作客户端计算机134以向计算节点集群10提交作业136。在该实例中,企业130通过网络120连接到计算节点集群10,网络120可以是因特网,或者其他网络。因此,用户可以从远程位置向计算节点集群10提交作业。这里的作业通常是需要较多计算资源并行处理的大型作业,本实施例不限定作业的性质和数量。一个作业可能保护多个计算任务,这些任务可以分配给多个计算资源执行。大多数任务是并发或并行执行的,而有一些任务则需要依赖于其他任务所产生的数据。
举例来说,一个作业是预测城市A在未来24小时内的天气,结合图2理解,假设城市A包括多个地区,分别记为地区1、地区2、…、地区n(n取正整数),示例性的,该作业可被粗粒度地拆分为多个一级子任务,多个一级子任务并行执行,每个一级子任务用于预测城市A的其中一个地区在未来24小时内的天气。进一步,每个一级子任务还可以被细粒度地拆分为多个二级子任务,分别用于预测同一个地区在不同时段的天气,比如,区域1对应的一级子任务,该一级子任务中的第一个二级子任务(图2中记为子任务1)用于预测区域1在未来的0:00-1:00的天气,第二个二级子任务(图2中记为子任务1')用于预测区域1在未来的1:00-2:00的天气,第三个二级子任务(图2中记为子任务1'')用于预测区域1在未来的2:00-3:00的天气,依此类推。其中,同一个一级子任务中的多个二级子任务迭代执行,迭代执行是指上一个二级子任务的输出结果(或称预测结果)为下一个二级子任务的输入数据(初始值),比如,图2中子任务1的输出结果为子任务1'的输入数据,可以理解为,使用同一个地区在预测时刻前一段时间内的气象数据来预测该地区在未来一段时间内的气象数据。总而言之,多个一级子任务并行执行,或者说属于同一轮迭代的多个二级子任务并行执行,而同一个一级子任务中的多个二级子任务迭代执行。
如下结合图3理解作业的并行处理流程,图3为本申请实施例提供的一种计算节点的结构示意图。图3中的计算节点100A、100B可以是图1中的计算节点100A、100B。以一个计算节点100A为例,在软件层面,计算节点100A上运行有操作系统以及一个或多个进程(为简洁起见,图3中计算节点100A仅示出进程1、2,计算节点100B仅示出进程3、4)。该多个进程可以并行执行,每个进程可用于运行一个二级子任务,假设图2涉及的作业被调度至计算节点100A和计算节点100B执行,为便于说明,以图2中n=4,即该作业中涉及的城市A包括地区1、地区2、地区3和地区4为例,示例性地,在执行该作业的第一轮迭代时,进程1可用于执行子任务1:预测地区1在未来0:00-1:00的天气,进程2用于执行子任务2:预测地区2在未来0:00-1:00的天气,进程3用于执行子任务3:预测地区3在未来0:00-1:00的天气,进程4用于执行子任务4:预测地区4在未来0:00-1:00的天气,如此,多个子任务被并行执行,以提高作业的执行效率。
在执行作业过程中通常还会产生数据IO。数据IO包括读请求、写IO,例如读请求用于请求从存储设备210中读取任务的输入数据。写IO用于请求将任务的输出结果写入存储设备210。对于并行或并发执行的多个进程,可能会在相同的时间段内生成各自的读请求或写IO,即同期生成多个读请求或多个写IO,例如,在第一轮迭代中,多个读请求包括读请求1、读请求2、…、读请求n,其中,读请求1用于请求读取子任务1的输入数据,读请求2用于请求读取子任务2的输入数据,依此类推。又例如,在第一轮迭代中,多个写IO包括写IO1、写IO2、…、写IOn,其中,写IO1用于请求将子任务1的输出结果写入存储设备210,写IO2用于请求将子任务2的输出结果写入存储设备210,依此类推。这些由于并行或并发执行任务而同期产生的多个读请求/写IO可以称为并行或并发读请求/写IO。本申请实施例提供一种数据处理方法,可用于对作业执行过程中,在一段时间内产生的多个读请求/写IO,如多个并行或并发读请求,或者多个并行或并发写IO执行聚合处理,以减少或避免重复IO,从而提高应用的读/写性能。
需要说明的是,上述读请求及写IO仅为举例,在作业执行过程中还可能产生其他类型的读请求或写IO,并非限定于读请求仅用于读取任务的输入数据,或写IO仅用于写输出结果,也不限定任务执行过程中每个进程生成的IO数量。另外需要说明的是,图3所示的进程数量仅为保持简洁而举例,实际应用中,一个大型作业通常由大量并行或并发进程执行。本申请实施例对任务的数量,以及可以并行执行的任务的数据、IO类型、以及生成的IO数量都没有予以限制。
在硬件层面,计算节点100包括处理器112、存储器113和数据处理装置114。
其中,处理器112、存储器113和数据处理装置114可以通过总线115(可参见下文对总线1204的介绍,此处不再赘述)连接。其中,处理器112可以是中央处理器(centralprocessing unit,CPU),用于执行存储于存储器113内的指令,以运行操作系统及一个或多个进程。需要说明的是,图1中仅示出了一个CPU112,在实际应用中,CPU112的数量往往有多个,其中,一个CPU112又具有一个或多个处理器核。当CPU112包括多个处理器核时,每个处理器核可运行一个进程,这样多个处理器核可以并行运行多个进程,本实施例不对CPU112的数量,以及处理器核的数量进行限定。存储器113用于存储计算机指令和数据。
存储器113的类型有多种,请参见下文对存储器1202的详细介绍,此处不再赘述。
数据处理装置114,用于对数据进行计算或处理,还用于外部设备通信,如向存储设备210发送读请求/写IO,如读请求用于获取任务的输入数据等,写IO用于请求将任务的计算结果写入存储设备210。
存储设备210,用于存储计算机程序指令及数据,指令如HPC应用的代码,输入如作业所需的输入数据、配置文件、计算结果等数据。存储设备210可以是存储服务器、存储阵列或存储系统,存储系统可以是集中式存储系统或分布式存储系统,本申请对此不做限定。在HPC应用等并行应用中,存储设备210通常是分布式存储系统,可实现分布式文件系统,每个计算节点100通过挂载该分布式文件系统的根目录来访问该文件系统,以完成数据存取。如获取HPC应用的程序代码,运行该HPC应用来执行作业及存取文件的数据。在一个示例中,当HPC应用的IO模式为N:1时,运行该HPC应用的多个MPI进程生成的N个读请求用于对同一个文件执行读操作,如获取任务的输入数据。同理,该多个MPI进程生成的N个写IO用于对同一个文件执行写操作,如将任务的计算结果写入该文件。
需要说明的是,为保持简洁,图3仅示出一个数据处理装置114,实际上一个计算节点100可包括多个数据处理装置114,本申请对此不做限定。另外需要说明的是,图3所示的结构仅为示例,在实际产品中,计算节点100可比图3具有更多或更少的组件,如计算节点100还可以包括硬盘、一个或多个专用处理器如GPU等,本申请实施例对此不做限定。
接下来以本申请实施例提供的数据处理方法应用于图1所示的系统为例,对该方法进行详细说明。本申请实施例将从处理读请求、处理写请求两方面阐述,首先结合图4介绍对读请求的数据处理方法。该数据处理方法可以由图1或图3所示的计算节点100A、计算节点100B中的数据处理装置(简称为DPU)执行。
如图4所示,该方法包括如下步骤:
步骤401,用于执行作业的多个进程生成各自的读请求,并将读请求发送至本计算节点的DPU。
用于执行作业的多个进程可以称为并行进程,如MPI进程,该多个并行进程可能在相同的时间段内生成各自的读请求。举例来说,假设图2涉及的作业被调度至计算节点100A、100B来执行,该作业中城市A包括4个区域,结合图2可知,每轮迭代包括4个子任务,如此,每一轮迭代可通过计算节点100A、100B中的至少4个并行进程来执行作业。其中,进程1执行子任务1时生成读请求1,该读请求可能是请求读取子任务1的输入数据或配置文件等,具体不做限定,类似的,进程2执行子任务2生成读请求2,进程3执行子任务3生成读请求3,进程4执行子任务4生成读请求4。
需要说明的是,图4只是一种示例,本申请并不限定作业的拆分方式以及作业的调度方式、并行程度以及并行进程的分布做限定。
每个并行进程将各自的读请求发送至本计算节点的DPU,比如,进程1、进程2分别将读请求1、读请求2发送至DPU114A。进程3、进程4分别将读请求3、读请求4发送至DPU114B。
步骤402,多个DPU(指用于执行作业的多个计算节点对应的多个DPU,下文中的多个DPU均为此意,后续不再重复说明)中的每个DPU交换各自的读请求,使得每个DPU均获取到用于执行作业的所有并行进程的读请求。
该多个DPU中的每个DPU获取本计算节点(上的一个或多个并行进程分别)生成的读请求,然后将从本计算节点获取到的读请求发送至该多个DPU中的其他任一DPU。对应的,每个DPU接收多个计算节点中其他任一计算节点发送的读请求。对DPU而言,本计算节点是指DPU所归属的计算节点。比如,DPU114A归属于计算节点100A,DPU114B归属于计算节点100B。可以理解为,多个DPU中的每个DPU广播本计算节点的读请求,以使每个DPU均能够获取到一组完整且相同的读请求。
举例来说,计算节点100A的DPU114A获取进程1、进程2分别生成的读请求1、读请求2,并将读请求1和读请求2发送至计算节点100B的DPU114B。同样,计算节点100B的DPU114B获取进程3、进程4分别生成的读请求3、读请求4,并将读请求3和读请求4发送至计算节点100A的PDU114A。对应的,DPU114A从DPU100B接收到读请求3和读请求4,DPU114B从DPU100A接收到读请求1和读请求2。至此,DPU114A和DPU114B均得到一组相同的读请求,即读请求1至读请求4。
可理解,多个DPU交换读请求的前提是,每个DPU都需要知道要将本计算节点的读请求发送给哪些计算节点(即交换对象)。如何让DPU确定全部的交换对象,这里介绍一种可选的实现方式:对于执行同一作业的多个并行进程,在作业启动后,每个并行进程可获得一个进程标识(如rank号)和进程总数,如进程总数为m,rank号从0开始编号至m-1,每个并行进程基于自身的进程标识和进程总数,便可以确定其他并行进程的进程标识,如此,DPU可基于进程的rank号进行通信,如使用rank号确定对端的链路,从而将本节点上的读请求发送至其他计算节点的DPU。在另一种实现方式中,多个DPU中的每个DPU具有一个rank号,如此可基于DPU的rank号进行通信。
具体的在交换时,由于一个计算节点可能生成多个读请求,换言之,一个DPU可能接收到本计算节点的多个读请求,示例性地,该DPU在向每个交换对象发送本计算节点的多个读请求时,可以将该本计算节点的多个读请求进行聚合,将聚合后的数据发送给其他计算节点,而非单独发送每个读请求。其中,聚合后的数据包括本计算节点的多个读请求,比如图4中,DPU114A将读请求1和读请求2进行聚合,将聚合后的数据(包括读请求1和读请求2)发送至DPU114B,而不是将读请求1和读请求2单独发送至DPU114B,如此,可以减少网络IO的数量。然而现有方式中计算节点上的网卡只能单独发送本计算节点的每个读请求,这是由于现有方式网卡只能被动执行转发,当然,本申请中DPU也可以实现单独发送本计算节点上的每个读请求,比如,DPU114A先发送读请求1至DPU114B,再发送读请求2至DPU114B,此处不做限定。
需要说明的是,图4仅示出两个计算节点,并非指多个DPU中只有两个DPU互相交换读请求,示例性的,如果在实际作业中存在两个以上计算节点,则每个DPU均需要将本计算节点上的读请求发送至多个DPU中的其他任一DPU,比如,图4中参与作业的还包括计算节点100C(包括DPU114C),假设计算节点100C运行进程4,计算节点100B用于运行进程3,计算节点100A仍运行进行1和进程2。则DPU114A将读请求1和读请求2分别发送至计算节点100B和计算节点100C。DPU114B要将读请求3发送至计算节点100A和计算节点100C。同样,计算节点100C将读请求4发送至计算节点100A和计算节点100B。
总而言之,经过交换,用于执行作业的每个计算节点的DPU均获得一组相同的读请求,该一组读请求包括该运行作业的所有进程的读请求,具体包括本计算节点的读请求和其他计算节点的读请求。
步骤403,多个DPU中的每个DPU将获取的多个读请求中每个读请求所请求读取的数据的信息进行聚合,得到聚合信息。
示例性地,每个读请求所请求读取的数据(即待读取数据)的信息可以是该待读取数据的地址信息,每个DPU将多个读请求中每个读请求的地址信息进行聚合以得到聚合信息,该聚合信息指示多个读请求所请求读取的聚合数据。可以理解为,聚合信息为一个新的地址信息,其所指示的聚合数据包括多个读请求中每个读请求所请求读取的数据。
以一个DPU如DPU114A为例,假设读请求1请求读取数据1,读请求2请求读取数据2,读请求3请求读取数据3,读请求4请求读取数据4。DPU114A将数据1的地址信息、数据2的地址信息、数据3的地址信息和数据4的地址信息进行聚合,得到聚合信息,该聚合信息所指示的聚合数据包括数据1、数据2、数据3和数据4。应注意,此时,DPU114A上并不存在数据1至数据4,此处仅为表明聚合过程及聚合信息所指示的聚合数据。
其中,待读取数据的地址信息可包括待读取数据的起始地址和长度,举例来说,如图5所示,假设数据1的地址信息为10MB(起始地址)+2MB(长度),数据2的地址信息为12MB(起始地址)+2MB(长度),数据3的地址信息为14MB(起始地址)+2MB(长度),数据4的地址信息为16MB(起始地址)+2MB(长度)。DPU114A将10MB+2MB、12MB+2MB、14MB+2MB和16MB+2MB(长度)进行聚合,如得到聚合信息为10MB(起始地址)+8MB(长度),该聚合信息所指示的聚合数据包括数据1至数据4。DPU114B执行相同的操作,以得到相同的聚合信息10MB(起始地址)+8MB(长度)。
需要说明的是,图5所示的数据1、数据2、数据3、数据4的存储地址是连续的,且数据量大小均相同,实际上,多个待读取数据的存储地址之间还可能存在重叠,如图6的(a)所示,和/或,多个待读取数据的存储地址可能是不连续的,如图6的(b)所示。其中,待读取数据的数据量大小可以完全相同或完全不同或不完全相同,本申请对此均不做限定。
无论存储地址是否连续或重叠,聚合方式均相同,比如,假设图6的(a)中,数据1的地址信息为10MB+5MB,数据2的地址信息为12MB+6MB,数据3的地址信息为18MB+4MB,数据4的地址信息为21MB+3MB,则将多个该地址信息聚合后得到的聚合信息可包括10MB+14MB。又比如,假设图6的(b)中,数据1的地址信息为10MB+5MB,数据2的地址信息为17MB+3MB,数据3的地址信息为20MB+3MB,数据4的地址信息为23MB+5MB,则将多个该地址信息聚合后得到的聚合信息可包括10MB+18MB。
另外需要说明的是,本申请中待读取数据的地址信息并不限定于待读取数据的起始地址和长度,还可以包括其他信息,如在一个示例中,该多个读请求请求对同一个文件执行读操作,则此处的每个读请求所携带的地址信息还可以包括用于指示文件的文件路径、文件句柄、待读取数据在文件内的起始地址(偏移量)和长度等一项或多项,本申请对此不做限定。其中,文件句柄是分布式文件系统内各文件的唯一标识,基于文件路径也可以唯一确定一个文件。
总结来说,聚合数据是多个待读取数据的集合,聚合数据包括首个待读取数据(如图5中为数据1)至末尾处待读取的数据(如图5中数据4)。聚合数据的起始地址为首个待读取数据(如图5中为数据1)的起始地址、聚合数据的长度(首个待读取数据的起始地址至最后一个待读取数据(如图5中数据4)的尾端的长度)。对应的,聚合信息指示聚合数据,聚合信息可包括聚合数据的起始地址和聚合数据的长度。
综上,每个DPU基于一组相同的读请求进行聚合,均会得到一个相同的聚合信息。应注意,这里每个DPU均需要进行聚合操作以得到聚合信息,是由于后续要从该多个DPU中随机选择一些DPU作为聚合DPU,而聚合DPU需要基于聚合信息来读数据,因此,此处每个DPU均需要执行聚合操作。
步骤404,多个DPU中的每个DPU将聚合信息指示的聚合数据对应的数据范围划分为K个子集,K取正整数。
以多个读请求请求读取同一个文件内的数据,即聚合数据为一个文件内的数据为例,示例性地,首先,每个DPU以设定的数据长度为单位将聚合数据对应的数据范围(或称文件范围)划分为多个子块,然后,将该多个子块划分为K个子集,每个子集可包括一个或多个子块。每个子集内的多个子块之间可以是连续的也可以是不连续的。
其中,用于划分子块的数据长度可以预设长度,或者是其他设备如存储设备210推荐(或通知)的数据长度,具体不做限定。需要说明的是,在不同的场景中,设定的数据长度可以是不同的,这可以与待读取数据的存储位置有关,如待读取数据对应的文件系统、存储该待读取数据的存储设备或存储系统等一项或多项因素有关,本申请对此不做限定。类似的,K也可以是预设值或其他方式确定的,下文会进行说明。
如下结合图5所示的聚合数据对应的完整文件范围为10MB+8MB,示例性列出几种分块及划分子集的示例:
示例1,返回图4的S404,假设设定的数据长度为4MB,K=1,每个DPU以4MB为单位可将该文件范围(10MB+8MB)划分为2个子块,分别为子块1(10MB+4MB)、子块2(14MB+4MB)。DPU将该2个子块划分至1个子集,可见,该子集包括子块1和子块2。
示例2,参见图7所示,假设设定的数据长度为4MB,K=2,图7与图4的区别仅在于,图7中K=2,即DPU将该2个子块划分为2个子集,记为子集1和子集2,示例性的,子集1可包括子块1,子集2包括子块2。
示例3,数据长度还可以是其他值,如参见图8所示,假设设定的数据长度为2MB,K=2,如图8的(a)或图8的(b)所示,每个DPU以2MB为单位可将该文件范围(10MB+8MB)划分为4个子块,分别记为子块1(10MB+2MB)、子块2(12MB+2MB)、子块3(14MB+2MB)和子块4(16MB+2MB)。DPU将4个子块划分为2个子集,记为子集1和子集2,示例性的,参见图8的(a)所示,子集1可以包括子块1和子块2,子集2包括子块3和子块4,此时,每个子集内的多个子块之间是连续的。再示例性的,参见图6的(b)所示,子集1可以包括子块1和子块3,子集2包括子集2和子块4,此时,每个子集内的多个子块之间是不连续的。应理解,图8仅为便于理解子集与子块的关系而举例,实际应用中,子块的数量通常小于读请求的数量,从而达到聚合的效果。
示例4,上述示例1至示例3中示出聚合数据内的待读取数据是连续的,实际上是聚合数据所包括的待读取数据可以是重叠的,如图9的(a)所示。或,聚合数据所包括的待读取数据可以是不连续的,参见图9的(b)所示。无论聚合数据内的待读取数据的关系如何,基于聚合数据对应的数据范围来划分子块及子集的方式是相同,此处不再赘述。
需要说明的是,在划分子块时若不能均分,则末尾处的子块的长度可能比设定的数据长度小,或者大于设定的数据长度,比如若待读取数据的文件范围为10MB+19MB,设定的数据长度为4MB,则在划分子块时,可以划分为5个子块,末尾处的子块的大小可为3MB,或者,划分为4个子块,末尾处的子块的大小可为7MB。
步骤405,多个DPU中的每个DPU,从该多个DPU中选择K个DPU作为聚合DPU。每个聚合DPU负责一个子集,这里负责的含义是指该子集内的数据由该聚合DPU读取。
在一种示例中,每个用于执行作业的计算节点中的一个DPU作为一个聚合DPU。K的取值可以根据用于执行作业的多个计算节点的数量设定,比如,图4中,假设K=2,则其中DPU114A可为一个聚合DPU,DPU114B为另一个聚合DPU。
在另一种示例中,多个DPU中的每个DPU根据一致性算法从多个DPU中选择相同的K个DPU作为聚合DPU。示例性的,聚合DPU的数量可以是预设值(即K值),每个DPU使用相同的输入数据和一致性算法,计算出K个DPU的标识,每个标识指示的DPU为一个聚合DPU。由于使用相同的一致性算法和输入数据,因此每个DPU能够计算出相同的K个聚合DPU。
具体的,一致性算法的输入数据包括但不限于下列中的一项或多项:多个DPU中每个DPU的标识、聚合DPU的数量的预设值、聚合信息(聚合数据对应的数据范围)、设定的数据长度、子块的数量等。一致性算法的计算结果可以包括k个DPU的标识,这样每个DPU都可以确定出相同的计算结果,从而确定相同的K个聚合DPU,以及确定DPU自身是否为聚合DPU。
比如,k为预设值,如假设k=1,图4中DPU114A的rank号为0,DPU114B的rank号为1,示例性的,输入数据可以包括rank=0、rank=1、k=1,DPU114A和DPU114B分别使用相同的一致性算法和输入数据计算出一个DPU的标识,如rank号=0,并将该rank号为0的DPU作为聚合DPU。如此,DPU114A和DPU114B均能够确定DPU114A为聚合DPU,DPU114B不是聚合DPU。
值得注意的是,k还可以是通过其他方式确定的值,比如,根据子块的数量确定k值,若子块的数量较多,则k值可以相应大一点,这样便可以通过多个聚合DPU并行执行读操作,从而提高作业的并行度,从而提高读数据的效率。若子块的数量较小,则k值也可以相应小一点,以平衡读效率和网络IO的数量。通常聚合器的数量通常为多个,以提高作业的并行度。此时,一致性算法的输入数据可以包括多个DPU的标识、子块的数量,可选的,还可以包括读操作的并行度(可理解为子块的数量和聚合DPU数量的比例)等,具体不再限定。
本申请实施例中,每个聚合DPU可以根据K个聚合DPU和K个子集的映射关系来确定聚合DPU自身负责的子集,该映射关系中一个聚合DPU对应一个子集,不同聚合DPU对应的子集不同。
举例来说,每个聚合DPU通过另一种一致性算法计算其对应的一个或多个子块,从而确定其负责的子集。比如,基于子块的总数量和k值确定每个子集内的子块的数量(记为m),每m个连续子块为一个子集。每个聚合DPU基于k个聚合DPU的rank号的大小升序排序(或降序排序),按自身rank号在该排序中的位置选择对应位置的子集,比如,聚合DPU的数量为2,该2个聚合DPU的rank号分别为rank0、rank1。结合图8的(a),4个子块被分为2个子集,每个子集包括连续的两个子块,rank0对应排在第一个的子集1,rank1对应排在第二个的子集2。应注意,上述例子仅为示意,实际上,聚合DPU的rank号可能是不连续,比如,多个聚合DPU的rank号分别为0、4、9、14等等,下文不再赘述。
再比如,k个聚合DPU均基于相同的一致性算法来确定自身负责的子集。例如,一致性算法为:聚合DPU自身的编号+N*K。聚合DPU自身的编号可以基于k个聚合DPU的rank号的升序排序确定,比如,rank号排在首个的聚合DPU的编号为1,其余聚合DPU的编号从1开始依次加1,那么rank号排在第二个的聚合DPU的编号为2,rank号排在第三个的聚合DPU的编号为3,依此类推,结合图8的(b),假设k=2,那么编号为1的聚合DPU负责的子集包括子块1、子块3。编号为2的聚合DPU负责的子集包括子块2、子块4。
值得注意的是,步骤404和步骤405中的K值是同一值,K可以是预设值或根据其他方式确定的值。步骤404也可以在步骤405之后执行,比如,确定k个聚合DPU之后,再确定每个聚合DPU对应的子块,从而确定出k个子集。
步骤406,每个聚合DPU读取对应子集的数据。
示例性地,聚合DPU向存储设备210发送至少一个读请求,来请求读取该子集内的数据。具体的,当该子集内的数据的数据量较大或不连续时,聚合DPU也可以通过多个读请求读取子集内的数据,每个读请求用于请求读取该子集内的部分数据,具体不做限定。如聚合DPU以文件子块为单位从存储设备210获取数据,每个读请求用于请求读取该子集内的一个子块的数据。
举例来说,参见图4,假设K=1,图4中DPU114A为聚合DPU,DPU114B不是聚合DPU,DPU114A用于读取图4所示的子集的数据(即子块1和子块2),示例性地,DPU114A向存储设备210发送请求读取子块1的读请求5,以及读取子块2的读请求6;存储设备210响应读请求5和读请求6,将子块1的数据、子块2的数据发送给DPU114A。
再举例来说,结合图8的(b),假设K=2,图4中DPU114A、DPU114B均为聚合DPU。假设DPU114A负责子集1(如包括子块1和子块3),DPU114B负责子集2(如包括子块2和子块4)。DPU114A向存储设备210发送请求读取子块1的读请求5,DPU114B向存储设备210发送请求读取子块2的读请求6;类似的,DPU114A向存储设备210发送请求读取子块3读请求7,DPU114B向存储设备210发送请求读取子块4的读请求8。应注意,此处仅为举例,不同的聚合DPU对应的存储设备210可能是不同的,本申请对此不做限定。
每个聚合DPU读取自身负责的子集的数据,通过较少的IO来读取子集内的数据,减少或避免重复IO。
步骤407,聚合DPU以目标读请求为粒度,对读取到的子集内的数据进行分离,并反馈每个目标读请求所请求读取的数据。
目标读请求是指聚合DPU(在步骤402中)接收到的多个读请求中,请求读取的数据与该子集内的数据存在交集的读请求。存在交集是指,该目标读请求所请求读取的部分或全部数据处于该子集内。应注意,目标读请求的数量可以是一个或多个。
比如,对于图4所示的子集,其对应的目标读请求包括读请求1、读请求2、读请求3和读请求4。再比如,对于图7所示的,子集1对应的目标读请求包括读请求1和读请求2;子集2对应的目标读请求包括读请求3和读请求4。再比如,对于图8的(b)所示的子集1对应的目标读请求包括读请求1和读请求3;子集2对应的目标读请求包括读请求2和读请求4。
聚合DPU确定其负责的子集所对应的一个或多个目标读请求,按照目标读请求对读取到的该子集内的数据进行分离,得到每个目标读请求对应的数据,该数据可能是该目标读请求所请求读取的部分或全部数据,将每个目标读请求对应的数据发送至该目标读请求所归属的计算节点100。
继续参见图4,假设DPU114A为聚合DPU(称为聚合DPU114A),负责读取图4所示的子集,聚合DPU114A确定子集1对应的目标读请求包括读请求1、读请求2、读请求3和读请求4,则聚合DPU114A将读取的子集1的数据按照读请求1、读请求2、读请求3和读请求4进行分离,分离为读请求1所请求读取的数据1,读请求2所请求读取的数据2,读请求3所请求读取的数据3,以及读请求4所请求读取的数据4。
在分发数据时,示例性地,参见图4,聚合DPU114A将数据1发送至进程1,将数据2发送至进程2。在向其他计算节点分发数据时,聚合DPU可以以目标读请求为粒度,将每个目标读请求所请求的数据发送至该目标读请求所归属的计算节点。比如,聚合DPU114A分别独立地将数据3、数据4发送至DPU114B。再示例性地,聚合DPU还可以以读请求所归属的计算节点为粒度,对归属于同一个计算节点的多个目标读请求所请求读取的数据进行聚合,将聚合后的数据发送至该计算节点。比如,聚合DPU114A确定读请求3和读请求4均归属于计算节点100B,聚合DPU114A对数据3和数据4进行聚合,将聚合后的数据发送至计算节点100B,聚合后的数据包括数据3和数据4,从而减少网络IO。
需要说明的是,目标读请求所请求读取的数据之间可能存在重叠,因此,分离出的数据之间也可能存在重叠。一个读请求所请求读取的数据可能被分割至一个或多个子块中,如图9的(a)中,数据2的部分数据被划分至子块1,其余部分数据被划分至子块2。一个子块中也可能包括一个或多个读请求所请求读取的数据。如继续参见图9的(a),子块1包括读请求1所请求的数据1,读请求2所请求的数据2的部分数据。子块2包括读请求2所请求的数据2的部分数据和读请求3所请求的数据3。一个读请求所请求读取的数据也可能划分出一个或多个文件子块,如图9的(a)中,数据4划分出2个子块。而一个子集可包括一个或多个子块,因此,一个子集内的数据包括一个或多个读请求所请求读取的数据,并且其中的多个读请求中的部分或全部读请求可能来自同一个计算节点100。图9的(a)中,子集1对应的目标读请求包括读请求1、读请求2和读请求3,子集1内的数据将被分离为数据1、数据2和数据3,其中,数据1和数据2之间存在部分重叠。子集2对应的目标读请求包括读请求4,子集2内的数据即为数据4,不需分离。
步骤408,DPU接收聚合DPU发送的数据,并根据本计算节点的读请求,将该数据分发至对应的进程。
DPU将接收到的数据发送至本计算节点的进程,若接收到的数据为聚合后的数据,则DPU以读请求为粒度对该聚合后的数据进行分离,将分离后的数据发送至本计算节点的对应进程。比如,DPU114B接收DPU114A发送的数据,该数据包括数据3和数据4,DPU114B按照读请求3和读请求4对该数据进行分离,分离为数据3和数据4,并将数据3发送给进程3,将数据4发送给进程4。
上述方式,用于执行作业的多个计算节点中的每个计算节点上的DPU汇聚各并行进程的读请求,基于汇聚得到的多个读请求确定聚合信息,DPU基于聚合信息获取聚合数据,并将聚合数据分离后发送给对应的计算节点的DPU,如此,第一DPU对接收到的多个读请求中每个读请求的信息进行聚合,不需要第一DPU将多个读请求依次发送给处理器处理,减少计算节点的软硬件交互次数,降低CPU的占用率及算力开销,另外通过将多个读请求的信息进行聚合来读取数据,可减少或避免重复IO,提高IO性能,可缩短运行作业时间,进一步减少计算资源占用率。
接下来结合图10介绍本申请实施例提供的写请求的数据处理方法。该数据处理方法可以由图1或图3所示的计算节点100A、计算节点100B中的数据处理装置(简称为DPU)执行。
如图10所示,该方法包括如下步骤:
步骤1001,用于执行作业的多个计算节点中生成各自的写IO。
用于执行作业的多个进程可能在相同的时间段内生成各自的写请求。举例来说,假设图2涉及的作业被调度至计算节点100A、100B来执行,为便于说明,假设该作业中城市A仅包括4个区域,如此,计算节点100A、100B可通过至少4个进程来并行执行作业。其中进程1执行子任务1生成写请求1,该写请求可能是请求写入子任务1的计算结果,类似的,进程2执行子任务2生成写请求2,进程3执行子任务3生成写请求3,进程4执行子任务4生成写请求4。
值得注意的是,此处的写请求携带有指示待写入数据的信息,如地址信息,并不携带待写入数据。
步骤1002,多个DPU(指用于执行作业的多个计算节点所对应的多个DPU,下文中的多个DPU均为此意,后续不再重复说明)中的每个DPU交换各自的写请求,使得每个DPU均获取到用于执行作业的所有并行进程的写请求。步骤1002的具体执行流程可以参见上文中步骤402的描述,区别在于步骤402中交互读请求,而步骤1002交互写请求,此处不再赘述。
步骤1003,每个聚合DPU(指用于执行作业的每个计算节点上的DPU)将获取的多个写请求中每个写请求中的待写入数据的信息进程聚合,得到聚合信息。
每个DPU基于一组相同的读请求进行聚合,均会得到一个相同的聚合信息,即多个写请求对应的待写入数据的完整的文件范围。步骤1003的具体执行流程可以参见上文中步骤403的描述,区别在步骤403是对待读取数据的信息进行聚合,而步骤1002是对待写入数据的信息进行数据,此处不再赘述。
步骤1004,多个DPU中的每个DPU将聚合信息指示的文件范围划分为K个子集,K取正整数。步骤1004的具体执行流程可以分别参见上文中步骤404、步骤405的描述,此处不再赘述。
步骤1005,多个DPU中的每个DPU,从该多个DPU中选择K个DPU作为聚合DPU,以及确定每个聚合DPU所负责的子集。步骤1005的具体执行流程可以参见上文中步骤405的描述,此处不再赘述。
步骤1006,每个DPU将本计算节点上的待写入数据发送至对应的聚合DPU。
其中,待写入数据对应的聚合DPU是指包括待写入数据的子集所归属的DPU,比如,图10中,假设DPU114B确定DPU114A为聚合DPU,及DPU114A负责子集(参见图10),DPU114B确定本计算节点的待写入数据包括数据b和数据d,数据b和数据d对应的子集均为DPU114A所负责的子集,DPU114B将数据b和数据d发送给DPU114A。步骤1006中,DPU可以将本计算节点上的多个并行进程对应的多个待写入数据进行聚合,将聚合后的数据发送至对应的聚合DPU,比如对于DPU114B而言,聚合后的数据包括数据b和数据d。此处可参见上文中步骤402中,DPU将本计算节点上的多个读请求进行聚合后发送的方式,此处不再赘述。
步骤1007,聚合DPU将接收到的子集内的数据写入存储设备210。
比如图10中,DPU114A通过至少一个写请求将其负责的子集内的数据发送至存储设备210。比如,DPU114A向存储设备210发送写请求5、写请求6,写请求5包括子块1内的数据(数据a和数据b),写请求6包括子块2内的数据(数据c和数据d)。
需要注意的是,由于一个子集内的待写入数据可能是不连续的,且存储设备210内该子集指示的地址空间存储有数据(记为第一数据),本申请为了提高写性能,聚合DPU可首先从存储设备210中读取第一数据,在第一数据的基础上更新待写入数据,从而得到该子集对应的连续的待写入数据,然后将该子集对应的连续的待写入数据写入存储设备210。
如果存储设备210内该子集指示的地址空间未写过数据,则聚合DPU也可以不读取第一数据,通过补0的方式获得该子集对应的连续的待写入数据,然后将该子集的待写入数据写入存储设备210。
值得注意的是,图10实施例中的聚合信息与图4实施例中的聚合信息并不是同一个聚合信息,为便于区分,可以将图4实施例中的聚合信息替换为第一聚合信息,将图10实施例中的聚合信息替换为第二聚合信息。应理解,图4与图10只是相似步骤的方法相同,实际上两者之间并没有关联,比如,图4中DPU114A为聚合DPU,图10中可能是DPU114B为聚合DPU,另外,图4与图10中的两个子块的长度可以相同也可以不同,本申请对此均不做限定。
上述方式,用于执行作业的多个计算节点中的每个计算节点上的DPU汇聚各并行进程的写请求,基于汇聚得到的多个写请求中每个写请求携带的待写入数据的信息确定聚合信息,DPU基于聚合信息将聚合数据写入存储设备210,如此,便可以绕开计算节点上的处理器,减少处理器的占用率及算力开销,以及DPU与进程之间的软硬件交互次数和网络IO的次数,提高系统的写性能,可提高写效率,进一步减少计算资源占用率。
需要说明的是,图4和图10可以是两个独立流程,并非限定一个并行进程必须生成读请求和写请求。在一种可能的场景,并行进程在执行一个子任务时可以只生成读请求,或只生成写请求,具体不做限定。另外,图4和图10所涉及的参数可以是不同的,比如,图4所示方法中的聚合DPU的数量和图10所示方法中的聚合DPU的数量可以相同也可以不同,如果相同,也不一定选择相同的DPU作为聚合DPU。图4所示方法中的子块长度(设定的数据长度)和图10所示方法中的子块长度(设定的数据长度)可以相同也可以不同,等等,本申请实施例对此均不做限定。
基于与方法实施例同一发明构思,本申请实施例还提供了一种数据处理装置,该装置用于执行上述图4、图10方法实施例中DPU114A或DPU114B执行的方法。如图11所示,数据处理装置1100包括通信模块1101、聚合模块1102、处理模块1103;具体地,在数据处理装置1100中,各模块之间通过通信通路建立连接。
通信模块1101,用于接收至少一个计算节点中的多个进程对应的多个读请求;具体实现方式请参见图4中的步骤401-步骤402的描述,此处不再赘述。
聚合模块1102,用于对接收到的多个读请求中每个读请求所读取的数据的信息进行聚合得到第一聚合信息;具体实现方式请参见图4中的步骤403的描述,此处不再赘述。
处理模块1103,用于根据所述第一聚合信息确定待读取的第一目标数据。具体实现方式请参见图4中的步骤404-步骤405的描述,此处不再赘述。
在一种可能的实现方式中,通信模块1101,还用于接收至少一个计算节点中的多个进程对应的多个写请求;具体实现方式请参见图10中的步骤1001-步骤1002的描述,此处不再赘述。
聚合模块1102,还用于对所述多个写请求中每个写请求中指示待写入数据的信息进行聚合得到第二聚合信息;具体实现方式请参见图10中的步骤1003的描述,此处不再赘述。
处理模块1103,还用于根据所述第二聚合信息确定待写入的第二目标数据;具体实现方式请参见图10中的步骤1004-步骤1005的描述,此处不再赘述。
图12为本申请实施例提供的一种计算设备的结构示意图。该计算设备用于执行上述图4、图10方法实施例中DPU114A或DPU114B执行的方法。该计算设备1200包括处理器1201、存储器1202和通信接口1203。其中,处理器1201、存储器1202和通信接口1203可以通过总线1204连接。
处理器1201用于执行存储器1202中存储的指令,以使数据处理装置1200执行本申请提供的数据处理方法,处理器1201可以是但不限于:数据处理单元(data processingunit,DPU)、系统级芯片(system on chip,SOC)、可编程门阵列(field programmable gatearray,FPGA)、图形处理器(graphics processing unit,GPU)、特殊应用集成电路(application specific integrated circuit,ASIC)等处理器中的任意一种或多种。
存储器1202,用于存储计算机指令和数据,如存储器1202存储实现本申请提供的数据处理方法所需的计算机指令和数据。存储器1202包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM)、动态随机存取存储器(dynamic random access memory,DRAM)等。也可以为非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、存储级存储器(storage-classmemory,SCM),快闪存储器,机械硬盘(hard disk drive,HDD)或固态硬盘(solid statedrive,SSD)。
存储器1202中存储有可执行的程序代码,处理器1201执行该可执行的程序代码以分别实现前述通信模块1101、聚合模块1102、处理模块1103的功能,从而实现数据处理方法。也即,存储器1202上存有数据处理装置1100用于执行本申请提供的数据处理方法的指令。
通信接口1203,用于与内部设备或外部设备通信,如获取进程发送的读请求/写请求,又如与存储设备210通信,以完成数据存取。示例性的,通信接口1203可以是网卡。
总线1204可以是快捷外围部件互连标准(Peripheral Component InterconnectExpress,PCIe)总线,或双数据速率(double data rate,DDR)总线,或串行高级技术附件(serial advanced technology attachment,SATA)总线,或串行连接SCSI(serialattached scsi,SAS)总线,或控制器局域网络总线(Controller Area Network,CAN),或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1204可包括在数据处理装置1200各个部件(例如,存储器1202、处理器1201、通信接口1203)之间传送信息的通路。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算机设备上运行时,使得至少一个计算机设备执行上述图4或图10实施例中的DPU114A所执行的数据分离方法,参见图4或图10各步骤的描述,此处不再赘述。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述图4或图10实施例中的DPU114A所执行的数据处理方法,参见图4或图10各步骤的描述,此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。

Claims (15)

1.一种数据处理方法,其特征在于,所述数据处理方法应用于计算系统,所述计算系统包括多个计算节点,每个计算节点中运行有至少一个进程,每个计算节点连接数据处理设备DPU;
所述方法包括:
第一DPU接收至少一个计算节点中的多个进程对应的多个读请求,对所述多个读请求中每个读请求所读取的数据的信息进行聚合得到第一聚合信息;
所述第一DPU根据所述第一聚合信息确定所述第一DPU待读取的第一目标数据。
2.如权利要求1所述的方法,其特征在于,所述第一聚合信息用于指示所述多个读请求所读取的第一聚合数据;
所述第一DPU根据所述第一聚合信息确定所述第一DPU待读取的第一目标数据,包括:
所述第一DPU将所述第一聚合数据划分为多个数据子块;
所述第一DPU根据映射关系确定所述第一DPU对应的至少一个数据子块,所述第一目标数据包括所述第一DPU对应的至少一个数据子块;所述映射关系用于指示所述第一DPU对应的数据子块。
3.如权利要求2所述的方法,其特征在于,所述第一DPU被确定为所述计算系统中的聚合DPU,所述计算系统还包括第二DPU,所述第二DPU也为聚合DPU,所述第一DPU用于读取所述第一目标数据,所述第二DPU用于读取所述第二目标数据,所述第二目标数据为所述聚合数据中除所述第一目标数据之外的其余部分或全部数据。
4.如权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述第一DPU将从存储设备读取的所述第一目标数据按照所述多个读请求所归属的计算节点进行分离,并将分离的数据发给对应的计算节点。
5.如权利要求1-4任一项所述的方法,其特征在于,每个读请求所读取的数据的信息为所述数据的地址信息。
6.如权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
所述第一DPU接收至少一个计算节点中的多个进程对应的多个写请求,对所述多个写请求中每个写请求中指示待写入数据的信息进行聚合得到第二聚合信息;
所述第一DPU根据所述第二聚合信息确定所述第一DPU待写入的第三目标数据;
所述第一DPU获取所述第三目标数据,并将所述第三目标数据写入与所述第一DPU连接的存储设备。
7.如权利要求6所述的方法,其特征在于,所述第二聚合信息用于指示所述多个写请求所写入的第二聚合数据;
所述第一DPU根据所述第二聚合信息确定所述第一DPU待写入的第三目标数据,包括:
所述第一DPU将所述第二聚合数据划分为多个数据子块;
所述第一DPU根据DPU的标识和数据子块的映射关系确定所述第一DPU对应的至少一个数据子块,所述第三目标数据包括所述第一DPU对应的至少一个数据子块。
8.一种数据处理装置,其特征在于,包括:
通信模块,用于接收至少一个计算节点中的多个进程对应的多个读请求;
聚合模块,用于对所述多个读请求中每个读请求所读取的数据的信息进行聚合得到第一聚合信息;
处理模块,用于根据所述第一聚合信息确定待读取的第一目标数据。
9.如权利要求8所述的装置,其特征在于,所述第一聚合信息用于指示所述多个读请求所读取的第一聚合数据;
所述处理模块在确定待读取的第一目标数据时,具体用于:
将所述第一聚合数据划分为多个数据子块;根据映射关系确定所述数据处理装置对应的至少一个数据子块,所述第一目标数据包括所述数据处理装置对应的至少一个数据子块;所述映射关系指示所述数据处理装置与数据子块的对应关系。
10.如权利要求8或9所述的装置,其特征在于,所述处理模块还用于:将从存储设备读取的所述第一目标数据按照所述多个读请求所归属的计算节点进行分离,并通过所述通信模块将分离的数据发给对应的计算节点。
11.如权利要求8-10任一项所述的装置,其特征在于,所述通信模块,还用于接收至少一个计算节点中的多个进程对应的多个写请求;
所述聚合模块,还用于对所述多个写请求中每个写请求中指示待写入数据的信息进行聚合得到第二聚合信息;
所述处理模块,还用于根据所述第二聚合信息确定待写入的第二目标数据,获取所述第二目标数据,并通过所述通信模块将所述第二目标数据写入与所述数据处理装置连接的存储设备。
12.如权利要求11所述的装置,其特征在于,所述第二聚合信息用于指示所述多个写请求所写入的第二聚合数据;
所述处理模块在根据所述第二聚合信息确定待写入的第二目标数据时,具体用于:
将所述第二聚合数据划分为多个数据子块;根据映射关系确定所述数据处理装置对应的至少一个数据子块,所述第二目标数据包括所述数据处理装置对应的至少一个数据子块;所述映射关系指示所述数据处理装置与数据子块的对应关系。
13.一种计算装置,其特征在于,所述计算装置包括处理器和供电电路;
所述供电电路用于为所述处理器供电;
所述处理器用于执行上述权利要求1至7中任一项所述的方法。
14.一种计算设备,其特征在于,所述计算设备包括存储器和至少一个处理器,所述存储器用于存储一组计算机程序指令,当所述处理器执行所述一组程序指令时,执行上述权利要求1至7中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质被存储设备执行时,所述存储设备执行上述权利要求1至7中任一项所述的方法。
CN202210834105.1A 2022-07-14 2022-07-14 一种数据处理方法及装置 Pending CN117435330A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210834105.1A CN117435330A (zh) 2022-07-14 2022-07-14 一种数据处理方法及装置
PCT/CN2023/100813 WO2024012153A1 (zh) 2022-07-14 2023-06-16 一种数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210834105.1A CN117435330A (zh) 2022-07-14 2022-07-14 一种数据处理方法及装置

Publications (1)

Publication Number Publication Date
CN117435330A true CN117435330A (zh) 2024-01-23

Family

ID=89535479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210834105.1A Pending CN117435330A (zh) 2022-07-14 2022-07-14 一种数据处理方法及装置

Country Status (2)

Country Link
CN (1) CN117435330A (zh)
WO (1) WO2024012153A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183111B2 (en) * 2011-05-10 2015-11-10 Microsoft Technology Licensing, Llc Methods and computer program products for collecting storage resource performance data using file system hooks
CN102819407B (zh) * 2012-08-07 2015-01-21 中国科学院地理科学与资源研究所 一种在集群环境中对遥感影像数据进行高效并行存取的方法
CN103761291A (zh) * 2014-01-16 2014-04-30 中国人民解放军国防科学技术大学 一种基于聚合请求的地理栅格数据并行读写方法
CN113821164B (zh) * 2021-08-20 2024-02-13 济南浪潮数据技术有限公司 一种分布式存储系统的对象聚合方法和装置
CN114116293A (zh) * 2021-10-18 2022-03-01 中山大学 一种基于MPI-IO的MapReduce溢写改善方法

Also Published As

Publication number Publication date
WO2024012153A1 (zh) 2024-01-18

Similar Documents

Publication Publication Date Title
US9665404B2 (en) Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning
US9092266B2 (en) Scalable scheduling for distributed data processing
CN108900626B (zh) 一种云环境下数据存储方法、装置及系统
CN114730275A (zh) 使用张量在分布式计算系统中进行矢量化资源调度的方法和装置
CN104123304A (zh) 数据驱动的并行排序系统和方法
US9471387B2 (en) Scheduling in job execution
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
Song et al. Modulo based data placement algorithm for energy consumption optimization of MapReduce system
CN110990154A (zh) 一种大数据应用优化方法、装置及存储介质
CN113515483A (zh) 一种数据传输方法及装置
Sun et al. HPSO: Prefetching based scheduling to improve data locality for MapReduce clusters
EP4184324A1 (en) Efficient accelerator offload in multi-accelerator framework
CN118244972A (zh) 一种数据存储方法、装置及系统
CN107528871B (zh) 存储系统中的数据分析
KR20150056373A (ko) 순차적 수행 방식의 멀티스레드 프로세싱 장치 및 방법
Khanna et al. A dynamic scheduling approach for coordinated wide-area data transfers using gridftp
CN116400982B (zh) 配置中继寄存器模块的方法和装置、计算设备和可读介质
CN114281516A (zh) 一种基于numa属性的资源分配方法及装置
Jin et al. : Efficient Resource Disaggregation for Deep Learning Workloads
CN117435330A (zh) 一种数据处理方法及装置
CN116932156A (zh) 一种任务处理方法、装置及系统
US10824640B1 (en) Framework for scheduling concurrent replication cycles
CN111837104A (zh) 一种在多个处理器之间调度软件任务的方法和装置
US11048554B1 (en) Correlated volume placement in a distributed block storage service
US12056398B2 (en) Electronic data file access management in a distributed computer system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination