CN117130795A - 一种作业处理方法、装置及相关设备 - Google Patents

一种作业处理方法、装置及相关设备 Download PDF

Info

Publication number
CN117130795A
CN117130795A CN202210546599.3A CN202210546599A CN117130795A CN 117130795 A CN117130795 A CN 117130795A CN 202210546599 A CN202210546599 A CN 202210546599A CN 117130795 A CN117130795 A CN 117130795A
Authority
CN
China
Prior art keywords
memory
stage
computing
job
computing node
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
CN202210546599.3A
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 CN202210546599.3A priority Critical patent/CN117130795A/zh
Publication of CN117130795A publication Critical patent/CN117130795A/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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了一种作业处理方法、装置及相关设备,该方法包括以下步骤:计算节点接收作业,作业运行时包括多个迭代阶段,多个迭代阶段中的每个迭代阶段包括计算阶段和输入输出IO阶段,计算节点确定作业处于计算阶段时,将第一存储器中的数据存储于第二存储器,其中,第一存储器的数据读写效率大于第二存储器的数据读写效率,第一存储器中存储计算节点在IO阶段写入的数据,使得计算节点可以将输出数据存储于本地读写效率更高的第一存储器中,提高IO阶段的存储效率,避免出现长时间等待输出数据在IO阶段成功存储的问题,同时充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,进而提高整体HPC集群的作业处理效率。

Description

一种作业处理方法、装置及相关设备
技术领域
本申请涉及计算机领域,尤其涉及一种作业处理方法、装置及相关设备。
背景技术
高性能计算(high performance computing,HPC)是指运用有效的算法,快速完成具有数据密集型、计算密集型和输入输出(input/output,IO)密集型的计算。HPC被广泛应用于生物工程、新药研制、石油物探、运载器设计(航空航天、舰船和汽车等)、材料工程、核爆模拟、尖端武器制造、密码研究和各类大规模信息处理等领域。
HPC集群包括调度节点、计算节点和存储器,调度节点会根据需要处理的计算业务和 HPC集群的资源状态,为每个计算节点分配作业(job)/批作业(batch job),每个计算节点在处理各自的作业的过程中,包括多个迭代过程,每次迭代包括计算阶段及IO阶段,计算阶段用于对数据进行计算,IO阶段用于将计算阶段产生的数据存储至存储器,但由于相关技术中,多个计算节点产生的数据在IO阶段会通过网络传输至存储设备存储,在IO阶段结束,也即数据被成功存储之后,才能进行下一次迭代中的计算阶段进行计算操作,从而影响计算节点执行作业的效率。
发明内容
本申请提供了一种作业处理方法、装置及相关设备,用于解决HPC集群中的计算节点执行作业的效率被影响的问题。
第一方面,提供了一种作业处理方法,该方法应用于计算节点,该方法包括以下步骤:计算节点接收作业,作业运行时包括多个迭代阶段,多个迭代阶段中的每个迭代阶段包括计算阶段和输入输出IO阶段,计算阶段用于处理作业中的计算任务生成输出数据,IO阶段用于存储输出数据,计算节点确定作业处于计算阶段时,将第一存储器中的数据存储于第二存储器,其中,第一存储器的数据读写效率大于第二存储器的数据读写效率,第一存储器中存储计算节点在IO阶段写入的数据。
具体实现中,每个迭代阶段的IO阶段与下个迭代阶段的计算阶段相邻,每个迭代阶段的计算阶段与上个迭代阶段的IO阶段相邻。IO阶段下将输出数据存储于第一存储器,这里的输出数据指的是上个计算阶段(可以是相邻或者非相邻的上个计算阶段)生成的输出数据,计算阶段处理的计算任务所生成的输出数据将在下个IO阶段(可以是相邻或者非相邻)被存储于第一存储器中。计算阶段处理的将第一存储器中的数据存储于第二存储器中,这里第一存储器中存储的数据可以是上个IO阶段(相邻或者非相邻)存储的输出数据。
可选地,计算节点确定作业处于IO阶段时,计算节点将输出数据写入第一存储器。
可选地,第一存储器为计算节点中的缓存,第二存储器为计算节点和与计算节点属于同一计算集群的其他计算节点都可以访问的共享存储设备。该计算集群可以是人工智能 (artificial intelligence,AI)计算集群或者高性能计算(high performancecomputing,HPC)集群,本申请不作具体限定,为了使本申请能够被更好地理解,下文统一以HPC集群100为例进行举例说明。
实施第一方面描述的方法,在IO阶段下,计算节点将数据存储于本地读写效率更高的第一存储器中,从而提高IO阶段的存储效率,避免出现长时间等待输出数据在IO阶段成功存储的问题;同时,在计算阶段下将第一存储器中的数据存储于第二存储器,充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,使得计算节点产生的输出数据不需要等待在IO阶段成功存储,可以直接进行下一次迭代中的计算阶段进行计算操作,从而提高整体HPC集群 100的作业处理效率。
在一可能的实现方式中,该方法还可包括以下步骤:计算节点确定作业处于IO阶段时,且计算节点的网络带宽低于第一阈值的情况下,将输出数据存储于第一存储器。其中,上述网络带宽可以包括计算节点和第二存储器之间的网络带宽,还可以包括HPC集群中其他计算节点和第二存储器之间的网络带宽,本申请不作具体限定。
上述实现方式,在IO阶段下,如果网络带宽占用较高,计算节点可以将输出数据存储于本地的第一存储器,避免由于网络带宽受限问题导致的IO冲突。
在一可能的实现方式中,该方法还包括以下步骤:计算节点确定作业处于IO阶段时,且网络带宽不低于第一阈值的情况下,计算节点将输出数据存储于第二存储器。
需要说明的,如果网络带宽低于第一阈值但是第一存储器的存储容量达到存储阈值,此时也可以将输出数据写入第二存储器,避免由于第一存储器的存储容量不足导致数据写入失败。
上述实现方式,在IO阶段下,如果网络带宽占用较低,网络带宽处于空闲状态,计算节点可以直接将输出数据存储于第二存储器,减少第一存储器的空间占用,由于计算阶段需要将第一存储器中的数据存储于第二存储器,所以上述实现方式也可以减少计算阶段下的IO数量,避免出现IO冲突和IO竞争。
在一可能的实现方式中,计算节点可以先获取计算节点的网络带宽,在网络带宽不低于第二阈值的情况下,将第一存储器中的数据存储于第二存储器。可以理解的,在网络带宽低于第二阈值的情况下,计算节点只处理作业中的计算任务,不对第一存储器中的数据进行转存,可以等待接下来网络带宽空闲的计算阶段下,再将第一存储器中的数据存储于第二存储器。
具体实现中,计算阶段可以在网络带宽不低于第二阈值的情况下,将第一存储器中的部分或者全部数据存储于第二存储器,具体可根据第一存储器的存储容量、第二存储器的存储容量以及网络带宽值确定,本申请不作具体限定。
需要说明的,上述第一阈值和第二阈值可以相同或者不同,具体可根据实际的应用场景确定,本申请不作具体限定。
上述实现方式,在计算阶段下,如果网络带宽占用较低,网络带宽处于空闲状态,计算节点可以将第一存储器中的数据存储于第二存储器,提高网络带宽的利用率,如果网络带宽占用较高,网络带宽处于繁忙状态,此时不对第一存储器中的数据进行处理,可以避免由于网络带宽受限出现的IO冲突和IO竞争问题。
本申请提供的技术方案存在多种可能的实现方式,下面一一进行举例说明,
在一可能的实现方式中,计算节点获取作业之后,确定运行阶段为IO阶段时,进一步确定网络带宽是否低于第一阈值,在低于第一阈值的情况下将输出数据存储于第一存储器中,在不低于第一阈值的情况下直接将输出数据存储于第二存储器。确定运行阶段为不是IO阶段(或者确定运行阶段为计算阶段)时将第一存储器中的数据存储于第二存储器中。
上述实现方式,IO阶段下,通过在网络带宽不空闲的情况下将输出数据存储于第一存储器,网络带宽空闲的情况下将输出数据存储于第二存储器,从而避免由于网络带宽受限引起的IO冲突和IO竞争,同时充分利用了计算任务处理时,计算节点的空闲网络带宽,提高带宽利用率。
在一可能的实现方式中,计算节点获取作业之后,确定运行阶段为IO阶段时将输出数据存储于第一存储器中,确定运行阶段为计算阶段时确定网络带宽是否低于第二阈值,在网络带宽不低于第二阈值时将第一存储器中的数据写入第二存储器中,在网络带宽低于第二阈值的情况下,不处理第二存储任务,只进行计算任务的处理,其中,第二存储任务指的是将第一存储器中的数据写入第二存储器中。
上述实现方式,计算阶段下,通过在网络带宽空闲的情况下,处理计算任务的同时,将第一存储器中的数据转存于第二存储器,在网络带宽不空闲的情况下只处理计算任务,从而充分利用了计算任务处理时计算节点的空闲网络带宽,提高带宽利用率。
在一可能的实现方式中,计算阶段获取作业之后,确定运行阶段为IO阶段时,进一步确定网络带宽是否低于第一阈值,在低于第一阈值的情况下将输出数据存储于第一存储器中,在不低于第一阈值的情况下直接将输出数据存储于第二存储器。确定运行阶段为计算阶段时确定网络带宽是否低于第二阈值,在网络带宽不低于第二阈值时将第一存储器中的数据写入第二存储器中,在网络带宽低于第二阈值的情况下,不处理第二存储任务,只进行计算任务的处理。
需要说明的,如果计算节点在第一个迭代阶段的计算阶段下,第一存储器中没有输出数据需要异步存储于第二存储器,此时计算节点可以只执行计算任务,不需要将第一存储器中的数据转存于第二存储器。同理,计算节点在最后一个迭代阶段的计算阶段下,计算节点没有计算任务需要处理,此时可以不执行计算任务,只将第一存储器中的数据存储于第二存储器。
上述实现方式,在IO阶段下,过在网络带宽不空闲的情况下将输出数据存储于第一存储器,网络带宽空闲的情况下将输出数据存储于第二存储器,从而避免由于网络带宽受限引起的IO冲突和IO竞争,同时充分利用了计算任务处理时,计算节点的空闲网络带宽,提高带宽利用率。计算阶段下,通过在网络带宽空闲的情况下,处理计算任务的同时,将第一存储器中的数据转存于第二存储器,在网络带宽不空闲的情况下只处理计算任务,从而充分利用了计算任务处理时计算节点的空闲网络带宽,提高带宽利用率。
在一可能的实现方式中,可根据分析HPC集群的作业工作日志确定计算节点的作业运行阶段,其中,作业工作日志用于记录HPC集群的操作记录。应理解,HPC集群在运行过程中会不断更新其工作日志(或者输出日志),工作日志记录了HPC集群处理了什么任务,比如在处理写IO操作时,工作日志会记录当前计算节点正在往A地址写入文件X,根据工作日志可以实时监控HPC集群的作业运行状态。其中,该作业工作日志还可以是其他用于监控读写操作的文件,监控到写入第一存储器的操作时,该文件可新增一个写IO记录。具体实现中,该文件可以是一个OCK文件,或者其他类型的文件,本申请不作具体限定。
具体实现中,计算节点可侦测工作日志,当工作日志中生成处理计算任务的操作对应的记录时,则确定该作业处于计算阶段。举例来说,工作日志的最新记录显示HPC集群正在处理写缓存请求,那么可以确定计算节点处于IO阶段,工作日志的最新记录显示HPC集群正在处理计算任务,那么可以确定计算节点处于计算阶段。应理解,上述举例用于说明,本申请不作具体限定。
可选地,还可以通过监控第一存储器接口的方式来确定当前的运行阶段,当监控到第一存储器正在写入数据时,可以确定运行阶段为IO阶段,否则,确定为计算阶段。其中,上述接口可包括但不限于多点接口(multi point interface,MPI),本申请不作具体限定。
上述实现方式,通过分析HPC集群作业工作日志来确定计算节点的作业运行阶段,由于作业工作日志是HPC集群记录运行情况的常用技术,使得本申请的方案部署无需对HPC集群100做出较大改动,部署十分便捷,方案可行性强。
在一可能的实现方式中,计算节点可根据HPC集群的打桩函数来确定计算节点的作业运行阶段。其中,打桩是软件测试的常用方法,举例来说,在测试函数F时,函数F调用了函数text(),是text()还没有写完,这时可以使用一个打桩函数来模拟text()函数,测试函数F时,打桩函数生成返回值即可完成对函数F的测试,因此打桩函数可以简单理解为在运行代码中插入一个可以返回固定值的函数。在本申请实施例中,开发人员可以在每个作业运行阶段运行的代码之前或者之后加入打桩函数,作业运行时,计算节点可以根据打桩函数的返回值来确定当前计算节点所处的运行阶段。
具体实现中,在计算节点的IO阶段的运行代码之前或者之后插入第一打桩函数,第一打桩函数运行时的返回值为第一值,计算节点的计算阶段的运行代码之前或者之后插入第二打桩函数,第二打桩函数运行时的返回值为第二值。这样,作业运行后,计算节点可以获取打桩函数的返回值,在返回值为第一值的情况下确定计算节点的运行阶段为IO阶段,在返回值为第二值的情况下确定计算节点的运行阶段为计算阶段。
上述实现方式,通过打桩函数的值来确定计算节点的作业运行阶段,由于打桩是软件测试的常用方法,产品上线前一般都会设置有打桩函数来进行软件测试,因此通过打桩函数的值来确定作业运行阶段,使得本申请的方案部署便捷,方案可行性强。
第二方面,提供了一种作业处理装置,该作业处理装置包括:接收单元,用于接收作业,作业运行时包括多个迭代阶段,多个迭代阶段中的每个迭代阶段包括计算阶段和输入输出IO 阶段,计算阶段用于处理作业中的计算任务生成输出数据,IO阶段用于存储输出数据,第一存储单元,用于在确定作业处于计算阶段时,将第一存储器中的数据存储于第二存储器,其中,第一存储器的数据读写效率大于第二存储器的数据读写效率,第一存储器中存储作业处理装置在IO阶段写入的数据。
实施第二方面描述的方法,在IO阶段下,计算节点将数据存储于本地读写效率更高的第一存储器中,从而提高IO阶段的存储效率,避免出现长时间等待输出数据在IO阶段成功存储的问题;同时,在计算阶段下将第一存储器中的数据存储于第二存储器,充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,使得计算节点产生的输出数据不需要等待在IO阶段成功存储,可以直接进行下一次迭代中的计算阶段进行计算操作,从而提高整体HPC集群 100的作业处理效率。
在一可能的实现方式中,该装置还包括第二存储单元,用于在确定作业处于IO阶段时,将输出数据写入第一存储器。
在一可能的实现方式中,第二存储单元,用于在确定作业处于IO阶段时,且在作业处理装置的网络带宽低于第一阈值的情况下,将输出数据写入第一存储器。
在一可能的实现方式中,第一存储单元,用于在确定作业处于IO阶段时,且在网络带宽不低于第一阈值的情况下,将输出数据存储于第二存储器。
在一可能的实现方式中,第一存储单元,用于获取作业处理装置的网络带宽,在网络带宽不低于第二阈值的情况下,将第一存储器中的数据存储于第二存储器。
在一可能的实现方式中,该装置包括阶段确定单元,阶段确定单元,用于侦测工作日志,当工作日志中生成处理计算任务的操作对应的记录时,则确定作业处于计算阶段。
在一可能的实现方式中,第一存储器为作业处理装置中的缓存,第二存储器为作业处理装置和与作业处理装置属于同一计算集群的其他作业处理装置都可以访问的共享存储设备。
第三方面,提供了一种计算设备,该计算设备包括处理器和存储器,存储器用于存储代码,处理器用于执行代码实现如第一方面描述的方法。
第四方面,提供了一种计算机存储介质包括指令,当指令在计算机上运行时,计算机实现如第一方面描述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1是一种HPC集群的架构示意图;
图2是本申请提供的一种作业处理系统的架构示意图;
图3是本申请提供的一种作业处理装置的结构示意图;
图4是本申请提供的一种作业处理方法的步骤流程示意图;
图5是本申请提供的另一种作业处理方法的步骤流程示意图;
图6是本申请提供的一种作业处理方法中IO阶段和计算阶段的划分示例;
图7是本申请提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本申请涉及的部分术语进行解释说明。
高性能计算(high performance computing,HPC)系统:专指那些针对庞大单一计算任务而生的计算机集群。互联架构效率越高、集群规模越大,HPC集群100所能提供的性能也就越强。
调度节点(scheduler):调度在计算机中是分配工作所需资源的方法。资源可以指虚拟的计算资源,如线程、进程或数据流;也可以是指硬件资源,如处理器、网络连接或扩展卡。在HPC集群100中,进行调度工作的程序叫做调度节点或调度器。调度节点通常的实现使得所有计算资源都处于忙碌状态(在负载均衡中),允许多位用户有效地同时共享系统资源,或达到指定的服务质量。
作业(job):HPC集群100中,完成一项特定的计算业务所需要执行的一组程序实例的集合,通常对应于一台或多台计算机上的一组进程、容器或其他运行时实体。在批处理系统中,作业也称为“批作业”(batch job)。
其次,对本申请涉及的应用场景进行说明。
本申请涉及的应用场景是多个计算设备协同处理任务的应用场景,包括但不限于人工智能(artificial intelligence,AI)场景和高性能计算(high performancecomputing,HPC)场景,下面分别对两种应用场景进行解释说明。
AI是研究用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,该领域的研究包括机器人、语言识别、图像识别、自然语言处理等。AI模型的实现需要大量的数据来进行训练,大量的数据和训练任务使得单个设备很难独立训练好AI模型,因此AI模型通常会基于分布式或者集中式系统进行模型训练,使多台计算设备以协作的形式,训练出共享的AI模型。
HPC是指运用有效的算法,快速完成具有数据密集型、计算密集型和输入输出(input/output,IO)密集型的计算。HPC被广泛应用于生物工程、新药研制、石油物探、运载器设计(航空航天、舰船和汽车等)、材料工程、核爆模拟、尖端武器制造、密码研究和各类大规模信息处理等领域。
与AI系统类似的,HPC通过集群架构、并行算法和软件相关基础实现各个领域的应用。 HPC集群一般会使用并行算法,把一个大的计算业务根据一定的规则分为多个小的作业,并将其分配给各个计算节点,然后将各个计算节点的作业处理结果合并为大的计算业务的最终结果,由于这些小的作业的计算一般是可以由多个计算节点并行完成的,因此可以缩短问题的处理时间。
应理解,AI系统与HPC集群100都是需要将任务分配给各个计算节点进行处理,再接收各个计算节点返回的结果,对其进行处理,本申请涉及的应用场景还可包括其他类似的应用场景,这里不一一举例说明,为了使本申请能够被更好地理解,下文统一以HPC集群100 为例进行举例说明。
图1是一种HPC集群的架构示意图,如图1所示,HPC集群包括调度节点、计算节点130和共享存储140,调度节点会根据需要处理的计算业务和HPC集群的资源状态,为每个计算节点130分配作业(job)/批作业(batch job),HPC集群会从持久存储设备150的数据源读取输入数据至共享存储140,每个计算节点130在作业运行时,会从共享存储140读取输入数据并对其进行处理,生成输出数据存储于共享存储140中,作业运行结束后,HPC集群100 会将共享存储140中的数据再传输至持久存储设备150中的数据目的地。
因此,每个计算节点130在作业运行时,会不断读取输入数据、执行计算任务、存储输出数据。简单来说,每个计算节点在处理各自的作业的过程中,可包括多个迭代阶段,每个迭代阶段包括计算阶段及IO阶段,计算阶段用于读取输入数据执行计算任务,IO阶段用于将计算阶段产生的输出数据进行存储,但由于相关技术中,多个计算节点产生的数据在IO阶段会通过网络传输至共享存储,在IO阶段结束,也即数据被成功存储至后,才能进行下一次迭代中的计算阶段进行计算操作,从而影响计算节点执行作业的效率。
为了解决上述多个计算设备协同处理任务的应用场景中,计算节点执行作业的效率被影响的问题,本申请提供了一种作业处理系统,该系统中的计算节点的作业运行阶段可包括IO 阶段和计算阶段,在IO阶段下,计算节点将数据存储于本地读写效率更高的第一存储器中,从而提高IO阶段的存储效率,避免出现长时间等待输出数据在IO阶段成功存储的问题;同时,在计算阶段下将第一存储器中的数据存储于第二存储器,充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,使得计算节点产生的输出数据不需要等待在IO阶段成功存储,可以直接进行下一次迭代中的计算阶段进行计算操作,从而提高整体HPC集群100的作业处理效率。
图2是本申请提供的一种作业处理系统的架构示意图,如图2所示,该架构可包括客户端110、HPC集群100和持久存储设备150,其中,客户端110、HPC集群100和持久存储设备150建立通信连接,具体可以是有线连接或者无线连接,本申请不作具体限定。
客户端110可以是用户持有的终端设备或者计算设备,其中,终端设备可包括计算机、智能手机、掌上处理设备、平板电脑、移动笔记本、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、一体化掌机、穿戴设备、车载设备、智能会议设备、智能广告设备、智能家电等等,此处不作具体限定。计算设备可以是裸金属服务器(baremetal server, BMS)、虚拟机或容器。其中,BMS指的是通用的物理服务器,例如,ARM服务器或者X86 服务器;虚拟机指的是网络功能虚拟化(network functions virtualization,NFV)技术实现的、通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,容器指的是一组受到资源限制,彼此间相互隔离的进程,本申请不作具体限定。具体实现中,客户端用于接收用户提交的作业请求,并将其发送给HPC集群100进行处理。其中,上述客户端110上可部署有HPC集群100常用的应用,举例来说,开源的场运算和处理软件(open source field operation and manipulation,openfoam),用户可通过客户端110上的openfoam应用来提交各种作业请求。应理解,上述举例用于说明,本申请不对用户所使用的HPC集群100 常用应用进行限定。
HPC集群100包括多个计算设备,该计算设备可以是上述BMS、虚拟机或容器,还可以是边缘计算设备,本申请不作具体限定。在一些可能的实现方式中,该HPC集群100可部署于公有云的数据中心,HPC集群100的描述可参考图2实施例,这里不重复赘述。
持久存储设备150可以是存储阵列、计算设备、边缘计算设备中的任一种,还可以是服务器集群,本申请不作具体限定。其中,计算设备的描述可参考前述内容,这里不重复赘述。持久存储设备150用于向HPC集群100发送作业运行所需的输入数据,还用于存储HPC集群100运行作业后生成的输出数据,具体可参考图2实施例中个持久存储设备150的描述,这里不重复赘述。
需要说明的,输入数据和输出数据也可以分别存储于不同的持久存储设备150中,本申请不作具体限定。应理解,图2所示的客户端110和持久存储设备150的数量可以是一个或者多个,比如多个客户端110与该HPC集群100通信,或者多个持久存储设备150与HPC 集群100通信,本申请不作具体限定。
进一步地,HPC集群100可包括调度节点120、计算节点130以及共享存储140,其中,调度节点120、计算节点130以及共享存储140之间通过内部网络建立通信连接,该内部网络具体可以是有线连接或者无线连接,本申请不作具体限定。
调度节点120以及计算节点130可以是计算设备,该计算设备可以是上述BMS、虚拟机或容器,还可以是边缘计算设备,本申请不作具体限定。调度节点120也可以与HPC集群100内的某个计算节点130是同一个节点,本申请不作具体限定。
共享存储140还可以是多个计算节点130的多个存储器形成的共享缓存池,多个计算节点130可以访问共享存储140进行数据通信。共享存储140也可以是HPC集群100内某个计算节点的存储器,共享存储140所在的计算节点不执行计算任务,而是用于存储其他计算节点生成的输出数据,本申请不对此进行具体限定。可选地,共享存储140也可称为第二存储器,为了使本申请能够被更好地理解,下文统一以共享存储进行命名。
具体实现中,共享存储140可以是易失性存储器或非易失性存储器,或包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,ROM)、编程只读存储器(programmable ROM,PROM)、擦除编程只读存储器(erasable PROM,EPROM)、电擦除编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。共享存储140还可以是硬盘(hard disk)、U盘(universal serial bus,USB)、闪存(flash)、SD卡(secure digital memory Card,SDcard)、记忆棒等等,硬盘是硬盘驱动器(hard disk drive,HDD)、固态硬盘(solid statedisk,SSD)、机械硬盘(mechanical hard disk,HDD)等,本申请不作具体限定。
在本申请实施例中,调度节点120用于根据用户提交的作业请求,生成多个作业,并根据各个计算节点130的处理能力和空闲情况,将多个作业分发给多个计算节点,其中,一个计算节点可以处理一个或者多个作业,一个作业也可以交给一个或者多个计算节点处理。
具体实现中,调度节点120可根据调控策略生成多个作业,具体可结合HPC集群100中每个计算节点的计算资源情况生成多个作业,这里的计算资源可以是虚拟的计算资源比如线程、进程或者数据流,也可以是硬件资源比如处理器、网络通信资源或扩展卡。调控策略可以包括以负载均衡为主要目标的策略,即使得所有计算资源都处于忙碌状态的策略,还可包括以保证服务质量为主要目标的策略,本申请不作具体限定。
计算节点130用于接收作业,并对调度节点120为其分配的作业进行处理。
在本申请实施例中,每个计算节点130包括第一存储器131,第一存储器131的数据读写效率不低于共享存储140的数据读写效率。其中,第一存储器131可以是易失性存储器或非易失性存储器,或包括易失性和非易失性存储器两者。其中,非易失性存储器是ROM、PROM、EPROM、EEPROM或闪存。易失性存储器是随机存取存储器,例如缓存(cache)、 RAM、SRAM、DRAM、SDRAM、DDR SDRAM、ESDRAM、SLDRAM和DR RAM。
具体实现中,计算节点130可以在作业运行时,从共享存储140读取输入数据并进行处理,生成输出数据并存储于第一存储器131中,然后将第一存储器131中的数据存储于共享存储140中。可以理解的,第一存储器131的数据读写效率高于共享存储140,可以使得计算节点130存储输出数据时的效率得以提升。
在本申请实施例中,作业运行时包括多个迭代阶段,多个迭代阶段中的每个迭代阶段包括计算阶段和IO阶段,计算阶段用于处理作业中的计算任务生成输出数据,IO阶段用于存储输出数据。需要说明的,每个迭代阶段的IO阶段与下个迭代阶段的计算阶段相邻,每个迭代阶段的计算阶段与上个迭代阶段的IO阶段相邻。
示例性的,表1是计算节点多个迭代阶段的示例表,如下表1所示,作业运行时刻包括多个迭代阶段,例如表1中的迭代阶段1和迭代阶段2,其中,迭代阶段1包括计算阶段1 和IO阶段1,迭代阶段2包括计算阶段2和IO阶段2,以此类推,直至作业中的全部计算任务处理完毕。其中,IO阶段1与计算阶段2相邻,IO阶段2与计算阶段3相邻,以此类推,这里不一一展开举例。
表1计算节点的多个迭代阶段示例表
在本申请实施例中,在IO阶段下,计算节点130执行第一存储任务,其中,第一存储任务指的是将输出数据存储于第一存储器131。在计算阶段下,计算节点130执行计算任务和第二存储任务,其中,第二存储任务指的是将第一存储器131中的数据存储于共享存储140。例如表1所示的,计算节点130在迭代阶段1中的计算阶段1下执行计算任务和第二存储任务,在IO阶段1下执行第一存储任务,同理,计算节点130在迭代阶段2中的计算阶段2 下执行计算任务和第二存储任务,在IO阶段2下执行第一存储任务,以此类推,这里不一一举例说明。
下面结合图3,对本申请提供的作业处理装置所包括的各个功能模块进行解释说明,如图3所示,该作业处理装置300可包括阶段确定单元132、第一存储单元134、第二存储单元 133、接收单元135以及计算单元136。该作业处理装置300可以是如图2所示的HPC集群100中的计算节点130,下文统一以计算节点130来描述作业处理装置300,计算节点130还可包括第一存储器131,其中,第一存储器131的描述可参考图2实施例中关于第一存储器 131的描述,这里不重复赘述。
接收单元135用于接收调度节点120发送的作业,该作业运行时包括多个迭代阶段,上述多个迭代阶段中的每个迭代阶段包括计算阶段和IO阶段,其中,计算阶段用于处理作业中的计算任务生成输出数据,IO阶段用于存储该输出数据。计算阶段和IO阶段的具体描述可参考图2实施例以及表1实施例,这里不重复赘述。
阶段确定单元132用于确定计算节点130的作业运行阶段。
可选地,阶段确定单元132可根据分析HPC集群100的作业工作日志确定计算节点130 的作业运行阶段,其中,作业工作日志用于记录HPC集群100的操作记录。应理解,HPC集群100在运行过程中会不断更新其工作日志(或者输出日志),工作日志记录了HPC集群100处理了什么任务,比如在处理写IO操作时,工作日志会记录当前计算节点正在往A地址写入文件X,根据工作日志可以实时监控HPC集群100的作业运行状态。其中,该作业工作日志还可以是其他用于监控读写操作的文件,监控到写入第一存储器131的操作时,该文件可新增一个写IO记录。具体实现中,该文件可以是一个OCK文件,或者其他类型的文件,本申请不作具体限定。
具体实现中,阶段确定单元132可以侦测工作日志,当工作日志中生成处理计算任务的操作对应的记录时,阶段确定单元132可以确定作业处于计算阶段。举例来说,工作日志的最新记录显示HPC集群100正在处理写缓存请求,那么可以确定计算节点130处于IO阶段,工作日志的最新记录显示HPC集群100正在处理计算任务,那么可以确定计算节点130处于计算阶段。应理解,上述举例用于说明,本申请不作具体限定。
可选地,阶段确定单元132还可根据HPC集群100的打桩函数来确定计算节点130的作业运行阶段。其中,打桩是软件测试的常用方法,举例来说,在测试函数F时,函数F调用了函数text(),是text()还没有写完,这时可以使用一个打桩函数来模拟text()函数,测试函数 F时,打桩函数生成返回值即可完成对函数F的测试,因此打桩函数可以简单理解为在运行代码中插入一个可以返回固定值的函数。在本申请实施例中,开发人员可以在每个作业运行阶段运行的代码之前或者之后加入打桩函数,阶段确定单元132可以根据打桩函数的返回值来确定当前计算节点所处的运行阶段。
具体实现中,在计算节点的IO阶段的运行代码之前或者之后插入第一打桩函数,第一打桩函数运行时的返回值为第一值,计算节点的计算阶段的运行代码之前或者之后插入第二打桩函数,第二打桩函数运行时的返回值为第二值。这样,作业运行后,阶段确定单元132可以获取打桩函数的返回值,在返回值为第一值的情况下确定计算节点的运行阶段为IO阶段,在返回值为第二值的情况下确定计算节点的运行阶段为计算阶段。
可选地,阶段确定单元132还可以通过监控第一存储器131接口的方式来确定当前的运行阶段,当监控到第一存储器131正在写入数据时,可以确定运行阶段为IO阶段,否则,确定为计算阶段。其中,上述接口可包括但不限于多点接口(multipointinterface,MPI),本申请不作具体限定。
在阶段确定单元132确定运行阶段为计算阶段时,第一存储单元134用于将第一存储器 131中的数据存储于共享存储140,也就是处理第二存储任务,同时,计算单元136用于对输入数据进行处理获得输出数据,也就是处理计算任务,计算任务和第二存储任务的描述可参考图2实施例和表1实施例的相关描述,这里不重复赘述。
在阶段确定单元132确定运行阶段为IO阶段时,第二存储单元133用于将输出数据存储于第一存储器131,也就是处理第一存储任务,这里的输出数据可以是上一计算阶段(相邻或者不相邻)计算节点130处理作业中的计算任务生成的输出数据,具体可参考表1实施例的相关描述,这里不重复赘述。
可以理解的,第二存储单元133和第一存储单元134分阶段处理IO任务,异步存储的方式可以避免IO竞争和IO冲突,提高IO任务的处理效率。
在一实施例中,计算阶段确定当前所处的运行阶段是IO阶段的情况下,第二存储单元 133可以先获取计算节点的网络带宽,在网络带宽低于第一阈值的情况下,将输出数据存储于第一存储器。具体实现中,上述网络带宽可包括计算节点130与共享存储140之间的网络带宽。
可选地,在IO阶段下,如果网络带宽不低于第一阈值时,此时网络带宽比较空闲,那么第二存储单元133可以将输出数据存储于共享存储140。
可以理解的,在网络带宽空闲的情况下,计算节点130将输出数据存储于共享存储140,在网络带宽不空闲的情况下,计算节点130将输出数据存储于本地的第一存储器131,等待计算节点下在由计算节点将其发送至共享存储140进行异步存储,从而避免由于网络带宽限制产生的IO竞争和IO冲突问题。
在一实施例中,计算节点130确定当前所处的运行阶段是计算阶段的情况下,第一存储单元134可以先获取计算节点的网络带宽,在网络带宽不低于第二阈值的情况下,此时网络带宽比较空闲,第一存储单元134可以执行第二存储任务,将第一存储器131中的数据存储于共享存储140中。
可选地,在计算阶段下,如果网络带宽低于第二阈值,此时网络带宽比较紧张,那么第一存储单元134也可以不执行第二存储任务,或者,只执行部分第二存储任务,从而避免对计算任务的处理产生影响。
需要说明的,上述第一阈值和第二阈值可以相同或不同,具体可根据应用场景确定,本申请不作具体限定。
需要说明的,如图3所示,作业运行时包括多个迭代阶段,每个迭代阶段包括计算阶段和IO阶段,也就是说,作业运行时计算节点130会交替处于IO阶段和计算阶段,当计算节点130处于IO阶段时,可以将下个计算阶段所需的输入数据从共享存储140读取至第一存储器131,计算节点130处于计算阶段时,可以对当前第一存储器131中存储的输入数据进行处理,生成输出数据存储于第一存储器131中,同时,将当前第一存储器131中存储的输出数据发送至共享存储140进行持久化存储,这里发送的输出数据可以是上个计算阶段生成的输出数据,从而达到异步持久化的目的。
综上可知,本申请提供了一种作业运行系统,该系统中的计算节点的作业运行阶段可包括IO阶段和计算阶段,在IO阶段下,计算节点将数据存储于本地读写效率更高的第一存储器中,从而提高IO阶段的存储效率,避免出现长时间等待输出数据在IO阶段成功存储的问题;同时,在计算阶段下将第一存储器中的数据存储于第二存储器,充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,使得计算节点产生的输出数据不需要等待在IO阶段成功存储,可以直接进行下一次迭代中的计算阶段进行计算操作,从而提高整体HPC集群100的作业处理效率。
本申请提供的作业处理方法包括多种可能的实现方式,下面结合图4和图5对各种可能的实现方式进行一一说明。
图4是本申请提供的一种作业处理方法的步骤流程示意图,该方法可应用于如图2所示的HPC集群100中,且图4中的计算节点可以是如图3所示结构的计算节点。
如图4所示,该方法可包括以下步骤:
步骤S410:接收作业。该步骤可以由图1~图3实施例中的计算节点130实现,具体可以由图3实施例中的接收单元135实现。
具体实现中,上述作业可以是图2实施例中的调度节点120发送给计算节点130作业,调度节点120可以在接收到用户通过客户端110发送的作业请求后,生成多个作业,并根据各个计算节点130的处理能力和空闲情况,将多个作业分发给多个计算节点130,其中,一个计算节点可以处理一个或者多个作业,一个作业也可以交给一个或者多个计算节点处理。
具体实现中,调度节点120可根据调控策略生成多个作业,具体可结合HPC集群100中每个计算节点的计算资源情况生成多个作业,这里的计算资源可以是虚拟的计算资源比如线程、进程或者数据流,也可以是硬件资源比如处理器、网络通信资源或扩展卡。调控策略可以包括以负载均衡为主要目标的策略,即使得所有计算资源都处于忙碌状态的策略,还可包括以保证服务质量为主要目标的策略,本申请不作具体限定。具体可参考前述内容中关于客户端110和调度节点120的描述,这里不重复赘述。
步骤S420:确定运行阶段是否为计算阶段。该步骤可以由图1和图2实施例中的计算节点130实现,具体可以由图3实施例中计算节点130的阶段确定单元132实现。
可选地,可根据分析HPC集群100的作业工作日志确定计算节点130的作业运行阶段,其中,作业工作日志用于记录HPC集群100的操作记录。应理解,HPC集群100在运行过程中会不断更新其工作日志(或者输出日志),工作日志记录了HPC集群100处理了什么任务,比如在处理写IO操作时,工作日志会记录当前计算节点正在往A地址写入文件X,根据工作日志可以实时监控HPC集群100的作业运行状态。其中,该作业工作日志还可以是其他用于监控读写操作的文件,监控到写入第一存储器131的操作时,该文件可新增一个写IO记录。具体实现中,该文件可以是一个OCK文件,或者其他类型的文件,本申请不作具体限定。
具体实现中,可以侦测工作日志,当工作日志中生成处理计算任务的操作对应的记录时,确定作业处于计算阶段。举例来说,工作日志的最新记录显示HPC集群100正在处理写缓存请求,那么可以确定计算节点130处于IO阶段,工作日志的最新记录显示HPC集群100正在处理计算任务,那么可以确定计算节点130处于计算阶段。应理解,上述举例用于说明,本申请不作具体限定。
可选地,还可根据HPC集群100的打桩函数来确定计算节点130的作业运行阶段。其中,打桩是软件测试的常用方法,举例来说,在测试函数F时,函数F调用了函数text(),是text() 还没有写完,这时可以使用一个打桩函数来模拟text()函数,测试函数F时,打桩函数生成返回值即可完成对函数F的测试,因此打桩函数可以简单理解为在运行代码中插入一个可以返回固定值的函数。在本申请实施例中,开发人员可以在每个作业运行阶段运行的代码之前或者之后加入打桩函数,作业运行时,计算节点130可以根据打桩函数的返回值来确定当前计算节点所处的运行阶段。
具体实现中,在计算节点的IO阶段的运行代码之前或者之后插入第一打桩函数,第一打桩函数运行时的返回值为第一值,计算节点的计算阶段的运行代码之前或者之后插入第二打桩函数,第二打桩函数运行时的返回值为第二值。这样,作业运行后,计算节点130可以获取打桩函数的返回值,在返回值为第一值的情况下确定计算节点的运行阶段为IO阶段,在返回值为第二值的情况下确定计算节点的运行阶段为计算阶段。
可选地,还可以通过监控第一存储器131接口的方式来确定当前的运行阶段,当监控到第一存储器131正在写入数据时,可以确定运行阶段为IO阶段,否则,确定为计算阶段。其中,上述接口可包括但不限于MPI,本申请不作具体限定。
可选地,在作业运行状态为计算阶段时,执行步骤S460。
可选地,在作业运行状态不是计算阶段时,或者,确定作业运行状态为IO阶段时,执行步骤S430。
可选地,在作业运行状态不是计算阶段时,也可以直接执行步骤S440。
步骤S430:确定网络带宽是否低于第一阈值。该步骤可以由图1和图2实施例中的计算节点130实现,具体可以由图3实施例中计算节点130的第二存储单元133实现。其中,上述网络带宽可包括计算节点130与共享存储140之间的网络带宽。
具体实现中,在网络带宽低于第一阈值的情况下,执行步骤S440,在网络带宽不低于第一阈值的情况下,执行步骤S450。
步骤S440:将输出数据写入第一存储器。该步骤可以由图1和图2实施例中的计算节点 130实现,具体可以由图3实施例中计算节点130的第二存储单元133实现。
需要说明的,步骤S440即为前述内容中的第一存储任务。也就是说,在步骤S430判断计算节点130的运行阶段为IO阶段,且网络带宽不低于第一阈值的情况下,执行第一存储任务,将输出数据写入第一存储器。
需要说明的,如果网络带宽低于第一阈值但是第一存储器131的存储容量达到存储阈值,此时也可以执行步骤S440,将输出数据写入共享存储,避免由于第一存储器131的存储容量不足导致数据写入失败。
步骤S450:将输出数据写入共享存储。该步骤可以由图1和图2实施例中的计算节点130 实现,具体可以由图3实施例中计算节点130的第二存储单元133实现。
可以理解的,在网络带宽空闲的情况下,计算节点130将输出数据存储于共享存储140,在网络带宽不空闲的情况下,计算节点130将输出数据存储于本地的第一存储器131,等待计算节点下在由计算节点将其发送至共享存储140进行异步存储,从而避免由于网络带宽限制产生的IO竞争和IO冲突问题。
步骤S460:将第一存储器131中的数据写入共享存储140。该步骤即为前述内容中的第二存储任务,也就是说,在步骤S420判断计算节点130的运行阶段为计算阶段时执行第二存储任务。
需要说明的,图4中的步骤S410~步骤S460是本申请的一种可能的实现方式,步骤S410、步骤S420、步骤S440、步骤S460可以是另一种可能的实现方式,简单来说,步骤S420确定运行阶段为计算阶段后,执行步骤S440,确定运行阶段不是计算节点后,执行步骤S460,这里不展开赘述。
图4所示的实现方式中,在IO阶段下,如果网络带宽空闲则将输出数据直接写入共享存储,如果网络带宽不空闲则将输出数据写入本地的第一存储器,等待计算阶段下被写入至共享存储,从而提高IO阶段的存储效率,避免出现长时间等待输出数据在IO阶段成功存储的问题;同时,在计算阶段下将第一存储器中的数据存储于第二存储器,充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,使得计算节点产生的输出数据不需要等待在IO阶段成功存储,可以直接进行下一次迭代中的计算阶段进行计算操作,从而提高整体HPC集群100 的作业处理效率。
图5是本申请提供的另一种作业处理方法的步骤流程示意图,该方法可应用于如图2所示的HPC集群100中,且图5中的计算节点可以是如图3所示结构的计算节点。
如图5所示,该方法可包括以下步骤:
步骤S510:接收作业。该步骤可以由图1~图3实施例中的计算节点130实现,具体可以由图3实施例中的接收单元135实现。该步骤的具体描述可参考图4实施例中的步骤S410,这里不重复赘述。
步骤S520:确定运行阶段是否为计算阶段。该步骤可以由图1和图2实施例中的计算节点130实现,具体可以由图3实施例中计算节点130的阶段确定单元132实现。该步骤的具体描述可参考图4实施例中的步骤S420,这里不重复赘述。
可选地,在作业运行状态为计算阶段时,执行步骤S540。
可选地,在作业运行状态不是计算阶段时,或者,确定作业运行状态为IO阶段时,执行步骤S530。
可选地,在作业运行状态为计算阶段时,也可以直接执行步骤S550。
步骤S530:将输出数据写入第一存储器。
该步骤即为前述内容中的第一存储任务,该步骤可以由图1和图2实施例中的计算节点 130实现,具体可以由图3实施例中计算节点130的第二存储单元133实现。
步骤S540:确定网络带宽是否低于第二阈值。该步骤可以由图1和图2实施例中的计算节点130实现,具体可以由图3实施例中计算节点130的第一存储单元134实现。
其中,网络带宽的描述可以参考前述内容,这里不重复赘述。需要说明的,上述第一阈值和第二阈值可以相同或者不同,具体可根据HPC集群100的实际业务场景设置合适的第一阈值和第二阈值,本申请不作具体限定。
可选地,在网络带宽低于第二阈值的情况下,执行步骤S560,在网络带宽不低于第二阈值的情况下,执行步骤S550。
步骤S550:将第一存储器中的数据写入共享存储140。该步骤即为前述内容中的第二存储任务,该步骤可以由图1和图2实施例中的计算节点130实现,具体可以由图3实施例中计算节点130的第二存储单元133实现。
可选地,步骤S550可以将第一存储器131中的全部数据写入共享存储,也可以将第一存储器131中的部分数据写入共享存储,具体可根据应用场景决定,本申请不作具体限定。
可以理解的,在计算阶段下计算节点130处理计算任务,此时计算节点130的网络带宽没有被占用,如果网络带宽比较空闲时,可以同时处理第二存储任务,从而提高网络带宽利用率。
步骤S560:不处理第二存储任务。
可以理解的,在计算阶段下,计算节点130处理计算任务时虽然不会占用网络带宽,但是计算节点130是HPC集群100内部的一个计算节点,其网络带宽可能会被其他业务占用,因此判断一下当前计算节点的网络带宽,在网络带宽低于第二阈值时,不进行第二存储任务的处理,从而避免由于网络带宽不足出现IO竞争和IO冲突的问题。
图5所示的实现方式中,在计算阶段下,如果网络带宽空闲则处理第二存储任务,将第一存储器中的数据写入共享存储中,如果网络带宽不空闲则不处理第二存储任务,等待下一个网络带宽空闲的计算阶段对其进行处理,从而避免由于网络带宽不足出现IO竞争和IO冲突的问题,避免出现长时间等待输出数据在IO阶段成功存储的问题;同时,在计算阶段下将第一存储器中的数据存储于第二存储器,充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,使得计算节点产生的输出数据不需要等待在IO阶段成功存储,可以直接进行下一次迭代中的计算阶段进行计算操作,从而提高整体HPC集群100的作业处理效率。
需要说明的,图5中的步骤S510~步骤S560是本申请的一种可能的实现方式,图4和图 5的方案结合可以是本申请的另一种可能的实现方式。
具体地,当步骤S420确定运行阶段不是计算阶段时,可执行步骤S430确定网络带宽是否低于第一阈值,在低于第一阈值的情况下执行步骤S440,在不低于第一阈值的情况下执行步骤S450;当步骤S420确定运行阶段为计算阶段时,可执行步骤S540确定网络带宽是否低于第二阈值,在低于第二阈值的情况下执行步骤S560,在不低于第二阈值的情况下执行步骤 S550。
需要说明的,如果计算节点130在第一个迭代阶段的计算阶段下,第一存储器131中没有输出数据需要异步存储于共享存储140,换句话说,没有第二存储任务需要执行,此时计算节点130可以只执行计算任务,不执行第二存储任务。同理,计算节点130在最后一个迭代阶段的计算阶段下,计算节点130没有计算任务需要处理,此时可以只执行第二存储任务,将第一存储器131中剩余的数据存储于共享存储140。
举例来说,如图6所示,图6是一种应用场景下本申请提供作业处理方法中IO阶段和计算阶段的划分示例,其中,图6示例性的示出了计算节点130的作业运行状态包括计算阶段 1、IO阶段1、计算阶段2、IO阶段2以及计算阶段3,其中计算阶段1为计算节点首次进入的计算阶段,计算阶段3为计算节点最后一次进入的计算阶段。应理解,图6用于举例说明,本申请不对作业的迭代阶段数量、计算阶段和IO阶段的数量进行限定。
如图6所示,在计算阶段1,计算节点130处理了计算任务1,对输入数据1进行了处理生成了输出数据1。由于计算阶段1是第一个迭代阶段的计算阶段,此时第一存储器中没有输出数据,因此计算节点130可以只执行计算任务,不执行第二存储任务。
在IO阶段1,计算节点130执行第一存储任务1,将输出数据1存储于第一存储器131中。具体实现中,计算节点130可以先确定网络带宽是否低于第一阈值,在低于第一阈值的情况下,执行第一存储任务1,否则,该输出数据1可以直接写入共享存储140,具体可参考图5实施例中的步骤S430~步骤S450,这里不重复展开赘述。
在计算阶段2,计算节点130执行计算任务2,对输入数据2进行处理生成输出数据2,同时,由于第一存储器131中已存储有输出数据1,计算节点130还可以同时执行第二存储任务2,也就是将第一存储器131中的输出数据1写入共享存储140中。具体实现中个,计算节点130可以先确定网络垫款是否低于第二阈值,在不低于第二阈值的情况下,执行第二存储任务2,否则,可以不执行第二存储任务2,等待后面的计算阶段来处理。具体可参考图 5实施例中的步骤S540~步骤S560,这里不重复展开赘述。
在IO阶段2,计算节点130执行第一存储任务2,将输出数据2存储于第一存储器131中,该阶段的处理描述与IO阶段1类似,这里不重复展开赘述。
在计算阶段3,计算节点处理了第二存储任务3,将第一存储器131中的输出数据2存储于共享存储140中,该阶段的处理描述与计算阶段1和计算阶段2类似,这里不重复展开赘述。需要说明的是,由于计算阶段3是最后一个迭代阶段中的计算阶段,此时计算节点130没有输入数据需要处理,因此计算阶段3下,计算节点130不处理计算任务,只处理第二存储任务。
可以理解的,IO阶段下处理第一存储任务,计算阶段下处理计算任务和第二存储任务,不仅避免了IO竞争和IO冲突的问题,而且充分利用了计算任务处理时,计算节点130和共享存储140之间的空闲网络带宽,提高带宽利用率。
综上可知,本申请提供了一种作业处理方法,该方法中的计算节点的作业运行阶段可包括IO阶段和计算阶段,在IO阶段下计算节点将输出数据存储于第一存储器,在计算阶段下计算节点将第一存储器中的数据存储于共享存储,其中,第一存储器的读写效率不低于共享存储的读写效率。这样不仅使得数据写入第一存储器的第一存储任务和数据写入共享存储的第二存储任务可以分开处理,避免了IO竞争和IO冲突的问题,而且第二存储任务的处理充分利用了计算阶段下的空闲网络带宽,提高带宽利用率,提高HPC集群100的作业运行效率。
图7是本申请提供的一种计算设备的结构示意图,该计算设备700是图1至图6实施例中的计算节点130。
进一步地,计算节点130包括处理器701、存储单元702、存储介质703和通信接口704,其中,处理器701、存储单元702、存储介质703和通信接口704通过总线705进行通信,也通过无线传输等其他手段实现通信。
处理器701由至少一个通用处理器构成,例如CPU、NPU或者CPU和硬件芯片的组合。上述硬件芯片是专用集成电路(Application-Specific Integrated Circuit,ASIC)、编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD是复杂编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场编程逻辑门阵列(Field-Programmable Gate Array, FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。处理器701执行各种类型的数字存储指令,例如存储在存储单元702中的软件或者固件程序,它能使计算设备700 提供较宽的多种服务。
具体实现中,作为一种实施例,处理器701包括一个或多个CPU,例如图7中所示的CPU0 和CPU1。
在具体实现中,作为一种实施例,计算设备700也包括多个处理器,例如图7中所示的处理器701和处理器706。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储单元702用于存储程序代码,并由处理器701来控制执行,以执行上述图1-图5中任一实施例中计算节点的处理步骤。程序代码中包括一个或多个软件单元,上述一个或多个软件单元是图3实施例中的接收单元、阶段确定单元、第一存储单元和第二存储单元,其中,接收单元用于接收作业,阶段确定单元用于确定计算阶段当前所处的运行阶段,第二存储单元用于在运行阶段是IO阶段的情况下,将输出数据存储于第一存储器,第一存储单元用于在运行阶段是计算阶段的情况下,将第一存储器中的数据存储于共享存储。其中,接收单元用于执行图4实施例中的步骤S410,阶段确定单元用于执行图4实施例中的步骤S420,第二存储单元用于实现图4实施例中的步骤S430~步骤S450或者图5实施例中的步骤S530,第一存储单元用于实现图4实施例中的步骤S460或者图5实施例中的步骤S540~步骤S560,此处不再赘述。
存储单元702包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。存储单元702还包括非易失性随机存取存储器。存储单元702是易失性存储器或非易失性存储器,或包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,ROM)、编程只读存储器(programmable ROM,PROM)、擦除编程只读存储器(erasable PROM,EPROM)、电擦除编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器 (synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DRRAM)。还是硬盘(hard disk)、U盘(universal serial bus,USB)、闪存(flash)、SD卡(secure digital memory Card,SD card)、记忆棒等等,硬盘是硬盘驱动器(hard diskdrive,HDD)、固态硬盘(solid state disk,SSD)、机械硬盘(mechanical hard disk,HDD)等,本申请不作具体限定。
在本申请实施例中,存储单元702可以是图1~图5实施例中的第一存储器131。
存储介质703是存储数据的载体,比如硬盘(hard disk)、U盘(universal serialbus,USB)、闪存(flash)、SD卡(secure digital memory Card,SD card)、记忆棒等等,硬盘可以是硬盘驱动器(hard disk drive,HDD)、固态硬盘(solid state disk,SSD)、机械硬盘(mechanical hard disk,HDD) 等,本申请不作具体限定。
通信接口704为有线接口(例如以太网接口),为内部接口(例如高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)总线接口)、有线接口(例如以太网接口) 或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他服务器或单元进行通信。
总线705是快捷外围部件互联标准(Peripheral Component InterconnectExpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线705分为地址总线、数据总线、控制总线等。
总线705除包括数据总线之外,还包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线705。
需要说明的,图7仅仅是本申请实施例的一种能的实现方式,实际应用中,计算设备700 还包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,参见前述图1-图6实施例中的相关阐述,这里不再赘述。
本申请实施例提供一种计算机存储介质,包括:该计算机存储介质中存储有指令;当该指令在计算设备上运行时,使得该计算设备执行上述图1至图6描述的作业处理方法。
本申请实施例提供了一种包含指令的程序产品,包括程序或指令,当该程序或指令在计算设备上运行时,使得该计算设备执行上述图1至图6描述的作业处理方法。
上述实施例,全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机为通用计算机、专用计算机、计算机网络、或者其他编程装置。计算机指令存储在计算机读存储介质中,或者从一个计算机读存储介质向另一个计算机读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机读存储介质是计算机能够存取的任何用介质或者是包含至少一个用介质集合的服务器、数据中心等数据存储节点。用介质是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD)、或者半导体介质。半导体介质是SSD。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,轻易想到各种等效的修复或替换,这些修复或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (16)

1.一种作业处理方法,其特征在于,所述方法应用于计算节点,所述方法包括:
所述计算节点接收作业,所述作业运行时包括多个迭代阶段,所述多个迭代阶段中的每个迭代阶段包括计算阶段和输入输出IO阶段,所述计算阶段用于处理所述作业中的计算任务生成输出数据,所述IO阶段用于存储所述输出数据;
所述计算节点确定所述作业处于计算阶段时,将第一存储器中的数据存储于第二存储器,其中,所述第一存储器的数据读写效率大于所述第二存储器的数据读写效率,所述第一存储器中存储所述计算节点在所述IO阶段写入的数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述计算节点确定所述作业处于IO阶段时,所述计算节点将所述输出数据写入所述第一存储器。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述计算节点确定所述作业处于IO阶段时,
且在所述计算节点的网络带宽低于第一阈值的情况下,将所述输出数据写入所述第一存储器。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述计算节点确定所述作业处于IO阶段时,
且在所述网络带宽不低于所述第一阈值的情况下,所述计算节点将所述输出数据存储于第二存储器。
5.根据权利要求1至4任一权利要求所述的方法,其特征在于,所述计算节点确定所述作业处于计算阶段时,将所述第一存储器中的数据存储于第二存储器包括:
所述计算节点获取所述计算节点的网络带宽;
在所述网络带宽不低于第二阈值的情况下,将所述第一存储器中的数据存储于第二存储器。
6.根据权利要求1至5任一权利要求所述的方法,其特征在于,所述计算节点确定所述作业处于计算阶段包括:
所述计算节点侦测工作日志,当工作日志中生成处理计算任务的操作对应的记录时,则确定所述作业处于计算阶段。
7.根据权利要求1至6任一权利要求所述的方法,其特征在于,所述第一存储器为所述计算节点中的缓存,所述第二存储器为所述计算节点和与所述计算节点属于同一计算集群的其他计算节点都可以访问的共享存储设备。
8.一种作业处理装置,其特征在于,所述装置包括:
接收单元,用于接收作业,所述作业运行时包括多个迭代阶段,所述多个迭代阶段中的每个迭代阶段包括计算阶段和输入输出IO阶段,所述计算阶段用于处理所述作业中的计算任务生成输出数据,所述IO阶段用于存储所述输出数据;
第一存储单元,用于在确定所述作业处于计算阶段时,将第一存储器中的数据存储于第二存储器,其中,所述第一存储器的数据读写效率大于所述第二存储器的数据读写效率,所述第一存储器中存储所述作业处理装置在所述IO阶段写入的数据。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括第二存储单元,用于在确定所述作业处于IO阶段时,将所述输出数据写入所述第一存储器。
10.根据权利要求8所述的装置,其特征在于,所述第二存储单元,用于在确定所述作业处于IO阶段时,
且在所述作业处理装置的网络带宽低于第一阈值的情况下,将所述输出数据写入所述第一存储器。
11.根据权利要求10所述的装置,其特征在于,所述第一存储单元,用于在确定所述作业处于IO阶段时,
且在所述网络带宽不低于所述第一阈值的情况下,将所述输出数据存储于第二存储器。
12.根据权利要求8至11任一权利要求所述的装置,其特征在于,所述第一存储单元,用于获取所述作业处理装置的网络带宽;
在所述网络带宽不低于第二阈值的情况下,将所述第一存储器中的数据存储于第二存储器。
13.根据权利要求8至12任一权利要求所述的装置,其特征在于,所述装置包括阶段确定单元,
所述阶段确定单元,用于侦测工作日志,当工作日志中生成处理计算任务的操作对应的记录时,则确定所述作业处于计算阶段。
14.根据权利要求8至13任一权利要求所述的装置,其特征在于,所述第一存储器为所述作业处理装置中的缓存,所述第二存储器为所述作业处理装置和与所述作业处理装置属于同一计算集群的其他作业处理装置都可以访问的共享存储设备。
15.一种计算设备,其特征在于,所述计算设备包括处理器和存储器,所述存储器用于存储代码,所述处理器用于执行所述代码实现如权利要求1至7任一权利要求所述的方法。
16.一种计算机存储介质,其特征在于,所述计算机存储介质包括指令,当所述指令在计算机上运行时,所述计算机实现如权利要求1至7任一权利要求所述的方法。
CN202210546599.3A 2022-05-19 2022-05-19 一种作业处理方法、装置及相关设备 Pending CN117130795A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210546599.3A CN117130795A (zh) 2022-05-19 2022-05-19 一种作业处理方法、装置及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210546599.3A CN117130795A (zh) 2022-05-19 2022-05-19 一种作业处理方法、装置及相关设备

Publications (1)

Publication Number Publication Date
CN117130795A true CN117130795A (zh) 2023-11-28

Family

ID=88851298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210546599.3A Pending CN117130795A (zh) 2022-05-19 2022-05-19 一种作业处理方法、装置及相关设备

Country Status (1)

Country Link
CN (1) CN117130795A (zh)

Similar Documents

Publication Publication Date Title
US11010681B2 (en) Distributed computing system, and data transmission method and apparatus in distributed computing system
US8381230B2 (en) Message passing with queues and channels
US20200233704A1 (en) Multi-core processor in storage system executing dedicated polling thread for increased core availability
WO2021254135A1 (zh) 任务执行方法及存储设备
JP7039631B2 (ja) アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体
US9542122B2 (en) Logical block addresses used for executing host commands
CN111078516A (zh) 分布式性能测试方法、装置、电子设备
US8543722B2 (en) Message passing with queues and channels
US20100269119A1 (en) Event-based dynamic resource provisioning
KR102315102B1 (ko) 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체
CN109558241A (zh) 一种获取自旋锁的方法及装置
US10289329B2 (en) Burst buffer dynamic logical volume sizing in high performance computing environment
CN115543222B (zh) 一种存储优化方法、系统、设备及可读存储介质
US6598105B1 (en) Interrupt arbiter for a computing system
CN112596669A (zh) 一种基于分布式存储的数据处理方法及装置
WO2023124304A1 (zh) 芯片的缓存系统、数据处理方法、设备、存储介质及芯片
CN115878333A (zh) 进程组间的一致性判断方法、装置及设备
CN117130795A (zh) 一种作业处理方法、装置及相关设备
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN114281516A (zh) 一种基于numa属性的资源分配方法及装置
US20240160487A1 (en) Flexible gpu resource scheduling method in large-scale container operation environment
CN113076176B (zh) 一种容器环境下的mpi应用性能优化方法及系统
CN117311833B (zh) 一种存储控制方法、装置、电子设备及可读存储介质
US20230266883A1 (en) Memory allocation method and apparatus, electronic device, and storage medium
US9251100B2 (en) Bitmap locking using a nodal lock

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