作业分配方法、装置、电子设备及可读存储介质
文献发布时间:2023-06-19 12:02:28
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种作业分配方法、装置、电子设备及可读存储介质。
背景技术
高性能计算集群具有强大的计算能力,可向用户提供大量的计算服务,集群管理系统会根据用户的需求进行作业调度,分配计算资源,提供合适的计算服务。高性能计算集群通常具有大量计算节点,高性能互连网络负责将这些计算节点有序连接起来,提供高效的通信服务,使得各个独立的计算节点协调通信,形成一个有机整体,提供强大的计算能力和存储资源。
高性能互连网络的主要功能是实现大量计算节点间的消息传递,现有的作业分配方式是随机选择一些计算节点来执行作业,但是若这些计算节点之间的消息传递不及时,则导致计算效率较低,大大影响了高性能计算集群的计算能力。
发明内容
本申请实施例的目的在于提供一种作业分配方法、装置、电子设备及可读存储介质,用以改善现有技术中的作业分配方式导致计算效率较低,影响了高性能计算集群的计算能力。
第一方面,本申请实施例提供了一种作业分配方法,所述方法包括:获取执行目标作业所需的计算节点数;获取计算集群中的各个计算节点之间的通信延迟,所述通信延迟为根据各个计算节点之间的通信路径的链路信息确定的;按照所述通信延迟由小到大的顺序选取用于执行所述目标作业的目标计算节点,直至所选取的所述目标计算节点的数量达到所述计算节点数;将所述目标作业分配至所述目标计算节点上执行。
在上述实现过程中,通过获取各个计算节点之间的通信延迟,然后将作业按照通信延迟由小到大的顺序依次分配给对应的计算节点,这样可以使得执行作业的计算节点之间的通信延迟尽可能是比较小的,即可有提高计算效率,提升计算集群的计算性能。
可选地,通过以下方式获取各个计算节点之间的通信延迟:
获取所述计算集群所形成的网络结构中各个计算节点之间的通信路径;
解析所述通信路径上的链路信息,所述链路信息包括所述通信路径上的各个转发设备信息、相互连接的设备之间的链路类型和链路长度;
根据所述链路信息获取各个计算节点之间的通信延迟。
在上述实现过程中,通过根据各个计算节点之间的通信路径上的链路信息来获取通信延迟,如此可以考虑实际的链路部署情况,从而获得更准确的通信延迟。
可选地,所述根据所述链路信息获取各个计算节点之间的通信延迟,包括:
根据所述各个转发设备信息确定各个转发设备对应的设备转发延迟;
基于所述链路类型和所述链路长度确定各个设备之间的链路延迟;
根据所述设备转发延迟和所述链路延迟确定各个计算节点之间的通信延迟。
在上述实现过程中,根据设备转发延迟和链路延迟来确定通信延迟,这样可以将设备转发延迟也考虑进来,以获得更为准确的通信延迟,进而可以为作业选取通信延迟最小的计算节点,以提高其计算效率。
可选地,所述基于所述链路类型和所述链路长度确定各个设备之间的链路延迟,包括:
根据所述链路类型获取对应的链路处理延迟以及信号处理速率;
根据所述信号处理速率和所述链路长度获取对应的传输延迟;
根据所述链路处理延迟和所述传输延迟确定各个设备之间的链路延迟。
在上述实现过程中,在获得链路延迟时,考虑到链路处理延迟和传输延迟,从而可获得更准确的链路延迟。
可选地,所述获取所述计算集群所形成的网络结构中各个计算节点之间的通信路径,包括:
遍历所述计算集群所形成的网络结构,解析获得所述网络结构中的各个设备的设备信息以及各个设备之间的连接信息,所述各个设备包括转发设备和计算节点;
根据各个设备的设备信息以及各个设备之间的连接信息,获取各个计算节点之间的通信路径。
在上述实现过程中,通过分析网络结构中各个设备的设备信息和连接信息,如此可获得更准确更全面的通信路径。
可选地,在所述目标作业为多个时,所述按照所述通信延迟由小到大的顺序选取用于执行所述目标作业的目标计算节点,包括:
获取每个目标作业对应的执行优先级;
按照所述执行优先级由大到小的顺序依次为各个目标作业选取对应的目标计算节点,其中,在每次选取一个目标作业对应的目标计算节点时,在当前未被选为目标计算节点的计算节点中按照通信延迟由小到大的顺序选取。
在上述实现过程中,基于作业的执行优先级来依次为作业选择目标计算节点,这样可以使得执行优先级高的作业通过通信延迟较小的目标计算节点来执行,以尽可能确保对通信延迟敏感的作业的计算效率。
可选地,所述获取每个目标作业对应的执行优先级,包括:
获取每个目标作业的作业类型;
根据所述作业类型确定每个目标作业对应的执行优先级。
在上述实现过程中,根据作业类型来确定执行优先级,使得可以针对不同类型的作业采用合适的通信延迟的计算节点来执行,以更合理地分配多个作业。
第二方面,本申请实施例提供了一种作业分配装置,所述装置包括:
节点数获取模块,用于获取执行目标作业所需的计算节点数;
通信延迟获取模块,用于获取计算集群中的各个计算节点之间的通信延迟,所述通信延迟为根据各个计算节点之间的通信路径的链路信息确定的;
节点选取模块,用于按照所述通信延迟由小到大的顺序选取用于执行所述目标作业的目标计算节点,直至所选取的所述目标计算节点的数量达到所述计算节点数;
作业分配模块,用于将所述目标作业分配至所述目标计算节点上执行。
可选地,所述通信延迟获取模块,用于获取所述计算集群所形成的网络结构中各个计算节点之间的通信路径;解析所述通信路径上的链路信息,所述链路信息包括所述通信路径上的各个转发设备信息、相互连接的设备之间的链路类型和链路长度;根据所述链路信息获取各个计算节点之间的通信延迟。
可选地,所述通信延迟获取模块,用于根据所述各个转发设备信息确定各个转发设备对应的设备转发延迟;基于所述链路类型和所述链路长度确定各个设备之间的链路延迟;根据所述设备转发延迟和所述链路延迟确定各个计算节点之间的通信延迟。
可选地,所述通信延迟获取模块,用于根据所述链路类型获取对应的链路处理延迟以及信号处理速率;根据所述信号处理速率和所述链路长度获取对应的传输延迟;根据所述链路处理延迟和所述传输延迟确定各个设备之间的链路延迟。
可选地,所述通信延迟获取模块,用于遍历所述计算集群所形成的网络结构,解析获得所述网络结构中的各个设备的设备信息以及各个设备之间的连接信息,所述各个设备包括转发设备和计算节点;根据各个设备的设备信息以及各个设备之间的连接信息,获取各个计算节点之间的通信路径。
可选地,在所述目标作业为多个时,所述节点选取模块,用于获取每个目标作业对应的执行优先级;按照所述执行优先级由大到小的顺序依次为各个目标作业选取对应的目标计算节点,其中,在每次选取一个目标作业对应的目标计算节点时,在当前未被选为目标计算节点的计算节点中按照通信延迟由小到大的顺序选取。
可选地,所述节点选取模块,用于获取每个目标作业的作业类型;根据所述作业类型确定每个目标作业对应的执行优先级。
第三方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种用于执行作业分配方法的电子设备的结构示意图;
图2为本申请实施例提供的一种作业分配方法的流程图;
图3为本申请实施例提供的一种网络结构示意图;
图4为本申请实施例提供的一种解析各个网络设备的示意图;
图5为本申请实施例提供的一种采用胖树拓扑结构的数据中心平面布局示意图;
图6为本申请实施例提供的一种采用本申请的作业分配方法与采用现有的作业分配方法选取计算节点执行作业的计算性能的测试结果对比图;
图7为本申请实施例提供的一种作业分配装置的结构框图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例提供了一种作业分配方法,该方法通过获取各个计算节点之间的通信延迟,然后将作业按照通信延迟由小到大的顺序依次分配给对应的计算节点,这样可以使得执行作业的计算节点之间的通信延迟尽可能是比较小的,即可有效降低通信延迟,提升计算性能。
请参照图1,图1为本申请实施例提供的一种用于执行作业分配方法的电子设备的结构示意图,所述电子设备可以包括:至少一个处理器110,例如CPU,至少一个通信接口120,至少一个存储器130和至少一个通信总线140。其中,通信总线140用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口120用于与其他节点设备进行信令或数据的通信。存储器130可以是高速RAM存储器,也可以是非易失性的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器130可选的还可以是至少一个位于远离前述处理器的存储装置。存储器130中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器110执行时,电子设备执行下述图2所示方法过程,例如,存储器130可用于存储各个计算节点之间的通信延迟,处理器110可用于在进行作业分配时,从存储器130中获取各个计算节点之间的通信延迟,然后从中选取通信延迟较小的一些计算节点来执行作业。
可以理解,图1所示的结构仅为示意,所述电子设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
请参照图2,图2为本申请实施例提供的一种作业分配方法的流程图,该方法包括如下步骤:
步骤S110:获取执行目标作业所需的计算节点数。
本申请中可以由作业调度系统来执行作业分配方法,作业调度系统可运行于电子设备中,电子设备可以是指服务器、终端等具有一定数据处理能力的设备。作业调度系统可以如SLURM、PBS等调度系统,用户可以通过作业调度系统提交作业请求,作业请求中携带有待执行的作业,作业调度系统可根据特定的调度规则以及用户对作业的需求选择合适的计算节点来执行作业。为了便于描述,下述均以作业调度系统为执行主体来说明本申请中的作业分配方法的具体实现过程。
在一些实施方式中,作业调度系统可为用户提供显示交互界面,用户可通过显示交互界面提交对应的作业请求,用户提交的作业请求中可包括待执行的目标作业和执行目标作业所需的计算节点数,即执行目标作业所需的计算节点的数量。其中,目标作业可以是指待执行作业中的一个作业,如待执行作业可以有多个,包括气象预报、地震预测、车辆检测等,目标作业可以是其中的一个,对于每个作业的分配方式均可按照相同的方式进行分配,本申请实施例中为了便于描述,均以对目标作业进行分配为例。
计算节点是指计算集群中具有一定数据处理能力的物理机,如终端设备、服务器等,这些计算节点可用于执行作业,计算节点之间通过转发设备进行通信,转发设备如路由器、交换机、网关等通信设备,作业调度系统也可以通过转发设备与计算节点通信。可以理解地,这些转发设备和计算节点构成了计算集群,如大规模胖树网络结构,其最上层的核心层交换机可与作业调度系统通信,最下层的计算节点连接接入层交换机。作业调度系统在接收到用户提交的作业请求后,可先获取到执行该作业的计算节点,然后通过核心层交换机、接入层交换机等转发设备将作业发送到这些计算节点上,以使这些计算节点来执行作业,计算节点可将执行作业完后获得的计算结果通过这些转发设备传输给作业调度系统。
在一些实施方式中,作业调度系统也可以根据作业的相关信息来自动分析执行该作业所需的计算节点数,如作业调度系统可以根据作业的类型、执行作业所需的CPU资源、内存资源等信息来将作业进行拆分,如拆分为多个子作业。例如,对于气象预测作业,对其进行拆分获得多个子作业包括水量计算、光照计算、温度计算等30个子作业,则表示执行该作业所需的计算节点数为30,每个计算节点对应执行一个子作业,这样30个计算节点可执行30个子作业。或者,也可以根据执行作业所需的CPU资源和内存资源等信息来确定对应的计算节点数,如一个计算节点的CPU资源和内存资源是已知的,用户提交的作业请求中可以携带有执行该作业所需的总的CPU资源和内存资源,这样就可以计算得到所需的计算节点数,若各个计算节点的CPU资源或内存资源不同时,则在下述选取执行目标作业的目标计算节点时,可以根据各个计算节点的CPU资源或内存资源来选取,使得所选取的计算节点的CPU资源或内存资源更符合目标作业所需的资源。
步骤S120:获取计算集群中的各个计算节点之间的通信延迟,所述通信延迟为根据各个计算节点之间的通信路径的链路信息确定的。
由于在计算集群的实际布线过程中,各个设备之间的线缆的类型或长度等可能是不同的,实际布线都是根据场地环境进行精确计算,尽可能使用短距离光纤线缆,例如,大规模数据中心可能同时存在20米、30米、50米或者100米的光纤线缆,距离越长,通信延迟越高。所以为了提高计算集群的计算性能,在分配作业时,尽量选择通信延迟小的计算节点来执行作业。
其中,通信延迟可理解为各个计算节点之间通信所需的通信时长,通信时长越长,表示两个计算节点之间的通信效率较低,通信时长越短,表示两个计算节点之间的通信效率较低。
各个计算节点之间的通信路径的链路信息可以包括通信路径上所经过的各个转发设备的类型、链路类型(如光纤线缆或铜缆等)以及链路长度等信息,通过这些链路信息可确定出每两个计算节点之间的通信延迟。
在一些实施方式中,各个计算节点之间的通信延迟可以是预先计算好的,并预先存储在作业调度系统中的,由于计算集群的网络结构一般不会改变,所以各个计算节点之间的通信延迟也不会改变,所以作业调度系统在每次分配作业时,可以直接读取存储的各个计算节点之间的通信延迟即可。当然,在计算集群的网络结构变更或者是计算节点之间的链路信息变更时,可以重新计算计算节点之间的通信延迟,然后对存储的通信延迟进行更新。
步骤S130:按照所述通信延迟由小到大的顺序选取用于执行所述目标作业的目标计算节点,直至所选取的所述目标计算节点的数量达到所述计算节点数。
为了提高计算性能,在选择执行目标作业的目标计算节点时,按照通信延迟由小到大的顺序来选择,例如,可以先将各个计算节点之间的通信延迟按照由小到大的顺序进行排序,每个通信延迟对应两个计算节点,然后可按照通信延迟由小到大的顺序来选取计算节点作为目标计算节点,直至所选取的目标计算节点的数量达到所需的计算节点数为止。
步骤S140:将所述目标作业分配至所述目标计算节点上执行。
在选取目标计算节点后,作业调度系统可将目标作业分配到这些目标计算节点中,由这些目标计算节点来执行目标作业,目标计算节点执行完目标作业后,可将执行结果传输给作业调度系统,作业调度系统可将执行结果呈现给用户,以便于用户知晓目标作业的执行情况。
在上述实现过程中,通过获取各个计算节点之间的通信延迟,然后将作业按照通信延迟由小到大的顺序依次分配给对应的计算节点,这样可以使得执行作业的计算节点之间的通信延迟尽可能是比较小的,即可有提高计算效率,提升计算集群的计算性能。
在一些实施方式中,为了提高计算效率,各个计算节点之间的通信延迟可以是预先计算好后存储在作业调度系统中的,在作业调度系统感知到计算集群的网络部署情况发生变化时,则对各个计算节点之间的通信延迟进行更新。但是若计算集群的网络部署情况后,作业调度系统没有及时更新各个计算节点之间的通信延迟时,此时可能基于通信延迟来选择的目标计算节点并不是最优的,所以,为了使得每次能更准确地选择出通信延迟最小的一些计算节点,还可以在每次执行作业分配方法时,都重新获取各个计算节点之间的通信延迟。
无论是预先获取通信延迟后存储还是每次作业分配时才获取,其获取各个计算节点之间的通信延迟的方式均可以为:获取计算集群所形成的网络结构中各个计算节点之间的通信路径,解析通信路径上的链路信息,链路信息包括通信路径上的各个转发设备信息、相互连接的设备之间的链路类型和链路长度,然后根据链路信息获取各个计算节点之间的通信延迟。
其中,通信路径是指两个计算节点之间通信所经过的路径,如图3所示,计算节点N1与计算节点N2之间的通信路径为N1->SW1->N2,计算节点N1与计算节点N3之间的通信路径为N1->SW1->SW5->SW2->N3,通过解析计算集群所形成的网络结构,即可遍历获得各个计算节点之间的通信路径。
获得各个计算节点之间的通信路径后,可对通信路径进行解析,以获得对应的链路信息,如通信路径N1->SW1->SW5->SW2->N3中包括SW1、SW2、SW5这三个转发设备的设备信息,以及这条通信路径上相邻两个设备之间的链路连接信息,如链路类型和链路长度。如N1与SW1之间的链路类型和链路长度,SW1与SW5之间的链路类型和链路长度。其中,链路类型和链路长度可以从存储有每两个相互连接的设备之间的链路信息的端口寄存器中获得的。
由于链路类型和链路长度的不同对通信延迟的影响也不同,如光纤线缆的信号传输速率通常是0.005us/米,信号传输速率越小,链路长度越长,通信延迟越高,而铜缆的传播速度大约是光缆的80%,所以铜缆的信号传输速率可以是0.00625us/米,所以,对于链路进行信息传输的链路延迟可以根据链路的信号传输速率和链路长度来获得。而各个转发设备在获得信息后,还需要对信息进行封装后进行转发等操作,也需要消耗一定的时长,不同类型的转发设备(如交换机、路由器,或者是不同型号的交换机或路由器)其处理信息的速率不同,对应的通信延迟也不同。
因此,可以根据这些链路信息来综合计算获得各个计算节点之间的通信延迟,从而可以考虑实际的网络部署情况(包括转发设备的部署、线路的部署),计算出更准确的通信延迟。
在一些实施方式中,在获得各个计算节点之间的通信延迟时,可以根据各个转发设备信息确定各个转发设备对应的设备转发延迟,以及基于链路类型和链路长度确定各个设备之间的链路延迟,再根据设备转发延迟和链路延迟确定各个计算节点之间的通信延迟。
其中,各个转发设备信息可以包括各个转发设备的类型、型号等信息,不同类型或不同型号的转发设备对应的设备转发延迟不同,例如,对于HDR200Gbps型号的交换机,其设备转发延迟为0.09us。作业调度系统中可以预先存储有不同类型或不同型号的转发设备对应的设备转发延迟,这样作业调度系统可以直接根据各个转发设备信息来查找获得各个转发设备对应的设备转发延迟,例如,对于通信路径N1->SW1->SW5->SW2->N3,可以获取交换机SW1、SW5和SW2的设备转发延迟。
为了快速获取链路延迟,作业调度系统也可以预先存储有链路类型和链路长度对应的链路延迟,这样可以直接根据链路类型和链路长度来查找获得对应的链路延迟,如链路类型为光纤,其链路长度为10米对应的链路延迟为0.05us,若N1与SW1之间的链路类型为光纤,其链路长度为10米,则通过查找获得这一段链路的链路延迟即为0.05us,按照该方式还可以查找获得SW1与SW5之间的链路延迟、SW5和SW2之间的链路延迟以及SW2和N3之间的链路延迟。
获得设备转发延迟和链路延迟之后,可以将设备转发延迟与链路延迟相加,以此来获得各个计算节点之间的通信延迟,如N1与N3之间的通信延迟=SW1的设备转发延迟+SW5的设备转发延迟+SW2的设备转发延迟+N1-SW1这一链路的链路延迟+SW1-SW5这一链路的链路延迟+SW5-SW2这一链路的链路延迟+SW2-N3这一链路的链路延迟。
可以理解地,为了便于实现网络部署,在大型数据中心的网络结构中,各个计算节点与接入层交换机之间的链路类型和链路长度是固定的,即各个计算节点到接入层交换机之间的链路延迟是固定的,所以,为了减少计算量,对于计算通信路径N1->SW1->SW5->SW2->N3的通信延迟时,可以无需计算N1->SW1和SW2->N2这两段链路的链路延迟,或者,若所有接入层交换机的类型或型号相同,则也可无需计算SW1和SW2的设备转发延迟,这样可以将通信延迟简化为=SW5的设备转发延迟+SW1-SW5这一链路的链路延迟+SW5-SW2这一链路的链路延迟。按照该方式可以获得各个计算节点之间的通信延迟。
在上述实现过程中,根据设备转发延迟和链路延迟来确定通信延迟,这样可以将设备转发延迟也考虑进来,以获得更为准确的通信延迟,进而可以为作业选取通信延迟最小的计算节点,以提高其计算效率。
在一些实施方式中,在网络运行过程中,部署的网络线路可能会出现故障,此时会涉及到链路长度的更换等情况,所以,为了获得更准确的链路延迟,且减少作业调度系统的存储量,作业调度系统可以存储各个链路类型对应的链路处理速率,这样可以直接根据链路类型获取到对应的链路处理速率,然后根据链路处理速率和链路长度确定各个设备之间的链路延迟。
例如,若获取到链路类型为光纤,所以可以通过查找获得光纤对应的链路处理速率为0.005us/米,而获得的链路长度为20米时,则链路延迟=链路处理速率*链路长度=0.01us。
在一些实施方式中,不同的链路可能其对信息处理存在一定的延迟,如光纤在进行信息传输时,还需要进行光电转换,其光电转换的处理延迟一般是0.1us,所以,在获取链路延迟时,还可以考虑到不同链路类型对应的链路处理延迟。实现方式可以为:根据链路类型获取对应的链路处理延迟以及信号处理速率,根据信号处理速率和链路长度获取对应的传输延迟,根据链路处理延迟和传输延迟确定各个设备之间的链路延迟。
其中,作业调度系统中可以存储各个链路类型对应的链路处理延迟,如光纤进行光电转换的链路处理延迟为0.1us,而铜缆无需进行光电转换,因此铜缆的链路处理延迟可以为0。对于传输延迟,其可以是预先存储在作业调度系统中的,这样可以直接通过查找来获得对应的传输延迟。或者也可以根据链路类型可先获得对应的信号处理速率,然后将信号传输速率和链路长度进行相乘而计算出的,然后可以将链路处理延迟和传输延迟相加即可获得链路延迟,或者将链路处理延迟和传输延迟取平均值作为链路延迟。
下面给出计算获得链路延迟的一种计算公式:
其中,K表示通信路径上的链路数量,如通信路径N1->SW1->SW5->SW2->N3包括四条链路,即K=4,Latency表示链路延迟,Tsw
在上述实现过程中,在获得链路延迟时,考虑到链路处理延迟和传输延迟,从而可获得更准确的链路延迟。
下面针对解析计算集群所形成的网络结构获得通信路径的过程进行说明。
获得各个计算节点之间的通信路径的方式可以为:遍历计算集群所形成的网络结构,解析获得网络结构中各个设备的设备信息以及各个设备之间的连接信息,各个设备包括转发设备和计算节点,然后根据各个设备的设备信息以及各个设备之间的连接信息,获取各个计算节点之间的通信路径。
具体地,作业调度系统可以先对计算集群所形成的网络结构进行解析,以构建计算集群的网络拓扑结构。在拓扑发现过程中,首先指定一个头节点(调度程序所在的节点),然后遍历网络,搜索全部的网络设备,识别设备的类型是交换机还是计算节点,然后将识别出来的设备信息添加至设备数组,具体过程如图4所示。具体实现过程可以为:首先通过函数check_topop->device_head()负责检测调度程序所在的节点信息,将其作为头节点;然后通过函数check_topop从头节点开始对各个设备进行搜索,遍历全部网络for_all_devices(check_topop,device):返回每个设备的相关信息(设备名称,GUID等);之后,再遍历每个节点的全部端口,for(i=start_port;i<=end_port;i++)将节点的全部邻居添加到连接关系列表:status=sm_setup_node(head_topop,&preDefTopology,device,portp,path,cable_type,cable_length);检测每个端口连接的链路类型,返回cable_type;检测每个端口连接的链路长度,返回cable_length。再通过函数setup_device()调用→函数device_Create()建立设备信息,根据设备信息可识别是交换机设备还是计算节点;再调用discover_device_port()函数对发现的设备进行坐标赋值和命名,构成FabricDevice,并将其加入Fabric拓扑;最后,调用函数build_device_array()来构建设备数组,将全部网络设备映射到设备数组,即可完成拓扑发现。
在网络拓扑结构的构建过程中,可以基于上述获得的设备数组,然后再遍历网络结构,梳理出各个设备之间的连接关系,以交换机为基础单位,构建每个交换机的连接关系列表,包括交换机名称、对端设备类型、端口好、链路类型、链路长度等下,以供作业调度系统进行拓扑结构解析,构建的连接关系列表如下表1所示。
表1
可以理解地,各个设备的设备信息可以包括设备的名称、类型等信息,各个设备之间的连接信息可以采用上述表中的信息所示,包括对端设备名称、对端设备类型、连接的端口、链路类型、链路长度等信息。
在获得上述表中的信息后,作业调度系统可以根据上述表中的信息来解析获得各个设备之间的连接关系,进而获得每两个计算节点之间的通信路径。如图5所示的采用胖树拓扑结构的数据中心平面布局示意图,由于场地限制,集群会分为多个不同的计算柜组(Gomputing Group),各个接入层交换机位于对应的计算柜组内部,核心交换机(Core SW)集中放置于交换机柜内部。实际部署时,各个计算柜组到核心交换机的走线距离是不同的,出于成本和性能的考虑,实际部署会根据需求尽量选择最短的线路类型来部署。因此,对于实际数据中心,可能会存在20米、30米或100米的光纤线缆(AOC)。这样作业调度系统就可以得到具有最小链路距离的计算节点,如图5中,各个计算柜组连接到核心交换机的光纤链路的长度是随着实际部署和走线距离而不同的,距离核心交换机比较近的光纤距离只需10米,而较远的则需要50米光纤,所以作业调度系统可以根据计算需求,找到具有最佳通信局部性的计算节点进行分配,以最大可能提高计算效率。
作业调度系统会根据连接关系列表,对网络结构进行解析,遍历全部网络。定义从一个计算节点到另一计算节点通信需要经历K条链路,将这K条链路的链路信息组合即可获得这两个计算节点之间的通信路径。若这K条链路的链路类型都是相同时,则在上述计算传输延迟时,可以先获取总的链路距离,然后乘以信号传输速率即可获得传输延迟,其总的链路距离的计算公式如下所示:
其中,D表示总的链路距离,K表示链路条数,L
在上述实现过程中,通过分析网络结构中各个设备的设备信息和连接信息,如此可获得更准确更全面的通信路径。
在一些实施方式中,为了便于计算链路延迟,还可以根据上述链路距离计算公式,通过遍历全部的通信路径,获得各个计算节点之间的链路距离,并构建链路距离矩阵进行存储,如下表2所示。
表2
这样在计算传输延迟时,可以通过查询表2来获得各条链路的链路长度,如可通过查询各条链路两端的设备信息来查表2中该两端设备对应的链路长度。这样可以通过上述方式快速计算出各个计算节点之间的通信延迟,或者计算出各个设备之间的通信延迟,为了便于快速获得通信延迟,可以构建通信延迟矩阵,如下表3所示,表3中为各个计算节点之间的通信延迟。
表3
这样在选择目标计算节点时,可以对表3进行遍历,然后按照通信延迟由小到大来选择(排除0,因为0是两个相同的计算节点之间的通信延迟),如目前表3中通信延迟最小的为1.4,则可以先选择通信延迟为1.4的计算节点,有0x0001、0x0002,将该两个计算节点作为目标计算节点,然后继续选取通信延迟为1.6对应的计算节点作为目标计算节点,直至所选取的目标计算节点达到所需的计算节点数为止。
所以,按照该方式所选取用于执行目标作业的目标计算节点之间的通信延迟是较小的,如此可以选取具有最低通信延迟的计算节点来进行分配,从而可以提高执行作业的效率,提升计算集群的计算性能。
在一些实施方式中,作业调度系统若是在接收到多个目标作业时,为了实现对多个目标作业进行最优分配,可以预先为各个作业设置执行优先级,执行优先级高的作业优先分配,执行优先级低的作业后分配。所以在选取用于执行作业的目标计算节点时,可以先获取每个目标作业对应的执行优先级,然后按照执行优先级由大到小的顺序依次为各个目标作业选取对应的目标计算节点,其中,在每次选取一个目标作业对应的目标计算节点时,在当前未被选为目标计算节点的计算节点中按照通信延迟由小到大的顺序选取。
其中,在预先为各个作业配置执行优先级时,可以依据各个作业对通信延迟的敏感程度来配置,如气象预测、地震预测、AI应用、5G应用等作业对通信延迟比较敏感,这样可以为这些作业设置高执行优先级,在进行作业分配时,可以优先对这些作业进行分配,以尽量提供具有最小通信延迟的计算资源,以获得最佳的计算性能。作业调度系统中可预先存储有各个作业对应的执行优先级(如预先为各个作业打上执行优先级标识),作业调度系统在获得多个目标作业后,通过查找可获取到每个目标作业对应的执行优先级。
或者,在一些实施方式中,作业调度系统可以通过获取各个目标作业的作业类型,然后根据作业类型来确定每个目标作业对应的执行优先级,如某些类型的作业对通信延迟敏感度较高,则其执行优先级较高,如此也可获得各个目标作业的执行优先级,可以理解地,作业类型不同的作业其对应的执行优先级可以相同或不同。或者作业调度系统中可存储有各种作业类型对应的执行优先级,这样作业调度系统可以先分析各个目标作业的作业类型,然后可根据作业类型查找获得各个目标作业对应的执行优先级。
在分配多个目标作业时,可以先将多个目标作业按照执行优先级进行排序,例如,有3个目标作业,如果目标作业1的执行优先级最高,目标作业2的执行优先级次之,目标作业3的执行优先级最低,此时可以先对目标作业1进行分配,假如此时计算集群中包含有400个可执行作业分配的空闲计算节点,这400个计算节点目前均可执行作业,假如目标作业1所需的计算节点数为40个,则可先从这400个计算节点中按照通信延迟由小到大的顺序选择40个计算节点作为目标计算节点,用于执行目标作业1,然后可将目标作业1分配到这40个计算节点上。然后分配目标作业2,若目标作业2所需的计算节点数为30个,此时剩余未被选为目标计算节点的数量为360个,则从剩余的360个计算节点中按照通信延迟由小到大的顺序选择30个计算节点作为执行目标作业2的目标计算节点。然后继续从剩余的330个计算节点中按照通信延迟由小到大的顺序选择用于执行目标作业3的计算节点。按照该方式进行作业分配,从而可以为执行优先级高的作业分配通信延迟较低的计算节点,以确保这些作业的执行效率。
而针对执行优先级相同,且类型相同的作业,可以对这些作业尽量选取通信距离一致的计算节点,保证平均通信延迟一致,避免由于通信距离的不同而导致返回计算结果不同步,降低通信效能。例如,有作业1-作业5的执行优先级都相同,但是作业1和作业4都是通信密集型作业,作业2、作业3和作业5都是计算密集型作业,由于这两个类型的作业对通信延迟敏感程度相同,所以可以为不同类型相同执行优先级的作业打上紧急优先级标签,如通信密集型作业一般比计算密集型作业紧急,所以其紧急优先级高。这样作业调度系统在进行作业分配时,可以优先为作业1和作业4分配通信延迟低的一些计算节点,然后再为作业2、作业3和作业5分配。在为作业1和作业4时,可以随意选择优先为哪个作业分配,或者还可以基于其他一些情况进行更细化的优先级设定,以此来决定分配顺序。如执行作业1所需的计算节点数为30,执行作业4所需的计算节点数为40,此时可以先为作业1按照通信延迟由小到大的顺序选择30个目标计算节点,然后在剩余未被选择的计算节点中,按照通信延迟由小到大的顺序为作业4选择40个目标计算节点,这样可使得相同类型的作业所选择的目标计算节点之间的通信延迟尽可能相差不大,以确保计算节点在并行执行作业后,返回的计算结果尽可能同步。
在上述实现过程中,基于作业的执行优先级来依次为作业选择目标计算节点,这样可以使得执行优先级高的作业通过通信延迟较小的目标计算节点来执行,以尽可能确保对通信延迟敏感的作业的计算效率。
为了体现本申请的作业分配方法所达到的提升计算性能的效果,将本申请实施例提供的作业分配方法应用到实际超算中心的高性能互连网络环境进行实际对比测试,采用分子动力学软件GROMACS,在240个计算节点的规模下,针对不同AOC光纤长度的计算节点进行对比测试。测试结果如下表4和图6所示,图6中的纵坐标是测试时间,单位秒。相比于现有的作业分配方法(普通调度),采用本申请的作业分配方法(本发明调度)的测试时间有明显的性能提升,而且光纤通信距离越短,性能加速比越高,充分说明了根据通信延迟进行作业分配带来的性能提升。
表4
请参照图7,图7为本申请实施例提供的一种作业分配装置200的结构框图;该装置200可以是电子设备上的模块、程序段或代码。应理解,该装置200与上述图2方法实施例对应,能够执行图2方法实施例涉及的各个步骤,该装置200具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
可选地,所述装置200包括:
节点数获取模块210,用于获取执行目标作业所需的计算节点数;
通信延迟获取模块220,用于获取计算集群中的各个计算节点之间的通信延迟,所述通信延迟为根据各个计算节点之间的通信路径的链路信息确定的;
节点选取模块230,用于按照所述通信延迟由小到大的顺序选取用于执行所述目标作业的目标计算节点,直至所选取的所述目标计算节点的数量达到所述计算节点数;
作业分配模块240,用于将所述目标作业分配至所述目标计算节点上执行。
可选地,所述通信延迟获取模块220,用于获取所述计算集群所形成的网络结构中各个计算节点之间的通信路径;解析所述通信路径上的链路信息,所述链路信息包括所述通信路径上的各个转发设备信息、相互连接的设备之间的链路类型和链路长度;根据所述链路信息获取各个计算节点之间的通信延迟。
可选地,所述通信延迟获取模块220,用于根据所述各个转发设备信息确定各个转发设备对应的设备转发延迟;基于所述链路类型和所述链路长度确定各个设备之间的链路延迟;根据所述设备转发延迟和所述链路延迟确定各个计算节点之间的通信延迟。
可选地,所述通信延迟获取模块220,用于根据所述链路类型获取对应的链路处理延迟以及信号处理速率;根据所述信号处理速率和所述链路长度获取对应的传输延迟;根据所述链路处理延迟和所述传输延迟确定各个设备之间的链路延迟。
可选地,所述通信延迟获取模块220,用于遍历所述计算集群所形成的网络结构,解析获得所述网络结构中的各个设备的设备信息以及各个设备之间的连接信息,所述各个设备包括转发设备和计算节点;根据各个设备的设备信息以及各个设备之间的连接信息,获取各个计算节点之间的通信路径。
可选地,在所述目标作业为多个时,所述节点选取模块230,用于获取每个目标作业对应的执行优先级;按照所述执行优先级由大到小的顺序依次为各个目标作业选取对应的目标计算节点,其中,在每次选取一个目标作业对应的目标计算节点时,在当前未被选为目标计算节点的计算节点中按照通信延迟由小到大的顺序选取。
可选地,所述节点选取模块230,用于获取每个目标作业的作业类型;根据所述作业类型确定每个目标作业对应的执行优先级。
需要说明的是,本领域技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再重复描述。
本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,执行如图2所示方法实施例中电子设备所执行的方法过程。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:获取执行目标作业所需的计算节点数;获取计算集群中的各个计算节点之间的通信延迟,所述通信延迟为根据各个计算节点之间的通信路径的链路信息确定的;按照所述通信延迟由小到大的顺序选取用于执行所述目标作业的目标计算节点,直至所选取的所述目标计算节点的数量达到所述计算节点数;将所述目标作业分配至所述目标计算节点上执行。
综上所述,本申请实施例提供一种作业分配方法、装置、电子设备及可读存储介质,通过获取各个计算节点之间的通信延迟,然后将作业按照通信延迟由小到大的顺序依次分配给对应的计算节点,这样可以使得执行作业的计算节点之间的通信延迟尽可能是比较小的,即可有提高计算效率,提升计算集群的计算性能。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 作业分配方法、装置、电子设备及可读存储介质
- 作业分配方法、装置、电子设备及可读存储介质