CN117234733A - 一种分布式***任务分配方法、***、存储介质及设备 - Google Patents
一种分布式***任务分配方法、***、存储介质及设备 Download PDFInfo
- Publication number
- CN117234733A CN117234733A CN202311270711.6A CN202311270711A CN117234733A CN 117234733 A CN117234733 A CN 117234733A CN 202311270711 A CN202311270711 A CN 202311270711A CN 117234733 A CN117234733 A CN 117234733A
- Authority
- CN
- China
- Prior art keywords
- nodes
- resource
- ros2
- service
- tasks
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 136
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 238000004891 communication Methods 0.000 claims abstract description 95
- 238000004364 calculation method Methods 0.000 claims abstract description 27
- 238000012360 testing method Methods 0.000 claims abstract description 26
- 238000013439 planning Methods 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 59
- 230000002159 abnormal effect Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 8
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 230000001934 delay Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000032683 aging Effects 0.000 claims description 4
- 238000012790 confirmation Methods 0.000 claims description 3
- 238000005457 optimization Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000002955 isolation Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供了一种分布式***任务分配方法、***、存储介质及设备,方法包括:根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化;将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度;将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时;针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务;根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
Description
技术领域
本发明涉及机器人技术领域,尤其涉及机器人操作***的分布式***任务分配技术领域,具体涉及一种基于ROS2的分布式***任务分配方法、***、存储介质及设备。
背景技术
ROS2(ROS,Robot Operating System,机器人操作***))是一个可以用于帮助开发者进行机器人应用软件开发的软件开发工具包,由于实时性高、免费开源、支持分布式计算通信等优点,受到了工业界及学术界的广泛好评,如今已广泛应用于众多领域,如工业机器人、服务机器人、自动驾驶等。
在基于ROS2的分布式计算***中,负载均衡是指在多个计算节点之间均匀分配工作负载,以提高***的可靠性和实时性。通过负载均衡,各个计算设备均能够实现高效率资源利用,避免了资源空置和资源利用过载情况发生。
目前基于ROS2的分布式***任务分配方法中,主要存在以下缺点:
1、粗粒度任务级别的分配存在资源抢占问题,导致关键任务的实时性和稳定性不能保证,从而导致***风险
2、任务分配方法中,由于任务分配不合理导致分布式***中整体任务延时较高,不能满足业务实时性要求。
因此,针对现有技术中的上述缺点、问题,需要提出一种优化的分布式***任务分配方法,解决粗粒度任务级别的分配存在资源抢占问题,避免关键任务的实时性和稳定性得不到保证,从而导致***风险,同时解决由于任务分配不合理导致分布式***中整体任务延时较高导致不能满足业务实时性要求等问题。
发明内容
有鉴于此,本发明的目的在于提出一种改进的尤其基于ROS2的分布式***任务分配方法、***、存储介质及设备,从而解决现有技术中前文所描述的问题。
基于上述目的,一方面,本发明提供了一种分布式***任务分配方法,其中该方法包括以下步骤:
根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化;
将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度;
将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时;
针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务;
根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
在根据本发明的分布式***任务分配方法的一些实施例中,根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化进一步包括:
在分布式***的计算设备层进行不同任务的单元测试,依据测试结果,明确各个任务的CPU利用率、内存使用量、带宽使用需求。
在根据本发明的分布式***任务分配方法的一些实施例中,将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度进一步包括:
基于ROS2不同的应用任务组成计算图,所述计算图描述ROS2节点间的通信和数据流向,针对所述计算图进行节点的聚类,聚类的类别与分布式***的计算节点数量相同,并将聚类后不同类别的ROS2节点分配在不同的计算设备上。
在根据本发明的分布式***任务分配方法的一些实施例中,将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时进一步包括:
将不同节点通信延时高于节点时效阈值的节点使用ROS2容器将节点进行组合,使得节点间通信配置为进程内通信。
在根据本发明的分布式***任务分配方法的一些实施例中,将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时进一步包括:
对于不同设备不同进程的通信延时高于设备时效阈值的节点,将不同的节点分配到同一设备下,使得节点间通信配置为相同设备内的节点通信。
在根据本发明的分布式***任务分配方法的一些实施例中,针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务进一步包括:
根据资源密集程度,将第一资源密集型类别与CPU的第一部分核绑定,将第二资源密集型类别与CPU的第二部分核绑定。
在根据本发明的分布式***任务分配方法的一些实施例中,针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务进一步包括:
通过控制组群将设备的CPU、内存进行分区,以划分为两个资源部分,第一资源部分配置为用于规划类别任务,第二资源部分配置为用于控制类别任务。
在根据本发明的分布式***任务分配方法的一些实施例中,为执行线程预设执行时长;
监控执行线程的执行情况并获取执行线程对应的预设执行时长;
若在预设执行时长对应的执行时长结束时未接收到返回的执行线程执行完成的确认信息则发送超时告警信息;
超时告警信息用于提示用户是否终止目标工作线程;以及
获取分布式设备发送的异常告警日志并根据异常告警日志统计每个统计周期的告警概率;
根据每个统计周期的告警概率生成告警概率曲线,告警概率曲线为该统计周期内的异常告警的总数与该统计周期对应的时长之间的比值。
本发明的另一方面,还提供了一种分布式***任务分配***,其中包括:
设备层模块,所述设备层模块配置为根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化;
任务层模块,所述任务层模块配置为将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度;
节点层模块,所述节点层模块配置为将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时;
进程层模块,所述进程层模块配置为针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务;
线程层模块,所述线程层模块配置为根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
本发明的再一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被执行时实现上述任一项根据本发明的分布式***任务分配方法。
本发明的又一方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任一项根据本发明的分布式***任务分配方法。
本发明至少具有以下有益技术效果:基于本发明的方法,有别于现有分布式任务分配方法,使用粗细粒度两个阶段任务划分,同时划分过程考虑了通信延时、计算延时等因素,通过该种方式,能够有效保证分布式计算***中的负载均衡,保证了关键任务的实时性以及可靠性,同时计算资源能够得到充分且有效利用。根据本发明的方法能够有效应用于基于ROS2的分布式计算***领域,在自动驾驶、机器人等边缘应用中,具有较高的实用价值。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
在图中:
图1示出了根据本发明的分布式***任务分配方法的实施例的示意性框图;
图2示出了根据本发明的分布式***任务分配方法的实施例的示意性框图;
图3示出了根据本发明的分布式***任务分配方法的实施例的示例性业务运行关系示意图;
图4示出了根据本发明的分布式***任务分配***的实施例的示意性框图;
图5示出了根据本发明的实现分布式***任务分配方法的计算机可读存储介质的实施例的示意图;
图6示出了根据本发明的实现分布式***任务分配方法的计算机设备的实施例的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备固有的其他步骤或单元。
本发明的目的在于提供一种基于ROS2的分布式***任务分配计算方法及***,以解决上述背景技术中提到的技术问题,提高机器人***开发及管理中的使用效率。
为实现上述目的,本发明主要从设备层、任务层、节点层、进程层、线程层五个层面详细介绍分布式***中任务分配的方法,具体如下:
1、设备层:计算设备是任务分配的计算载体,设备的CPU、内存、存储、网络带宽是进行任务计算与分配的重要衡量单元。基于软硬协同优化的任务分配设计是首要环节,在计算设备层进行不同任务的单元测试,依据测试结果,明确各个任务的CPU、内存、带宽等需求。
2、任务层:任务层主要考虑设备的计算能力与任务的计算需求的平衡,目标是将任务在分布式的不同设备上进行首次粗粒度分配。ROS2不同的应用任务组成了计算图,计算图描述了ROS2节点间的通信和数据流向,针对计算图进行节点的聚类,聚类的类别与分布式***的计算节点数量相同。将聚类后不同类别的ROS2节点分配在不同的计算设备上,实现首次粗粒度任务分配。
3、节点层:ROS2节点是任务的基本执行单元,ROS2节点间通信时间与节点通信数据量强相关,因此节点间的通信时延是一个重要考虑因素。节点间的通信延时分为三类,同一进程内的节点间通信、相同设备不同进程的节点间通信、不同设备不同进程的节点间通信。针对具体的实际业务需求和任务分配需求,基于任务层的分配结果,主要考虑以下优化方法:1)对于不同进程节点通信延时较高的节点,使用ROS2容器方式,将节点组合为容器,使之通信方式变为进程内通信;2)对于不同设备不同进程的通信延时较高节点,将不同的节点分配到同一设备下,使之通信方式变为相同设备内的节点通信。通过上述两种方式,能够优化节点的通信时延,从而提升***实时性。
4、进程层:进程是执行任务单元的最小单位,通过进程的资源隔离和CPU核绑定,能够实现进程的可靠性和实时性运行。首先进行设备内的资源分组,考虑设备内的进程的资源使用和抢占情况,针对重要节点可以使用cgroup(control groups,控制组群)进行资源的分配,从而控制和保证相关进程资源使用。在此基础上,使用CPU核绑定,将进程绑定在特定的CPU核上,以减少进程在CPU核之间的调度和切换。综合使用上述两种方式,能够保证在单个设备上的进程资源使用,实现设备内的进程级别的资源分配和调度,保证了***的实时性需求。
5、线程层:单个进程中的多个线程可以通过分配优先级实现线程调度顺序和优先级。任务的不同ROS2节点由于其不同功能属性和计算属性,因此可以配置线程的优先级,依据线程的重要性和实时性要求,同时在保证线程安全性、稳定性前提下,对线程进行优先级配置。通过使用ROS2提供的rclcpp库,可以设置线程的优先级。
基于此,本发明的第一方面,提供了一种分布式***任务分配方法100。图2示出了根据本发明的分布式***任务分配方法的实施例的示意性框图。在如图1所示的实施例中,该方法包括:
步骤S110:根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化;
步骤S120:将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度;
步骤S130:将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时;
步骤S140:针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务;
步骤S150:根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
总的来说,针对现有技术中存在的上述问题,根据本发明将在节点层、进程层以及线程层分别进行优化。为此,首先需要为在这三层的优化进行相应的准备工作。因此,在步骤S110中,针对作为计算载体的设备层,出于软硬协同优化的目的,在计算设备层进行不同任务的单元测试,即根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化。
随后,针对任务层考虑设备的计算能力与任务的计算需求的平衡,在步骤S120中将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别。步骤S120的目标是将任务在分布式的不同设备上进行首次粗粒度分配。在完成首次粗粒度分配的同时,还基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度,为随后在节点层、进程层以及线程层进行的进一步优化提供相应的依据。
在节点层,各个节点是任务的基本执行单元。在实现首次粗粒度任务分配的基础上,考虑到节点间的通信,通信时间与节点通信数据量强相关,因此节点间的通信时延成为这一项影响任务分配的重要因素。因此,针对节点层、尤其相同设备不同进程的节点间通信和不同设备不同进程的节点间通信,在步骤S130中,将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时。
而在进程层,进程是执行任务单元的最小单位。在实现首次粗粒度任务分配的基础上,考虑设备内的进程的资源使用和抢占及运行中进程在核之间的调度和切换的情况,通过进程的资源隔离和CPU核绑定进一步优化进程的可靠性和实时性运行。为此,在步骤S140中,针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务。
最后在线程层,单个进程中的多个线程可以通过分配优先级实现线程调度顺序和优先级,依据线程的重要性和实时性要求,同时在保证线程安全性、稳定性前提下,对线程进行优先级配置。因此,在步骤S150中根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
至为不同类别的执行线程分配线程优先级的基础上,还可以为执行线程预设执行时长;随后监控执行线程的执行情况并获取执行线程对应的预设执行时长;若在预设执行时长对应的执行时长结束时未接收到返回的执行线程执行完成的确认信息,则发送超时告警信息;超时告警信息用于提示用户是否终止目标工作线程;以及获取分布式设备发送的异常告警日志并根据异常告警日志统计每个统计周期的告警概率;根据每个统计周期的告警概率生成告警概率曲线,告警概率曲线为该统计周期内的异常告警的总数与该统计周期对应的时长之间的比值。
服务器根据统计异常告警日志的时间可以统计每个统计周期内异常告警日志的总数,统计周期可以是以小时数进行,具体可根据实际情况进行设置。在一个实施例中,可以以1小时为1个统计周期,服务器根据异常告警日志的创建时间可以确定每一条异常告警的统计周期,根据每个统计周期内的异常告警的总数与统计周期对应的时长计算每个统计周期的告警概率。一个统计周期的告警概率为该统计周期内的异常告警的总数与该统计周期对应的时长之间的比值。告警概率曲线可以记录每个统计周期的告警概率,直观地展现制证异常的高峰期。还可以根据告警概率曲线预测同期的告警概率。同期的告警概率是指相同时间段的告警概率。
在根据本发明的分布式***任务分配方法100的一些实施例中,步骤S110根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化进一步包括:在分布式***的计算设备层进行不同任务的单元测试,依据测试结果,明确各个任务的CPU利用率、内存使用量、带宽使用需求。具体来说,作为任务分配的计算载体,设备的CPU、内存、存储、网络带宽是进行任务计算与分配的重要衡量单元。出于软硬协同优化的目的,在计算设备层进行不同任务的单元测试,依据测试结果,明确各个任务的CPU利用率、内存使用量、带宽使用需求,以便对各个业务的计算需求进行量化,从而有针对性地进行节点层、进程层、线程层的优化。优选地,根据设备和各个业务进行benchmark测试,评测每个业务的CPU利用率、内存使用量、带宽使用需求等情况。
在根据本发明的分布式***任务分配方法100的一些实施例中,步骤S120将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度进一步包括:基于ROS2不同的应用任务组成计算图,所述计算图描述ROS2节点间的通信和数据流向,针对所述计算图进行节点的聚类,聚类的类别与分布式***的计算节点数量相同,并将聚类后不同类别的ROS2节点分配在不同的计算设备上。具体地,任务层主要考虑设备的计算能力与任务的计算需求的平衡,目标是将任务在分布式的不同设备上进行首次粗粒度分配。ROS2不同的应用任务组成了计算图,该计算图描述了ROS2节点间的通信和数据流向。在此,针对计算图进行节点的聚类,聚类的类别与分布式***的计算节点数量相同。将聚类后不同类别的ROS2节点分配在不同的计算设备上,由此实现首次粗粒度任务分配。
在根据本发明的分布式***任务分配方法100的一些实施例中,步骤S130将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时进一步包括:将不同节点通信延时高于节点时效阈值的节点使用ROS2容器将节点进行组合,使得节点间通信配置为进程内通信。此外,步骤S130将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时进一步包括:对于不同设备不同进程的通信延时高于设备时效阈值的节点,将不同的节点分配到同一设备下,使得节点间通信配置为相同设备内的节点通信。
具体来说,ROS2节点是任务的基本执行单元,ROS2节点间通信时间与节点通信数据量强相关,因此节点间的通信时延是需要考虑的一个重要因素。节点间的通信延时分为三类,同一进程内的节点间通信、相同设备不同进程的节点间通信、不同设备不同进程的节点间通信。在此,针对后两种节点间通信,即相同设备不同进程的节点间通信和不同设备不同进程的节点间通信,基于任务层的分配结果,主要考虑以下优化方法:1)对于不同进程节点通信延时较高的节点,使用ROS2容器方式,将节点组合为容器,使之通信方式变为进程内通信;2)对于不同设备不同进程的通信延时较高节点,将不同的节点分配到同一设备下,使之通信方式变为相同设备内的节点通信。通过上述两种方式,能够优化节点的通信时延,从而提升***实时性。
进一步地,在根据本发明的分布式***任务分配方法100的一些实施例中,步骤S140针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务进一步包括:步骤S141:根据资源密集程度,将第一资源密集型类别与CPU的第一部分核绑定,将第二资源密集型类别与CPU的第二部分核绑定。此外,在一些实施例中,步骤S140针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务进一步包括:步骤S142:通过控制组群将设备的CPU、内存进行分区,以划分为两个资源部分,第一资源部分配置为用于规划类别任务,第二资源部分配置为用于控制类别任务。
具体来说,针对进程层的优化主要在于进程的资源隔离和CPU核绑定,以实现进程的可靠性和实时性运行。因此,一方面使用CPU核绑定,将进程绑定在特定的CPU核上,以减少进程在CPU核之间的调度和切换。因此,在步骤S141中,根据资源密集程度,将第一资源密集型类别与CPU的第一部分核绑定,将第二资源密集型类别与CPU的第二部分核绑定。例如,将第一资源密集型类别绑定在CPU的0~n核,将全部或部分第二资源密集型类别绑定在CPU的n+1~m核(n、m均为正整数,且小于或等于CPU总核数),能够避免进程间的资源抢占,保证***的稳定性和实时性。另一方面采用进程的资源隔离针对重要节点可以使用进行资源的分配,从而控制和保证相关进程资源使用。因此,在步骤S142中,通过控制组群将设备的CPU、内存进行分区,以划分为两个资源部分,第一资源部分配置为用于规划类别任务,第二资源部分配置为用于控制类别任务。例如,资源隔离层面,将设备的CPU、内存进行分区,划分为两部分,一部分进行规划类别任务,一部分进行控制类别任务,使用该步骤能够保证控制类别的稳定实时运行。
综合根据本发明的前述实施例,本发明提出了一种基于ROS2的分布式***任务分配计算方法,实现了在基于ROS2的分布式***中,将多个应用任务在分布式***中进行任务分配的功能,实现了负载均衡目标,且***任务的可靠性与实时性得到保证。相比于手动在分布式***中手动进行任务分配的方法,本发明所提出的方法更加高效易用、任务分配粒度更高,同时本发明所提出的方法能够在更细粒度包括进程级、线程级进行任务的更细粒度分配优化,实现资源隔离,负载均衡,同时保证了关键任务的实时运行。
为了对本发明的方法及原理进行更好的说明,以下将结合自动驾驶框架Autoware.Universe的实施例对本发明的方法做进一步详细描述。
自动驾驶框架Autoware.Universe是一个面向自动驾驶的软件开源框架,包含了控制、感知、规划、定位等自动驾驶业务模块,兼具仿真测试平台,可供开发和研究人员进行自动驾驶软件开发和测试。Autoware.Universe在异构分布式计算平台运行,需要将该框架的多个业务和任务分配在各个计算设备上,实现高效、稳定的分布式自动驾驶计算***。在本实施例中,使用的异构分布式计算平台主要由两部分构成:X86架构服务器1台,ARM架构边缘计算设备4台,设备具体信息如下表1所示:
表1:
本实施例实施过程如下:
Autoware.Universe的业务间的通信关系如图3所示,主要分为传感器、感知、控制、定位、规划等。首先根据设备和各个业务进行benchmark测试,评测每个业务的CPU利用率、内存及网络带宽使用等情况,对每个业务的计算需求进行量化的评估。
其次,根据Autoware.Universe业务,将业务中的各个ROS2节点进行聚类,依据通信关系将ROS2业务节点划分为5个类别:***、感知、传感器、定位、规控,实现粗粒度的任务划分。
粗粒度的划分能够将业务进行有效分类,但是仍存在较多优化空间。对于感知和传感器节点,其节点间的通信数据量较大,ROS2节点如果分别计算,则其通信延时会大幅增加,通过将相关节点放到ROS2容器中,节点间通信方式优化为进程内通信,通信延时则会大幅降低。同时,若将传感器节点和感知节点分别分配到两个orin(芯片)上,则会因其数据传输量大且跨设备通信,导致通信延时上升,通过将感知部分节点分配到传感器节点所在设备,能够有效降低延时结果。
在进程层,主要分为资源隔离和CPU核绑定两种方法。由于传感器模块和感知模块需对激光雷达进行数据处理,会占用大量CPU资源,且该模块较为耗时,因此为了保证***的实时性,对该模块同时使用资源隔离和CPU核绑定两种方法。CPU核绑定层面,将传感器类别绑定在CPU的0-4核,将部分感知类别绑定在CPU的5-11核,能够避免进程间的资源抢占,保证***的稳定性和实时性。资源隔离层面,通过cgroup将orin的CPU、内存进行分区,划分为两部分,一部分进行规划类别任务,一部分进行控制类别任务,使用该方法能够保证控制类别的稳定实时运行。
完成粗细粒度的任务分配后,根据***中任务的重要性,需要对线程进行优先级设置,保证***中的任务执行的优先级,从而保证***中的任务的稳定性。针对Autoware.Universe自动驾驶框架,控制模块的正常执行是整个***的基线保障,因此对控制类别的执行线程设置较高的线程优先级,以此来保障***的稳定性。
依据上述步骤,在本分布式计算***中,Autoware.Universe的各个业务的任务分配结果具体如下表2所示,使用该分配方案一方面能保证***的计算延时能大幅降低,同时能够保证关键任务能够可靠性和优先运行,保证了***的实时性和稳定性。
表2:
/>
需要注意的是,上述示例旨在阐明本发明的方法的具体实施,不应被理解为根据本发明的方法仅用于自动驾驶。相反地,根据本发明的方法在任何其它合适的场景下均可得到应用,例如不仅在常规的基于ROS2的分布式计算***领域中,而且也在自动驾驶、机器人等边缘应用中。
本发明的第二方面,还提供了一种分布式***任务分配***200。图4示出了根据本发明的分布式***任务分配***200的实施例的示意性框图。如图4所示,该***包括:
设备层模块210,该设备层模块210配置为根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化;
任务层模块220,进任务层模块220配置为将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度;
节点层模块230,该节点层模块230配置为将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时;
进程层模块240,该进程层模块240配置为针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务;
线程层模块250,该线程层模块250配置为根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图5示出了根据本发明实施例提供的分布式***任务分配方法的计算机可读存储介质的示意图。如图5所示,计算机可读存储介质300存储有计算机程序指令310,该计算机程序指令310可以被处理器执行。该计算机程序指令310被执行时实现上述任意一项实施例的方法。
应当理解,在相互不冲突的情况下,以上针对根据本发明的分布式***任务分配方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的分布式***任务分配***和存储介质。
本发明实施例的第四个方面,还提供了一种计算机设备400,包括存储器420和处理器410,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例的方法。
如图6所示,为本发明提供的执行分布式***任务分配方法的计算机设备的一个实施例的硬件结构示意图。以如图6所示的计算机设备400为例,在该计算机设备中包括一个处理器410以及一个存储器420,并还可以包括:输入装置430和输出装置440。处理器410、存储器420、输入装置430和输出装置440可以通过总线或者其他方式连接,图6中以通过总线连接为例。输入装置430可接收输入的数字或字符信息,以及产生与分布式***任务分配有关的信号输入。输出装置440可包括显示屏等显示设备。
存储器420作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的资源监控方法对应的程序指令/模块。存储器420可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储资源监控方法的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器420可选包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器410通过运行存储在存储器420中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的方法。
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种分布式***任务分配方法,其特征在于,包括以下步骤:
根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化;
将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度;
将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时;
针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务;
根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
2.根据权利要求1所述的方法,其特征在于,所述根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化进一步包括:
在分布式***的计算设备层进行不同任务的单元测试,依据测试结果,明确各个任务的CPU利用率、内存使用量、带宽使用需求。
3.根据权利要求1或2所述的方法,其特征在于,所述将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度进一步包括:
基于ROS2不同的应用任务组成计算图,所述计算图描述ROS2节点间的通信和数据流向,针对所述计算图进行节点的聚类,聚类的类别与分布式***的计算节点数量相同,并将聚类后不同类别的ROS2节点分配在不同的计算设备上。
4.根据权利要求1或2所述的方法,其特征在于,所述将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时进一步包括:
将不同节点通信延时高于节点时效阈值的节点使用ROS2容器将节点进行组合,使得节点间通信配置为进程内通信;以及
对于不同设备不同进程的通信延时高于设备时效阈值的节点,将不同的节点分配到同一设备下,使得节点间通信配置为相同设备内的节点通信。
5.根据权利要求1或2所述的方法,其特征在于,所述针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务进一步包括:
根据资源密集程度,将第一资源密集型类别与CPU的第一部分核绑定,将第二资源密集型类别与CPU的第二部分核绑定。
6.根据权利要求1或2所述的方法,其特征在于,所述针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务进一步包括:
通过控制组群将设备的CPU、内存进行分区,以划分为两个资源部分,第一资源部分配置为用于规划类别任务,第二资源部分配置为用于控制类别任务。
7.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
为所述执行线程预设执行时长;
监控所述执行线程的执行情况并获取所述执行线程对应的预设执行时长;
若在所述预设执行时长对应的执行时长结束时未接收到返回的所述执行线程执行完成的确认信息,则发送超时告警信息;
所述超时告警信息用于提示用户是否终止所述目标工作线程;以及
获取所述分布式设备发送的异常告警日志并根据所述异常告警日志统计每个统计周期的告警概率;
根据每个所述统计周期的告警概率生成告警概率曲线,所述告警概率曲线为该统计周期内的异常告警的总数与该统计周期对应的时长之间的比值。
8.一种分布式***任务分配***,其特征在于,包括:
设备层模块,所述设备层模块配置为根据设备和分布式***任务的各个业务的测试情况测评各个业务的资源使用情况,以对各个业务的计算需求进行量化;
任务层模块,所述任务层模块配置为将业务中的各个ROS2节点进行聚类,根据通信关系将ROS2节点划分为多个不同类别,并基于各个业务的资源使用情况及量化的计算需求确定节点相关性并判断不同类别的资源密集程度;
节点层模块,所述节点层模块配置为将不同类别中的相关节点置于ROS2容器中和/或置于同一设备,从而降低节点间通信延时;
进程层模块,所述进程层模块配置为针对不同类别中的资源密集型类别进行CPU核绑定并将设备的资源进行划分使得各部分资源仅用于规划任务或控制任务;
线程层模块,所述线程层模块配置为根据分布式***任务的重要性和实时性需求为各个不同类别的执行线程分配线程优先级。
9.一种计算机可读存储介质,其特征在于,存储有计算机程序指令,所述计算机程序指令被执行时实现如权利要求1-7任意一项所述的分布式***任务分配方法。
10.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-7任意一项所述的分布式***任务分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311270711.6A CN117234733A (zh) | 2023-09-28 | 2023-09-28 | 一种分布式***任务分配方法、***、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311270711.6A CN117234733A (zh) | 2023-09-28 | 2023-09-28 | 一种分布式***任务分配方法、***、存储介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117234733A true CN117234733A (zh) | 2023-12-15 |
Family
ID=89087728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311270711.6A Pending CN117234733A (zh) | 2023-09-28 | 2023-09-28 | 一种分布式***任务分配方法、***、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117234733A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472595A (zh) * | 2023-12-27 | 2024-01-30 | 苏州元脑智能科技有限公司 | 资源分配方法、装置、车辆、电子设备以及存储介质 |
-
2023
- 2023-09-28 CN CN202311270711.6A patent/CN117234733A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472595A (zh) * | 2023-12-27 | 2024-01-30 | 苏州元脑智能科技有限公司 | 资源分配方法、装置、车辆、电子设备以及存储介质 |
CN117472595B (zh) * | 2023-12-27 | 2024-03-22 | 苏州元脑智能科技有限公司 | 资源分配方法、装置、车辆、电子设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291545B (zh) | 计算集群中多用户的任务调度方法及设备 | |
CN108632365B (zh) | 服务资源调整方法、相关装置和设备 | |
CN111427681A (zh) | 边缘计算中基于资源监控的实时任务匹配调度***和方法 | |
CN111625331B (zh) | 任务调度方法、装置、平台、服务器及存储介质 | |
CN109995669B (zh) | 分布式限流方法、装置、设备及可读存储介质 | |
CN111464659A (zh) | 节点的调度、节点的预选处理方法、装置、设备及介质 | |
CN107193652A (zh) | 容器云环境中流数据处理***的弹性资源调度方法及*** | |
CN115543577B (zh) | 基于协变量的Kubernetes资源调度优化方法、存储介质及设备 | |
US20220138012A1 (en) | Computing Resource Scheduling Method, Scheduler, Internet of Things System, and Computer Readable Medium | |
US20160203026A1 (en) | Processing a hybrid flow associated with a service class | |
CN117234733A (zh) | 一种分布式***任务分配方法、***、存储介质及设备 | |
Hu et al. | Distributed computer system resources control mechanism based on network-centric approach | |
US20190280945A1 (en) | Method and apparatus for determining primary scheduler from cloud computing system | |
WO2024021489A1 (zh) | 一种任务调度方法、装置及Kubernetes调度器 | |
CN112015549B (zh) | 一种基于服务器集群的调度节点的选择抢占方法及*** | |
CN114844791B (zh) | 基于大数据的云服务自动管理分配方法、***及存储介质 | |
CN113168344A (zh) | 通过提高集群多样性实现的分布式资源管理 | |
Shukla et al. | Fault tolerance based load balancing approach for web resources in cloud environment. | |
CN116962532A (zh) | 集群任务调度方法、装置、计算机设备及存储介质 | |
Beltrán et al. | How to balance the load on heterogeneous clusters | |
CN114443293A (zh) | 一种大数据平台的部署***及方法 | |
CN114090201A (zh) | 资源调度方法、装置、设备及存储介质 | |
Liu et al. | Scheduling tasks with Markov-chain based constraints | |
CN117971499B (zh) | 资源配置方法、装置、电子设备和存储介质 | |
CN113391928B (zh) | 硬件的资源分配方法、装置、电子设备及存储介质 |
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 |