CN109254857B - 一种共享内存的调整方法、装置、设备和介质 - Google Patents

一种共享内存的调整方法、装置、设备和介质 Download PDF

Info

Publication number
CN109254857B
CN109254857B CN201811003388.5A CN201811003388A CN109254857B CN 109254857 B CN109254857 B CN 109254857B CN 201811003388 A CN201811003388 A CN 201811003388A CN 109254857 B CN109254857 B CN 109254857B
Authority
CN
China
Prior art keywords
size
message
storage space
space
message storage
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.)
Active
Application number
CN201811003388.5A
Other languages
English (en)
Other versions
CN109254857A (zh
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201811003388.5A priority Critical patent/CN109254857B/zh
Publication of CN109254857A publication Critical patent/CN109254857A/zh
Application granted granted Critical
Publication of CN109254857B publication Critical patent/CN109254857B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

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

本发明实施例公开了一种共享内存的调整方法、装置、设备和介质。所述方法包括:为处理任务在共享内存空间中预先分配消息存储空间;获取所述处理任务向所述消息存储空间存储的数据消息;根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整。本发明实施例可以适应变长的不同数据消息的存储需求,且合理利用共享内存空间。

Description

一种共享内存的调整方法、装置、设备和介质
技术领域
本发明实施例涉及计算机处理技术,尤其涉及一种共享内存的调整方法、装置、设备和介质。
背景技术
无人车系统是目前人工智能的一个重要的应用领域。在无人车系统中,运行着对应不同功能的多个功能模块,各个功能模块由程序实现,可以有或没有配合的硬件设备。典型的功能模块如,驾驶(Driver)模块、感知(Perception)模块和规划(Planning)模块等,例如感知模块又可细分为图像感知模块、激光点云感知模块、以及超声波感知模块等。不同的无人车系统,会由于配置的硬件设备不同,或软件功能不同,而设置不同的功能模块。
现有技术中,每个功能模块都有对应的处理任务,各处理任务负责对实时产生的各类数据进行处理,例如,感知模块的感知任务,在实时接收到采集的感知数据时就会进行处理。各处理任务之间会需要交互数据,也可称为需要传输数据消息。例如,规划模块的规划任务输出的路线数据,会作为路线消息,提供给驾驶模块的驾驶任务,从而对驾驶进行控制。输出数据消息的处理任务可称为发布任务,获取此数据消息作为输入数据的处理任务可称为订阅任务。各个处理任务之间基于各自功能确定了相互之间的发布-订阅关系。
在无人车系统中,发布任务和订阅任务是基于共享内存来实现数据消息传输的。为了保证数据消息传输的效率,一般会从共享内存空间中提前为发布任务分配一个设定大小的消息存储空间。发布任务向消息存储空间中写入数据消息,订阅任务从该消息存储空间中读出数据消息。然而,无人车系统中各处理任务需传输的数据消息的大小一般都是变长的,使得预先分配的共享内存无法正确存储长度可变的数据消息。
发明内容
本发明实施例提供一种共享内存的调整方法、装置、设备和介质,以适应变长的不同数据消息的存储需求,且合理利用共享内存空间。
第一方面,本发明实施例提供了一种共享内存的调整方法,包括:
为处理任务在共享内存空间中预先分配消息存储空间;
获取所述处理任务向所述消息存储空间存储的数据消息;
根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整。
第二方面,本发明实施例还提供了一种共享内存的调整装置,包括:
消息存储空间分配模块,用于为处理任务在共享内存空间中预先分配消息存储空间;
数据消息获取模块,用于获取所述处理任务向所述消息存储空间存储的数据消息;
存储空间大小调整模块,用于根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整。
第三方面,本发明实施例还提供了一种设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现如本发明实施例中任一所述的共享内存的调整方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的共享内存的调整方法。
本发明实施例通过在预先分配消息存储空间之后,基于消息存储空间存储的数据消息与该消息存储空间的大小关系,动态调整消息存储空间的大小,解决了现有技术中由于各处理任务需传输的数据消息的大小动态变化,使得预先分配的共享内存无法正确存储长度可变的消息的问题,可以适应变长的不同数据消息的存储需求,提高共享内存空间调整的灵活性,从而保证数据消息的正确存储和传输,同时合理利用共享内存空间,提高共享内存空间的存储资源的利用率。
附图说明
图1是本发明实施例一提供的一种共享内存的调整方法的流程图;
图2是本发明实施例二提供的一种共享内存的调整方法的流程图;
图3是本发明实施例三提供的一种共享内存的调整装置的结构示意图;
图4是本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种共享内存的调整方法的流程图,本实施例可适用于对存储数据消息的共享内存大小进行调整的情况,尤其是对无人车系统中各功能模块之间传输的数据消息所存储的共享内存的大小进行调整的情况,该方法可以由本发明实施例提供的共享内存的调整装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在车载设备中,例如无人驾驶车辆的控制设备。如图1所示,本实施例的方法具体包括:
S110,为处理任务在共享内存空间中预先分配消息存储空间。
一般来说,一个系统中会包括多个功能模块,每个功能模块对应有处理任务,功能模块可以是指软硬件配合或纯软件实现设定功能的模块,处理任务可以是指用于实现设定功能的任务,处理任务按照角色不同,可包括发布任务和订阅任务,每个处理任务可兼具这两个角色,与其他处理任务之间互为发布-订阅数据消息的关系。具体来说,处理任务可以由线程、进程、或协程等方式来承载,电子设备调度处理器来执行线程、进程、或协程,从而执行加载的处理任务。可以通过在处理任务的相应程序段中配置相应代码,来实现处理任务在数据消息发布和订阅时的操作功能。
共享内存空间可以是指被多个进程共享的物理内存,其中,进程是由一个或多个线程组成,在各线程执行对应的处理任务的过程中,可以直接对该共享内存空间进行读写,提高信息通信的效率。例如,在无人车系统中,发布任务和订阅任务是基于共享内存来实现数据消息传输的。
在本实施例中,发布任务和订阅任务分别是无人车系统中的功能模块在消息传输的过程中对应的处理任务,也即订阅任务和发布任务分别为无人车系统中的任一处理任务;无人车系统包括下述处理任务中的至少一种:至少一个图像感知任务、激光点云感知任务、规划任务和驾驶任务。
图像感知任务可以是指采集车辆周围环境的图像的任务,例如通过摄像头识别交通信号灯、交通标志、交通标线等物体以及行人;激光点云感知任务是指测量车辆与目标物体的距离,并通过点的形式记录,每个点包含有三维坐标,甚至包括颜色信息或反射强度信息,例如通过激光雷达测量车辆与交通信号灯之间的距离,规划任务可以是指为无人车规划实时行驶路线以及实时行驶行为的任务;驾驶任务可以是指控制无人车执行规划好的路线以及行为的任务,其中,行驶行为包括规避障碍物的行为。
在实现发布任务和订阅任务之间的数据消息传输之前,需要系统为各发布任务分别在共享内存空间中预先分配消息存储空间,实现不同消息存储空间彼此隔离,避免数据消息传输混乱,提高数据消息传输的可靠性。订阅任务可以根据发布任务对应的消息存储空间读取订阅的数据消息,其中,消息存储空间包括至少一个存储单元和冗余空间,各存储单元的大小可以相同,存储单元用于存储一个数据消息,该数据消息的大小小于存储单元的大小;冗余空间是一段连续的地址,用于冗余调整消息存储空间,例如,在存储单元需要更大的存储空间时,可以减少冗余空间的存储空间,并将减少的存储空间作为存储单元的存储空间。也就是说,发布任务和订阅任务实际上是通过消息存储空间中的存储单元实现数据消息传输。
其中,存储单元可以是指块存储空间block,通常存储单元的个数只能在设定范围内调整,例如5个-10个;初始的存储单元的大小一般是固定的,可以按照经验值确定,例如8k,经验值可以根据历史处理任务产生的数据消息的大小进行统计试验得到。
消息存储空间的大小实际等于每个存储单元的大小与消息存储空间中存储单元的个数的乘积,与冗余空间的大小相加得到的。
而冗余空间的大小等于设定冗余基数与冗余系数的乘积,冗余系数根据存储单元的大小来确定,其中,冗余基数通常为一个固定数值,可以根据需要进行设定。冗余系数与每个存储单元的大小有关,可选的,冗余系数与存储单元的大小block_size之间的关系可以按照如下公式确定:
block_size<64k时,冗余系数=1.2;
block_size<1M时,冗余系数=1.5;
block_size<5M时,冗余系数=1.7;
block_size<10M时,冗余系数=2.0。
在一个具体的例子中,一个消息存储空间中包含8个存储单元,且每个存储单元的大小为32k,冗余基数为100k。由于block_size为32k,即block_size小于64k,从而冗余系数为1.2,则冗余空间为100*1.2=120k。该消息存储空间的大小为8*32+120=376k。
S120,获取所述处理任务向所述消息存储空间存储的数据消息。
调整消息存储空间的大小是为了使数据消息能完整存储消息存储空间中,从而需要根据数据消息的大小确定消息存储空间调整后的大小。此外,根据数据消息的大小还可以使消息存储空间在满足数据消息的存储需求的基础上尽可能小,实现避免浪费存储空间。其中,获取数据消息的具体方式可以是通过系统内核实现。
S130,根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整。
通常,消息存储空间中的每个存储单元分别对应存储一个数据消息,一个共享内存空间存储同种类型的消息。当该消息存储空间中所有存储单元均存有数据消息时,新的数据消息将会覆盖存储时刻最小的数据消息,从而新数据消息不断迭代覆盖历史数据消息。
当数据消息的大小大于存储单元的大小时,该数据消息不能完整存入消息存储空间,从而需要调整消息存储空间大小。
或者是当数据消息的大小小于存储单元的大小时,若该数据消息远远小于存储单元的大小,实际存储单元在存储该数据消息之后,剩余存储空间没有被利用,造成存储资源浪费。
根据数据消息与消息存储空间的大小关系来调整消息存储空间的大小的具体方法可以是根据数据消息与存储单元的大小关系,来调整该消息存储空间中存储单元的大小以及个数,当调整至阈值条件时,例如当存储单元的个数已经达到最低阈值,且同时各存储单元的大小已经达到最高阈值时,重新申请新的消息存储空间,且新消息存储空间的大小大于历史消息存储空间的大小。
或者还可以直接申请新的消息存储空间,根据数据消息的大小确定新消息存储空间的各存储单元的大小,例如,新消息存储空间的各存储单元的大小略大于数据消息的大小。
此外,还有其他调整方式可以实现根据数据消息与消息存储空间的大小关系来调整消息存储空间的大小,本发明实施例不作具体限制。
一般来说,一个稳定的系统中功能模块产生的处理任务所生成的数据消息的大小一般是稳定的,通常不会发生剧烈变化,从而只需对消息存储空间调整较少次数(如5次)之后,后续可以无需再调整。
本发明实施例通过在预先分配消息存储空间之后,基于消息存储空间存储的数据消息与该消息存储空间的大小关系,动态调整消息存储空间的大小,解决了现有技术中由于各处理任务需传输的数据消息的大小动态变化,使得预先分配的共享内存无法正确存储长度可变的消息的问题,可以适应变长的不同数据消息的存储需求,提高共享内存空间调整的灵活性,从而保证数据消息的正确存储和传输,同时合理利用共享内存空间,提高共享内存空间的存储资源的利用率。
实施例二
图2为本发明实施例二提供的一种共享内存的调整方法的流程图,本实施例以本发明实施例一为基础作出了进一步具体化,根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整的步骤,具体化为:如果所述数据消息的大小,大于所述消息存储空间中一个存储单元的大小,则增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小。
S210,为处理任务在共享内存空间中预先分配消息存储空间,其中,所述消息存储空间包括至少一个存储单元和冗余空间,各存储单元的大小相同。
可选的,所述冗余空间的大小等于设定冗余基数与冗余系数的乘积,所述冗余系数根据所述存储单元的大小来确定。
可选的,所述冗余系数与所述存储单元的大小block_size之间的关系按照如下公式确定:
block_size<64k时,冗余系数=1.2;
block_size<1M时,冗余系数=1.5;
block_size<5M时,冗余系数=1.7;
block_size<10M时,冗余系数=2.0。
其中,本实施例中的处理任务、共享内存空间、消息存储空间以及数据消息均可以参考上述实施例的描述。
S220,获取所述处理任务向所述消息存储空间存储的数据消息。
S230,判断所述数据消息的大小是否大于所述消息存储空间中一个存储单元的大小,如果是则执行S240,否则执行S220。
一般来说,提前为处理任务分配的消息存储空间中的任意一个存储单元的大小不会过大,其中,每个存储单元的大小是相同的。但各处理任务需传输的数据消息的大小是变长的,为了适应变长的数据消息,消息存储空间中各存储单元的大小需要随之增大。从而仅在数据消息大于消息存储空间中一个存储单元的大小时,对应调整消息存储空间中每个所述存储单元的大小即可确保调整后的消息存储空间的大小与数据消息的大小匹配。
S240,增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小。
数据消息实际是储存在消息存储空间中的一个存储单元中,从而,可以根据数据消息与存储单元的大小关系,来调整存储单元的大小,以适应数据消息的大小变化。这种调整方式可以避免直接对消息存储空间进行调整,即避免直接通过重新申请新的消息存储空间实现对消息存储空间的大小调整,可以避免频繁的共享内存申请和分配,简化消息存储空间动态调整的方法,从而提高消息存储空间动态调整的效率。
可选的,增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小具体可以包括:识别增加后各所述存储单元的总空间大小,是否大于所述消息存储空间;如果否,在所述消息存储空间中调整每个所述存储单元的大小,以大于所述数据消息的大小,并相应缩小所述冗余空间;通知与所述消息存储空间关联的其他处理任务,重新保存调整后各存储单元的地址,以挂载所述消息存储空间;如果是,则在所述共享内存空间中为所述处理任务重新分配消息存储空间,以使新消息存储空间中存储单元的大小大于所述数据消息的大小;通知与所述消息存储空间关联的其他处理任务,重新保存新消息存储空间的地址和调整后各存储单元的地址,以挂载所述消息存储空间。
具体的,存储单元的总空间可以是指在消息存储空间中所有增加后的存储单元的大小的总和。当确定需要将存储单元的大小调大时,可以根据增加后各存储单元形成的总空间与消息存储空间的大小关系,确定不同的调整策略。
若增加后各存储单元形成的总空间的大小已经超过消息存储空间的大小,表明该消息存储空间已经无法为增加后的各存储单元提供足够的存储空间,从而需要向系统内核重新申请新的消息存储空间,以使系统内核在共享内存空间中为处理任务重新分配一个新的消息存储空间,同时新的消息存储空间可以满足数据消息的存储需求。其中,重新申请的消息存储空间包含设定数目的存储单元和冗余空间,重新申请的消息存储空间包含的存储单元的大小大于原来消息存储空间包含的存储单元的大小,同时重新申请的消息存储空间包含的冗余空间的大小大于原来消息存储空间包含的冗余空间的大小。
若调整后的各存储单元形成的总空间的大小未超过消息存储空间的大小,表明该消息存储空间可以为调整后的各存储单元提供足够的存储空间,此时,可以通过将冗余空间对应的部分或整个存储空间分配给各存储单元,以实现增加各存储单元,从而使各存储单元的大小大于数据消息的大小。其中,增加存储单元的方式具体可以是通过修改该消息存储空间中存储单元的地址指针来调大存储单元的大小。
无论是重新申请消息存储空间,还是在消息存储空间中调整各存储单元的大小,都改变了消息存储空间中各存储单元的地址,从而需要更新消息存储空间的地址以及各存储单元的地址,以使发布任务将数据消息存入更新后的存储单元,以及订阅任务准确从更新后的存储单元中读取数据消息。更新地址的方式具体可以是通过信号量的方式通知挂载原来消息存储空间的发布任务和订阅任务,重新挂载重新申请的消息存储空间,即保存重新申请的消息存储空间的地址和其包含的存储单元的地址。
通过判断增加后各所述存储单元的总空间与所述消息存储空间的大小关系,基于不同的大小关系,对应执行不同的调整策略,可以灵活调整消息存储空间,同时可以避免频繁的共享内存申请和分配。
可选的,识别增加后各所述存储单元的总空间大小,是否大于所述消息存储空间可以包括:将所述存储单元的大小增加至大于所述数据消息的大小;计算增加后存储单元的大小与数量的乘积,作为各所述存储单元的总空间大小;如果所述总空间大小大于所述消息存储空间,则将所述存储单元的数量递减,直至所述总空间大小小于所述消息存储空间,或直至所述存储单元的数量达到最小门限值时,确定所述总空间大小大于所述消息存储空间。
具体的,一个消息存储空间中的存储单元的数量不能小于最小门限值。在相应调整存储单元的大小与数量之后,均未能实现各存储单元的总空间大小小于消息存储空间时,确定消息存储空间不能为增加后各存储单元提供足够的存储空间,从而确定总空间大小大于消息存储空间。
在一个具体的例子中,消息存储空间为75k,各存储单元的大小为8k,存储单元的个数为7个,最小门限值为5。若数据消息的大小为12k,从而确定增加后各存储单元的大小为16k,此时各存储单元的总空间大小为112k,即各存储单元的总空间大小大于消息存储空间。可以递减存储单元的数量,当存储单元的数量为最小门限值,即5个,此时,各存储单元的总空间大小为80k,仍大于消息存储空间,从而确定总空间大小大于消息存储空间。
通过根据增加后的存储单元的大小对应递减存储单元的数量,并仅在存储单元的数量达到最小门限值,且存储单元的总空间大小仍大于所述消息存储空间时,确定总空间大小大于消息存储空间,可以有效减少消息存储空间的申请和分配,合理利用存储资源。
可选的,增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小包括:从小至大,顺序获取最小存储单位的2次幂值,选择第一个大于所述数据消息大小的2次幂值作为增加后所述存储单元的大小。
通常在机器语言中,最小的信息单位是bit,也就是一个二进制位,每增加一位,得到的增加后的信息单位大小一定是2的次幂值。因此,存储单元的大小也是2的次幂值,并且是以2的次幂值作为增量,逐渐增加。在逐级递增的过程中,选择第一个大于数据消息大小的2次幂值即为增加后的存储单元的大小,可以选择准确选择大于且最接近数据信息的2次幂值作为增加后所述存储单元的大小,在满足数据消息的存储需求的同时还可以减少存储资源的浪费,从而实现合理利用存储资源,同时,可以高效提升循环读写效率。
本发明实施例通过根据数据消息与消息存储空间中存储单元的大小关系,调整存储单元的大小以实现对消息存储空间的大小调整,可以避免直接对消息存储空间进行调整,简化消息存储空间动态调整的方法,提高消息存储空间动态调整的效率。
实施例三
图3是本发明实施例三提供的一种共享内存的调整装置的结构示意图,该共享内存的调整装置设置于车载设备上,如图3所示,所述装置具体包括:
消息存储空间分配模块310,用于为处理任务在共享内存空间中预先分配消息存储空间;
数据消息获取模块320,用于获取所述处理任务向所述消息存储空间存储的数据消息;
存储空间大小调整模块330,用于根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整。
本发明实施例通过在预先分配消息存储空间之后,基于消息存储空间存储的数据消息与该消息存储空间的大小关系,动态调整消息存储空间的大小,解决了现有技术中由于各处理任务需传输的数据消息的大小动态变化,使得预先分配的共享内存无法正确存储长度可变的消息的问题,可以适应变长的不同数据消息的存储需求,提高共享内存空间调整的灵活性,从而保证数据消息的正确存储和传输,同时合理利用共享内存空间,提高共享内存空间的存储资源的利用率。
进一步的,所述消息存储空间包括至少一个存储单元和冗余空间,各存储单元的大小相同。
进一步的,所述冗余空间的大小等于设定冗余基数与冗余系数的乘积,所述冗余系数根据所述存储单元的大小来确定。
进一步的,所述冗余系数与所述存储单元的大小block_size之间的关系按照如下公式确定:
block_size<64k时,冗余系数=1.2;
block_size<1M时,冗余系数=1.5;
block_size<5M时,冗余系数=1.7;
block_size<10M时,冗余系数=2.0。
进一步的,所述存储空间大小调整模块330,具体用于:根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整包括:如果所述数据消息的大小,大于所述消息存储空间中一个存储单元的大小,则增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小。
进一步的,所述存储空间大小调整模块330,具体用于:识别增加后各所述存储单元的总空间大小,是否大于所述消息存储空间;如果否,在所述消息存储空间中调整每个所述存储单元的大小,以大于所述数据消息的大小,并相应缩小所述冗余空间;通知与所述消息存储空间关联的其他处理任务,重新保存调整后各存储单元的地址,以挂载所述消息存储空间;如果是,则在所述共享内存空间中为所述处理任务重新分配消息存储空间,以使新消息存储空间中存储单元的大小大于所述数据消息的大小;通知与所述消息存储空间关联的其他处理任务,重新保存新消息存储空间的地址和调整后各存储单元的地址,以挂载所述消息存储空间。
进一步的,所述存储空间大小调整模块330,具体用于:将所述存储单元的大小增加至大于所述数据消息的大小;计算增加后存储单元的大小与数量的乘积,作为各所述存储单元的总空间大小;如果所述总空间大小大于所述消息存储空间,则将所述存储单元的数量递减,直至所述总空间大小小于所述消息存储空间,或直至所述存储单元的数量达到最小门限值时,确定所述总空间大小大于所述消息存储空间。
进一步的,所述存储空间大小调整模块330,具体用于:从小至大,顺序获取最小存储单位的2次幂值,选择第一个大于所述数据消息大小的2次幂值作为增加后所述存储单元的大小。
进一步的,所述订阅任务和所述发布任务,分别为无人车系统中的任一处理任务;所述无人车系统包括下述处理任务中的至少一种:至少一个图像感知任务、激光点云感知任务、规划任务和驾驶任务。
上述共享内存的调整装置可执行本发明任意实施例所提供的共享内存的调整方法,具备执行的共享内存的调整方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备412的框图。图4显示的设备412仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,设备412以通用计算设备的形式表现。设备412的组件可以包括但不限于:一个或者多个处理器或者处理单元416,系统存储器428,连接不同系统组件(包括系统存储器428和处理单元416)的总线418。设备412可以是车载设备。
总线418表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
设备412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备412访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)430和/或高速缓存存储器432。设备412可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统444可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM),数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线418相连。存储器428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块442的程序/实用工具440,可以存储在例如存储器428中,这样的程序模块442包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本发明所描述的实施例中的功能和/或方法。
设备412也可以与一个或多个外部设备414(例如键盘、指向设备、显示器424等)通信,还可与一个或者多个使得用户能与该设备412交互的设备通信,和/或与使得该设备412能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口422进行。并且,设备412还可以通过网络适配器420与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网(WideArea Network,WAN)通信。如图所示,网络适配器420通过总线418与设备412的其它模块通信。应当明白,尽管图4中未示出,可以结合设备412使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、(Redundant Arrays ofInexpensive Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理单元416通过运行存储在系统存储器428中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种共享内存的调整方法。
也即,所述处理单元执行所述程序时实现:为处理任务在共享内存空间中预先分配消息存储空间;获取所述处理任务向所述消息存储空间存储的数据消息;根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的共享内存的调整方法:所述方法包括:为处理任务在共享内存空间中预先分配消息存储空间;获取所述处理任务向所述消息存储空间存储的数据消息;根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、只读存储器(Read OnlyMemory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、无线电频率(RadioFrequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括LAN或WAN——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种共享内存的调整方法,其特征在于,包括:
为处理任务在共享内存空间中预先分配消息存储空间,所述消息存储空间包括至少一个存储单元和冗余空间,各存储单元的大小相同;
获取所述处理任务向所述消息存储空间存储的数据消息,所述处理任务包括订阅任务和发布任务,用于在执行过程中,对所述共享内存空间进行读写,以实现数据消息传输;
根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整;
根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整包括:
如果所述数据消息的大小,大于所述消息存储空间中一个存储单元的大小,则增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小;
增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小包括:
识别增加后各所述存储单元的总空间大小,是否大于所述消息存储空间;
如果否,在所述消息存储空间中调整每个所述存储单元的大小,以大于所述数据消息的大小,并相应缩小所述冗余空间;通知与所述消息存储空间关联的其他处理任务,重新保存调整后各存储单元的地址,以挂载所述消息存储空间;
如果是,则在所述共享内存空间中为所述处理任务重新分配消息存储空间,以使新消息存储空间中存储单元的大小大于所述数据消息的大小;通知与所述消息存储空间关联的其他处理任务,重新保存新消息存储空间的地址和调整后各存储单元的地址,以挂载所述消息存储空间。
2.根据权利要求1所述的方法,其特征在于,所述冗余空间的大小等于设定冗余基数与冗余系数的乘积,所述冗余系数根据所述存储单元的大小确定。
3.根据权利要求2所述的方法,其特征在于,所述冗余系数与所述存储单元的大小block_size之间的关系按照如下公式确定:
block_size<64k时,冗余系数=1.2;
block_size<1M时,冗余系数=1.5;
block_size<5M时,冗余系数=1.7;
block_size<10M时,冗余系数=2.0。
4.根据权利要求1所述的方法,其特征在于,识别增加后各所述存储单元的总空间大小,是否大于所述消息存储空间包括:
将所述存储单元的大小增加至大于所述数据消息的大小;
计算增加后存储单元的大小与数量的乘积,作为各所述存储单元的总空间大小;
如果所述总空间大小大于所述消息存储空间,则将所述存储单元的数量递减,直至所述总空间大小小于所述消息存储空间,或直至所述存储单元的数量达到最小门限值时,确定所述总空间大小大于所述消息存储空间。
5.根据权利要求1所述的方法,其特征在于,增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小包括:
从小至大,顺序获取最小存储单位的2次幂值,选择第一个大于所述数据消息大小的2次幂值作为增加后所述存储单元的大小。
6.根据权利要求1所述的方法,其特征在于,所述订阅任务和所述发布任务,分别为无人车系统中的任一处理任务;所述无人车系统包括下述处理任务中的至少一种:图像感知任务、激光点云感知任务、规划任务和驾驶任务。
7.一种共享内存的调整装置,其特征在于,包括:
消息存储空间分配模块,用于为处理任务在共享内存空间中预先分配消息存储空间,所述消息存储空间包括至少一个存储单元和冗余空间,各存储单元的大小相同;
数据消息获取模块,用于获取所述处理任务向所述消息存储空间存储的数据消息,所述处理任务包括订阅任务和发布任务,用于在执行过程中,对所述共享内存空间进行读写,以实现数据消息传输;
存储空间大小调整模块,用于根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整;
所述存储空间大小调整模块,具体用于:根据所述数据消息与所述消息存储空间的大小关系,对所述消息存储空间的大小进行调整包括:如果所述数据消息的大小,大于所述消息存储空间中一个存储单元的大小,则增加所述消息存储空间中每个所述存储单元的大小,直至所述存储单元的大小大于或等于所述数据消息的大小;
所述存储空间大小调整模块,具体用于:识别增加后各所述存储单元的总空间大小,是否大于所述消息存储空间;如果否,在所述消息存储空间中调整每个所述存储单元的大小,以大于所述数据消息的大小,并相应缩小所述冗余空间;通知与所述消息存储空间关联的其他处理任务,重新保存调整后各存储单元的地址,以挂载所述消息存储空间;如果是,则在所述共享内存空间中为所述处理任务重新分配消息存储空间,以使新消息存储空间中存储单元的大小大于所述数据消息的大小;通知与所述消息存储空间关联的其他处理任务,重新保存新消息存储空间的地址和调整后各存储单元的地址,以挂载所述消息存储空间。
8.一种车载设备,其特征在于,所述车载设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的共享内存的调整方法。
9.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的共享内存的调整方法。
CN201811003388.5A 2018-08-30 2018-08-30 一种共享内存的调整方法、装置、设备和介质 Active CN109254857B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811003388.5A CN109254857B (zh) 2018-08-30 2018-08-30 一种共享内存的调整方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811003388.5A CN109254857B (zh) 2018-08-30 2018-08-30 一种共享内存的调整方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN109254857A CN109254857A (zh) 2019-01-22
CN109254857B true CN109254857B (zh) 2021-03-19

Family

ID=65049785

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811003388.5A Active CN109254857B (zh) 2018-08-30 2018-08-30 一种共享内存的调整方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN109254857B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765107A (zh) * 2019-10-21 2021-05-07 伊姆西Ip控股有限责任公司 用于调整存储空间的方法、设备和计算机程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245624A (zh) * 2015-11-17 2016-01-13 浪潮(北京)电子信息产业有限公司 一种云存储文件系统
CN106021000A (zh) * 2016-06-02 2016-10-12 北京百度网讯科技有限公司 用于机器人操作系统的共享内存管理方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100818797B1 (ko) * 2006-10-19 2008-04-01 삼성전자주식회사 메모리 용량 조절 방법과 메모리 용량 조절 장치
CN105630410B (zh) * 2015-12-03 2018-08-07 上海磁宇信息科技有限公司 使用非易失随机读写存储芯片动态管理文件存储区的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245624A (zh) * 2015-11-17 2016-01-13 浪潮(北京)电子信息产业有限公司 一种云存储文件系统
CN106021000A (zh) * 2016-06-02 2016-10-12 北京百度网讯科技有限公司 用于机器人操作系统的共享内存管理方法和装置

Also Published As

Publication number Publication date
CN109254857A (zh) 2019-01-22

Similar Documents

Publication Publication Date Title
CN109032534B (zh) 一种无人车消息传输方法、装置、设备和介质
CN109144696B (zh) 一种任务调度方法、装置、电子设备及存储介质
CN109213600B (zh) 一种基于ai云的gpu资源调度方法和装置
CN109144697B (zh) 一种任务调度方法、装置、电子设备及存储介质
CN113172625A (zh) 一种机器人调度方法、装置、设备及存储介质
CN109284180B (zh) 一种任务调度方法、装置、电子设备及存储介质
CN109242320B (zh) 订单分配方法、装置、服务器及存储介质
CN107220375B (zh) 数据读写方法和服务器
CN112925737A (zh) Pci异构系统数据融合方法、系统、设备及存储介质
CN111859775A (zh) 加速深度学习推断的软硬件协同设计
CN113627775A (zh) 机器人的调度方法、装置、设备和存储介质
CN111026552B (zh) 资源的调度方法、装置、电子设备和计算机可读存储介质
CN109254857B (zh) 一种共享内存的调整方法、装置、设备和介质
CN115617511A (zh) 资源数据处理的方法、装置、电子设备和存储介质
CN111123728B (zh) 无人车仿真方法、装置、设备及计算机可读介质
US12026500B2 (en) Software update device, server, software update system, and software update method
CN108944921A (zh) 一种用于车辆的纵向控制的方法与设备
CN111104611B (zh) 一种数据处理方法、装置、设备及存储介质
CN113682298B (zh) 车辆限速方法和装置
CN112114959B (zh) 资源调度方法、分布式系统、计算机设备和存储介质
CN112817788A (zh) 任务异常告警方法、装置、服务器及存储介质
US20170118293A1 (en) Method and system for efficient task management
CN112668371A (zh) 用于输出信息的方法和装置
CN115878296B (zh) 一种资源管理方法、装置、电子设备及可读存储介质
CN113096436B (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
GR01 Patent grant
GR01 Patent grant