CN117971113A - 存储阵列的动态资源分配方法、装置、电子设备、介质 - Google Patents
存储阵列的动态资源分配方法、装置、电子设备、介质 Download PDFInfo
- Publication number
- CN117971113A CN117971113A CN202311632527.1A CN202311632527A CN117971113A CN 117971113 A CN117971113 A CN 117971113A CN 202311632527 A CN202311632527 A CN 202311632527A CN 117971113 A CN117971113 A CN 117971113A
- Authority
- CN
- China
- Prior art keywords
- resource allocation
- resource
- data
- granularity
- dimension
- 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
- 238000013468 resource allocation Methods 0.000 title claims abstract description 179
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004590 computer program Methods 0.000 claims description 16
- 235000019580 granularity Nutrition 0.000 description 136
- 238000007726 management method Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000003139 buffering effect Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种存储阵列的动态资源分配方法、装置、电子设备、介质,方法包括:接收至少一个目标用户发送的资源分配请求;每个资源请求携带有每个目标用户的待处理数据的数据长度;针对每个目标用户的待处理数据的数据长度,根据所述待处理数据的数据长度,确定至少一个共享资源树,通过所述至少一个共享资源树对所述待处理数据进行动态资源分配;每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种存储阵列的动态资源分配方法、装置、电子设备、介质。
背景技术
网络处理器是一种可编程器件,为网络设备提供计算能力,它是一种能够完成路由查找、协议分类、报文处理以及防火墙等各种任务的通信网络芯片,在计算能力方面,拥有多个微码处理器和硬件协处理器的网络处理器能够对内存操作、路由表查找算法、拥塞控制以及主动队列管理进行一些标准操作。包存储管理单元PacketBuffer作为网络处理器里的重要单元模块,需承载高速大流量数据包的快速写入读出管理等功能,对存储阵列资源的分配和释放管理方式进行优化,可以提高包存储管理单元对长短包等混合业务的适应能力和处理效率,有助于提高内存利用效率,降低延迟并提升系统整体带宽。
相关技术中,为应对长短包的突发,都是选用一个折衷的颗粒度大小,比如根据长短包流量平衡的概率密度,选择居中的字节长度,例如,256B,512B等,规避两种极端场景要求,在存储片分配能力和包缓存能力两者中平衡。但是这种方式并不能从根据解决存储片分配能力和包缓存能力两者的冲突问题,若实际的流量概率密码发生改变,比如一段时间只有超长包,又一段时间只有超短包,那么固定颗粒度的大小,也无法很好的适应外界的用户需求,必然发生性能劣化。因此,如何在固定包长、长短包混合、超长或超短包长时间突发等变化场景下,提高网络处理器中包存储管理单元的内存阵列的内存资源利用率以及包分配能力,是当前亟需解决的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种存储阵列的动态资源分配方法、装置、电子设备、介质,在固定包长、长短包混合、超长或超短包长时间突发等变化场景下,提高网络处理器中包存储管理单元的内存阵列的内存资源利用率以及包分配能力。
为了实现上述目的,本公开实施例提供技术方案如下:
第一方面,本公开的实施例提供一种存储阵列的动态资源分配方法,所述方法包括:
接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;
针对每个目标用户的待处理数据的数据长度,根据所述待处理数据的数据长度,确定至少一个共享资源树,通过所述至少一个共享资源树对所述待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。
作为本公开实施例一种可选的实施方式,所述通过所述至少一个共享资源树对所述待处理数据进行资源分配,包括:
针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度;
根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配。
作为本公开实施例一种可选的实施方式,所述针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度,包括:
在预设时间段内,当所述待处理数据的数据长度小于第一预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度;
当所述待处理数据的数据长度大于所述第一预设数据长度,且,小于第二预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度,以及所述第二资源分配单元的第二颗粒度维度;
当所述待处理数据的数据长度大于所述第二预设数据长度时,确定所述第二资源分配单元的第二颗粒度维度。
作为本公开实施例一种可选的实施方式,所述第一资源分配单元包括:第一根状态节点、第一中间状态节点、以及第一底层状态节点,所述第二资源分配单元包括:第二根状态节点、第二中间状态节点、以及第二底层状态节点;
所述根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配,包括:
根据所述第一颗粒度维度,将所述第一资源分配单元的第一可分配空闲指针分配给所述目标用户,并修改所述第一可分配空闲指针对应的第一底层状态节点的状态信息,以及所述第一底层状态节点的状态信息对应的第一中间状态节点的状态信息和第一根状态节点的状态信息;
和/或;
根据所述第二颗粒度维度,将所述第二资源分配单元的第二可分配空闲指针分配给所述目标用户,并修改所述第二可分配空闲指针对应的第二底层状态节点的状态信息,以及所述第二底层状态节点的状态信息对应的第二中间状态节点的状态信息和第二根状态节点的状态信息。
作为本公开实施例一种可选的实施方式,所述第一根状态节点的状态信息由第一预设数量的第一中间状态节点的状态信息确定,所述第一中间状态节点的状态信息由第二预设数量的第一底层状态节点的状态信息确定;所述第二根状态节点的状态信息由第三预设数量的第二中间状态节点的状态信息确定,所述第二中间状态节点的状态信息由第四预设数量的第二底层状态节点的状态信息确定。
作为本公开实施例一种可选的实施方式,所述第一根状态节点的状态信息由第一预设数量的第一中间状态节点的状态信息确定,所述第一中间状态节点的状态信息由第二预设数量的第一底层状态节点的状态信息确定;所述第二根状态节点的状态信息由第三预设数量的第二中间状态节点的状态信息确定,所述第二中间状态节点的状态信息由第四预设数量的第二底层状态节点的状态信息确定。
作为本公开实施例一种可选的实施方式,所述方法还包括:
当所述待处理数据的数据长度发生变化时,目标共享资源树的第一颗粒度维度,和/或,所述第二颗粒度维度无法满足资源分配条件;
对所述目标共享资源树的所述第一颗粒度维度,和/或,所述第二颗粒度维度进行重新配置,以使所述第一颗粒度维度,和/或,所述第二颗粒度维度满足所述资源分配条件。
第二方面,本公开实施例提供一种存储阵列的动态资源分配装置,包括:
接收模块,用于接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;
分配模块,用于针对每个目标用户的待处理数据的数据长度,根据所述待处理数据的数据长度,确定至少一个共享资源树,通过所述至少一个共享资源树对所述待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。
作为本公开实施例一种可选的实施方式,所述分配模块,包括:
确定单元,用于针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度;
分配单元,用于根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配。
作为本公开实施例一种可选的实施方式,所述确定单元,具体用于:
在预设时间段内,当所述待处理数据的数据长度小于第一预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度;
当所述待处理数据的数据长度大于所述第一预设数据长度,且,小于第二预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度,以及所述第二资源分配单元的第二颗粒度维度;
当所述待处理数据的数据长度大于所述第二预设数据长度时,确定所述第二资源分配单元的第二颗粒度维度。
作为本公开实施例一种可选的实施方式,所述第一资源分配单元包括:第一根状态节点、第一中间状态节点、以及第一底层状态节点,所述第二资源分配单元包括:第二根状态节点、第二中间状态节点、以及第二底层状态节点;
所述分配单元,具体用于:
根据所述第一颗粒度维度,将所述第一资源分配单元的第一可分配空闲指针分配给所述目标用户,并修改所述第一可分配空闲指针对应的第一底层状态节点的状态信息,以及所述第一底层状态节点的状态信息对应的第一中间状态节点的状态信息和第一根状态节点的状态信息;
和/或;
根据所述第二颗粒度维度,将所述第二资源分配单元的第二可分配空闲指针分配给所述目标用户,并修改所述第二可分配空闲指针对应的第二底层状态节点的状态信息,以及所述第二底层状态节点的状态信息对应的第二中间状态节点的状态信息和第二根状态节点的状态信息。
作为本公开实施例一种可选的实施方式,所述第一根状态节点的状态信息由第一预设数量的第一中间状态节点的状态信息确定,所述第一中间状态节点的状态信息由第二预设数量的第一底层状态节点的状态信息确定;所述第二根状态节点的状态信息由第三预设数量的第二中间状态节点的状态信息确定,所述第二中间状态节点的状态信息由第四预设数量的第二底层状态节点的状态信息确定。
作为本公开实施例一种可选的实施方式,所述第一可分配空闲指针的遍历方向为从所述第一底层状态节点的低地址向高地址遍历;所述第二可分配空闲指针的遍历方向为从所述第二底层状态节点的高地址向低地址遍历;
所述装置还包括更新模块,所述更新模块用于:
从所述第一底层状态节点的低地址向高地址遍历,更新所述第一可分配空闲指针和第一边界指针,并根据所述第一边界指针更新所述第一资源分配单元的第一可分配资源范围;
和/或;
从所述第二底层状态节点的高地址向低地址遍历,更新所述第二可分配空闲指针和第二边界指针,并根据所述第二边界指针更新所述第二资源分配单元的第二可分配资源范围。
作为本公开实施例一种可选的实施方式,所述装置还包括:重置模块,所述重置模块用于:
当所述待处理数据的数据长度发生变化时,目标共享资源树的第一颗粒度维度,和/或,所述第二颗粒度维度无法满足资源分配条件;
对所述目标共享资源树的所述第一颗粒度维度,和/或,所述第二颗粒度维度进行重新配置,以使所述第一颗粒度维度,和/或,所述第二颗粒度维度满足所述资源分配条件。
第三方面,本公开实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面或第一方面的任一实施方式所述的存储阵列的动态资源分配方法。
第四方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式所述的存储阵列的动态资源分配方法。
本公开提供的存储阵列的动态资源分配方法,接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;针对每个目标用户的待处理数据的数据长度,根据待处理数据的数据长度,确定至少一个共享资源树,通过至少一个共享资源树对待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。对于固定包长、混合长短包、超长或超短包长等数据长度变化的场景,通过调整共享资源树的第一资源分配单元的第一颗粒度维度和第二资源分配单元的第二颗粒度维度,实现内存资源利用率和包分配能力的平衡,从而解决固定颗粒度维度的情况下,存储片分配能力和包缓存能力两者之间的冲突。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为一个实施例中网络处理器中存储管理阵列读写典型结构示意图;
图1B为一个实施例中基于存储片资源池实现的RAM阵列单元的典型结构示意图之一;
图1C为一个实施例中基于存储片资源池实现的RAM阵列单元的典型结构示意图之二;
图2为一个实施例中存储阵列的动态资源分配方法的流程示意图;
图3为一个实施例中基于存储片动态颗粒度共享资源树实现的RAM阵列单元的典型结构之一;
图4为一个实施例中基于存储片动态颗粒度共享资源树实现的RAM阵列单元的典型结构之二;
图5为一个实施例中存储片共享资源树运行时流程示意图;
图6为一个实施例中基于存储片动态颗粒度共享资源树实现的RAM阵列单元的典型结构之三;
图7为一个实施例中基于存储片动态颗粒度共享资源树实现的RAM阵列单元的典型结构之四;
图8为一个实施例中网络处理器中存储管理阵列典型结构示意图;
图9为一个实施例中存储阵列的动态资源分配装置的结构示意图之一;
图10为一个实施例中存储阵列的动态资源分配装置的结构示意图之二;
图11为本公开实施例所述的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
在本公开实施例中,“示例性的”或者“例如”等词是用于表示作例子、例证或说明。本公开实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本公开实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
参照图1A所示,图1A为网络处理器中存储管理阵列的读写结构示意图,其典型结构由多路写用户、多路读用户、写仲裁管理单元、读仲裁管理单元和包存储阵列组成。可以理解的是,包存储阵列即上文中提到的包存储管理单元。其中,在网络处理器中,多路写用户可以但不限于是包输入管理单元、包处理器引擎单元、内部内存搬移引擎单元等;多路读用户可以但不限于是包输出管理单元、包处理器引擎单元、内部内存搬移引擎单元等。参照图1A所示,写用户将数据包写入存储阵列的典型流程一般为,发送写请求和写数据包给写仲裁单元,写仲裁单元响应写请求后,根据写请求参数开启保存出阵列中的某条写入通道,将写数据包写入存储管理阵列中的某块存储单元。其中,写请求参数包括待写入数据的长度、以及数据包的优先级等。参照图1A所示,读用户将数据包读出包存储阵列的典型流程一般为,发送读请求给读仲裁单元模块,读仲裁单元响应读请求后,根据读请求参数开启包存储阵列中的某条读出通道,将读出的报数据返回给读用户。其中,读请求参数包括但不限于是读数据长度、读数据指针序号、以及读数据偏移等。
图1A中以包存储阵列为RAM(Random Access Memory,随机存取存储器)存储阵列为示例,RAM存储阵列共有8个独立的存储单元片区,图1B-图1C、图3、图4、图6、图7是对每个对立的存储单元结构图的展开,且示例中定义了每个存储单元片区中存储片的数量为256个,并进行逐个编号0-255。图中有灰度填充的方格表示资源树中已分配占用的资源,无填充的方格表示资源树中未分配占用,或者已被使用完释放后的空闲资源。
参照图1B所示,图1B为基于存储片资源池实现的RAM阵列单元的典型结构。存储片硬件资源用双口RAM结构实现,资源池编号标记使用FIFO(first in first out,先进先出)硬件电路构成。初始状态下资源池编号标记按照1-256顺序进行排序,收到仲裁控制单元发来的动态内存分配请求时,FIFO资源池读出1个存储片编号,交给控制单元,控制单元根据获得的存储片编号作为地址,将数据写入对应存储空间的相应资源片。用户读完数据,需要清除资源时,仲裁控制单元会发出释放内存命令,将资源标记重新投回FIFO资源池,即刚释放的资源块的标号,会写入FIFO状态标记池的末尾。
图1C为基于存储片资源树实现的RAM阵列单元的典型结构。存储片硬件资源同样用双口RAM结构实现,对硬件资源的分配和释放标记,采用资源树的结构管理。资源树管理结构中,每资源节点都有各自对应的存储状态信息。用1分别表示存储资源被分配,0表示存储资源空闲。对于全部256个资源节点,可分为3层级管理。第三层级为全部256个资源节点。用每16个资源节点构建一个上级管理节点,则第二层级共16个状态节点。同理,对第二层级的16个状态节点构建一个上级管理节点,第一层级只有1个状态节点,该节点为资源树标记的根节点。存储片资源树的分配,采用树的搜索算法,从树的根节点开始向下搜索,如果根节点状态为具有空闲资源,进入二级节点搜索,逐一搜索二级节点,找到最小编号的二级空闲节点后,再进行该二级节点的展开和深入探查,即查找第三级节点。第三级节点已经是最底层的基础节点,找到后,即发现获取实际可用资源,将资源交给仲裁控制单元使用。控制单元根据获得的存储片编号作为地址,将数据写入对应存储空间的相应资源片。用户读完数据,需要清除资源时,仲裁控制单元会发出Free内存命令,该命令会修改第三级节点的状态信息,同时同步更新到第二级节点和第一级根节点。
图1B和图1C的资源管理结构各有特点,图1B的硬件实现结构简单,由FIFO+RAM构成,存储状态编号信息充分展开,资源编号交给用户使用和返回,分配和释放资源单元对应FIFO的一次读和写,因此每个时刻都可以实现同时分配和释放资源单元的能力。图1C的结构,每次分配资源单元,都需要遍历资源树上的根节点到第三层节点,逻辑判断过程较资源池结构多。树形结构的特点是能更准确的掌握资源池的实际资源分配状态,因为三级状态节点已经保存了资源池所有节点的信息。
在实际的业务场景下,网络处理器可能会遇到超短包64B,超长包9600B以上等混合场景,而且有可能碰到多个写用户端口同时数据包写入,一个读用户端口读出所有数据包的场景,或者一个写用户端口写入数据包,从多个读用户端口镜像输出数据包。因此,包长长度比例可达9600B:64B=150:1。若假定PacketBuffer可管理的总RAM阵列存储空间为9600B*256=2457600B,则按照最大颗粒度9600B可划分256个存储片,按最小颗粒度64B可划分出256*150=38400个存储片,按照256B颗粒度可划分出9600个存储片,按照1024B颗粒度可划分出2400个存储片。
若用最小的颗粒度64B划分,任意长度的包进来都不会造成分配碎片,但对于长包来说,比如9600B长包突发进来,需要进行150次的存储颗粒申请,不管是用资源池或者资源树去实现,在内存分配释放上,对存储片分配能力要求都相对最大颗粒度提高了150倍,需要花费巨大代价。另外,还需要消耗大量的资源去管理存储片状态信息或者存储片编号信息。
若用最大的颗粒度9600B划分,任意长度的包进来都只需一次存储颗粒申请,也只需最少的资源去管理存储片状态信息或者存储片编号信息。但其它小于9600B长度的包,都会造成一定量的资源浪费。若一直是超短包突发,则存储阵列资源的实际使用率只有1/150,这样整个网络处理器的内部包缓存能力也下降了150倍,网络处理器核若要处理包保序等复杂业务需要较大延迟时,包缓存能力不足会导致系统性能急剧下降。
在通常的设计方案中,为应对长短包的突发,都是选用一个折衷的颗粒度大小,比如根据长短包流量平衡的概率密度,选择居中字节长度如256B,512B等,规避两种极端场景要求,在存储片分配能力和包缓存能力中获取折衷。但折衷的同时,只是获取相对平衡,并不能从根本解决存储片分配能力和包缓存能力两者之间的冲突问题。若实际的流量概率密码发生改变,比如一短时间只有超长包,又一段时间只有超短包,那么固定颗粒度的大小,也无法很好的适应外界的用户需求,必然发生性能劣化。
现有技术中,存储阵列设计实现方案的特点单一,对普通包长能正常应对,一旦业务变为混合包长及各种超长或超短包长,存储阵列的适应能力不足,在存储片分配能力和包缓存能力上不容易达到较好的平衡点。
为解决上述问题,本公开提出一种存储阵列的动态资源分配方法,该方法包括如下步骤S21-S22:
S21、接收至少一个目标用户发送的资源分配请求。
其中,每个资源请求携带有每个目标用户的待处理数据的数据长度。目标用户包括:写用户和读用户。
S22、针对每个目标用户的待处理数据的数据长度,根据所述待处理数据的数据长度,确定至少一个共享资源树,通过所述至少一个共享资源树对所述待处理数据进行动态资源分配。
其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。
具体的,参照图3所示,图3为本公开实施例基于存储片动态颗粒度共享资源树实现的RAM阵列单元的典型结构。在图1C的基础上,用不同的颗粒度维度标记,分为AB两组进行实现,两幅图都有全部树节点的状态标记,把得到的两幅图进行叠加处理,构成了图3。假定每个蓝色的节点代表的存储片是最小颗粒度64B,一个RAM共256个最小颗粒度,即RAM块大小为64B*256。将蓝色的实际物理内存的使用情况,用最小颗粒度进行映射后的结果,记录为A组标记。另取颗粒度512B,以8个最小颗粒度为单位,将蓝色的实际物理内存进行映射的结果,记录为B组标记。这样A组标记共有256个状态信息bit,B组标记共有32个状态信息bit。
在一些实施例中,上述步骤(通过所述至少一个共享资源树对所述待处理数据进行资源分配)可以通过如下方式实现:
A、针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度。
可选的,上述步骤A(针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度)可以通过如下方式实现:
在预设时间段内,当所述待处理数据的数据长度小于第一预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度;
当所述待处理数据的数据长度大于所述第一预设数据长度,且,小于第二预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度,以及所述第二资源分配单元的第二颗粒度维度;
当所述待处理数据的数据长度大于所述第二预设数据长度时,确定所述第二资源分配单元的第二颗粒度维度。
其中,第一预设数据长度、第二预设数据长度可以根据实际应用场景进行选取,例如第一预设数据长度可以是64B,128B,256B等,第二预设长度可以是9600B等,此处对第一预设数据长度、第二预设数据长度的取值不进行具体限制。
具体的,在预设时间段内,当所述待处理数据的数据长度小于第一预设数据长度时,确定该资源分配请求为小颗粒度请求,从而确定第一资源分配单元的第一颗粒度维度。当所述待处理数据的数据长度大于第一预设数据长度,且,小于第二预设数据长度时,确定该资源分配请求为混合颗粒度请求,从而确定第一资源分配单元的第一颗粒度维度,以及所述第二资源分配单元的第二颗粒度维度。当待处理数据的数据长度大于第二预设数据长度时,确定该资源分配请求为大颗粒度请求,从而确定第二资源分配单元的第二颗粒度维度。
示例性的,当待处理数据的数据长度为3B,则可以确定第一颗粒维度为1B;当待处理数据的数据长度为9B,可以确定第一颗粒度维度为1B,第二颗粒度维度为8B;当待处理数据的数据长度为64B,可以确定第二颗粒度维度为16B。
B、根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配。
可选的,所述第一资源分配单元包括:第一根状态节点、第一中间状态节点、以及第一底层状态节点,所述第二资源分配单元包括:第二根状态节点、第二中间状态节点、以及第二底层状态节点。
其中,所述第一根状态节点的状态信息由第一预设数量的第一中间状态节点的状态信息确定,所述第一中间状态节点的状态信息由第二预设数量的第一底层状态节点的状态信息确定;所述第二根状态节点的状态信息由第三预设数量的第二中间状态节点的状态信息确定,所述第二中间状态节点的状态信息由第四预设数量的第二底层状态节点的状态信息确定。
示例性的,假定每组资源树的所有节点的状态分别用S1[0:0],S2[15:0],S3[255:0]这样三组寄存器表示,其中一级根节点共1个,其状态用寄存器S1[0:0]表示,二级节点共16个,其状态用S2[15:0]表示,二级节点共256个,其状态用S3[255:0]表示。状态更新的硬件电路为:
S1=&(S2)即S1为S2的16个1bit输入信号的相与。
S2[i]=&(S3[i*16+15:i*16]),其中,i=0~15,即S2的每个状态bit为S3对应的16个状态bit信号的相与。
每个共享资源树的全部状态表需要16+1=17个,即,16输入1输出的与电路组成。
上述步骤B(根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配)可以通过如下方式实现:
根据所述第一颗粒度维度,将所述第一资源分配单元的第一可分配空闲指针分配给所述目标用户,并修改所述第一可分配空闲指针对应的第一底层状态节点的状态信息,以及所述第一底层状态节点的状态信息对应的第一中间状态节点的状态信息和第一根状态节点的状态信息;
和/或;
根据所述第二颗粒度维度,将所述第二资源分配单元的第二可分配空闲指针分配给所述目标用户,并修改所述第二可分配空闲指针对应的第二底层状态节点的状态信息,以及所述第二底层状态节点的状态信息对应的第二中间状态节点的状态信息和第二根状态节点的状态信息。
其中,所述第一可分配空闲指针的遍历方向为从所述第一底层状态节点的低地址向高地址遍历;所述第二可分配空闲指针的遍历方向为从所述第二底层状态节点的高地址向低地址遍历。
示例性的,对于共享资源树,第三层底层树节点上的A,B两组标记,分配两组指针,如图4所示。分别是A组的Min_free_pointer_A和Max_bound_pointer_A和B组的的Min_free_pointer_B和Max_bound_pointer_B。这两组指针表示A和B组的最小可分配的空闲指针,以及最大边界指针。因为是共享资源树,可以兼容接收两种不同颗粒度维度的内存分配和释放请求。下面的图文中,为简化方便,把Min_free_pointer_A和Max_bound_pointer_A简记为Min_A和Max_A,把Min_free_pointer_B和Max_bound_pointer_B简记为Min_B和Max_B。
进一步,从所述第一底层状态节点的低地址向高地址遍历,更新所述第一可分配空闲指针和第一边界指针,并根据所述第一边界指针更新所述第一资源分配单元的第一可分配资源范围;
和/或;
从所述第二底层状态节点的高地址向低地址遍历,更新所述第二可分配空闲指针和第二边界指针,并根据所述第二边界指针更新所述第二资源分配单元的第二可分配资源范围。
参照图5所示,同一个时刻,共享资源树只可能收到A组或B组的某一种malloc请求,收到请求的下一个时钟完成malloc请求响应,回复分配的指针地址,并更新节点状态。再下一个时刻,进行该组状态指针的更新,完成本次请求处理。所以某组收到Malloc请求之后,会消耗2个clk完成本次处理。具体的处理细节如下。
示例性的,收到小颗粒度请求时,从A组进行资源分配,直接把Min_A指向的资源快速分配出去,同时修改该资源的状态信息,从free状态变为已malloc状态,对应该bit位的信息变为1,表示资源已分配,同时更新这个三级节点关联到的树上的二级节点、一级节点的状态位信息。在下一个时钟时刻,需对更新后的树的三级节点状态进行遍历,更新Min_A指针,同时对Min_A和Max_A做比较,若Min_A>Max_A,则更新Max_A的值为Min_A指向的地址值。若3级节点共256个资源颗粒,则Min_A和Max_A的指针对应的地址信息可用8bit数据表示。综上,A组的一个资源分配周期为两个clk,其中第一个clk用于分配资源,更新树节点状态信息,第二个clk用于遍历新的树状态,更新Min_A和Max_A指针,并重新调整A组状态节点掩码覆盖范围[0~Max_A]。
示例性的,收到大颗粒度请求时,从B组进行资源分配,直接把Min_B指向的资源快速分配出去,同时修改该资源的状态信息,从free状态变为已malloc状态,对应该bit位的信息变为1,表示资源已分配,同时更新这个三级节点关联到的树上的二级节点、一级节点的状态位信息。在下一个时钟时刻,需对更新后的树的三级节点状态进行遍历,更新Min_B指针,同时对Min_B和Max_B做比较,若Min_B<Max_B,则更新Max_B的值为Min_B指向的地址值。若3级节点共256个资源颗粒,则Min_B和Max_B的指针对应的地址信息可用8bit数据表示。综上,B组的一个资源分配周期为两个clk,其中第一个clk用于分配资源,更新树节点状态信息,第二个clk用于遍历新的树状态,更新Min_B和Max_B指针,并重新调整B组状态节点掩码覆盖范围[Max_B~255]。
由于A组和B组同时共享资源树,所以规定A组的Min_A和Max_A初始值都为0,遍历节点时,从资源节点地址的低地址向高地址进行递增搜索扫描,搜索到可用节点时,就停止搜索,并更新Min_A和Max_A指针。规定B组的Min_B和Max_B初始值都为255,遍历节点时,从资源节点地址的高地址向低地址进行递减搜索扫描,搜索到可用节点时,就停止搜索,并更新Min_B和Max_B指针。再分配更新的过程中,A组和B组的指针都在逐渐向对方靠近,因此Max_A和Max_B指针做为边界保护指针,分别保护了Min_A和Min_B的指针在动态搜索的过程中不会越界。即Min_A指针的搜索范围为[0~Max_B],而Min_B指针的搜索范围为[Max_A~255]。Max_A和Max_B的关系是Max_B>=Max_A,若判断更新Max_A或Max_B后,会出现Max_B<Max_A的情景,则停止此次更新,说明A和B组的边界已经发生碰上了,无法再继续移动边界。
在实际的业务场景下,若长时间短包流量突发,仲裁控制单元会一直向共享资源树申请小颗粒度资源片,则一直收到A组的Malloc请求,在一段时间后,共享资源树的状态会演化为类似图6的场景,此时共享资源树可看成已转换为颗粒度为1的资源树。
在实际的业务场景下,若长时间长包流量突发,仲裁控制单元会一直向共享资源树申请大颗粒度资源片,则一直收到B组的Malloc请求,在一段时间后,共享资源树的状态会演化为类似图7的场景,此时共享资源树可看成已转换为颗粒度为8的资源树。
因此共享资源树可以自动适应实际场景实际的业务流量,动态转换为单纯小颗粒度资源树或者单纯大颗粒资源树,或者两种颗粒度共存的资源树。
常规的资源树内存分配,在通常的硬件实现上,每次分配指令可能需要占用2拍时钟时间,若需要1拍时钟实现,对电路设计复杂度的要求会提高很多。参照图8所示,本发明提出的共享资源树结构,AB两个组可分配任意颗粒维度互不影响。若分配相同大小的颗粒维度,此时相对于常规的单颗粒维度树而言,相当于将一颗树拆分为两颗具有乒乓处理能力的动态树。这样在基本相同的电路设计复杂度的情况下,本发明的混合树结构响应分配指令的能力可达到常规树能力的两倍。若AB两组的维度参数不同时,对于混合长短包的场景,1棵混合树就可以达到乒乓处理的效果。若此时只有单纯的长包或者短包,其处理能力会下降到等同于单维度资源树的场景。但好的消息时,内存阵列中不止一颗资源树,若整个阵列存在8颗资源树,采用本发明的方案,8颗双维度的混合资源树,可实现16个维度参数的内存分配方式,从整个树群结构看,可以在更大的范围内进行适配。
通过混合颗粒维度内存树结构对内存真理单元进行管理,每颗独立的树可对外部流量自适应,可自动演化为单纯维度树,也可演化为双维混合乒乓树,成倍提升响应能力。这样不论外部业务场景怎么变化,内存阵列管理单元均可快速进化出最适合外部业务场景的树和树群结构,使处理效率一直保持恒定,不会降低。
应该用本公开实施例,本公开提供的存储阵列的动态资源分配方法,接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;针对每个目标用户的待处理数据的数据长度,根据待处理数据的数据长度,确定至少一个共享资源树,通过至少一个共享资源树对待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。对于固定包长、混合长短包、超长或超短包长等数据长度变化的场景,通过调整共享资源树的第一资源分配单元的第一颗粒度维度和第二资源分配单元的第二颗粒度维度,实现内存资源利用率和包分配能力的平衡,从而解决固定颗粒度维度的情况下,存储片分配能力和包缓存能力两者之间的冲突。
在一些实施例中,当所述待处理数据的数据长度发生变化时,目标共享资源树的第一颗粒度维度,和/或,所述第二颗粒度维度无法满足资源分配条件;
对所述目标共享资源树的所述第一颗粒度维度,和/或,所述第二颗粒度维度进行重新配置,以使所述第一颗粒度维度,和/或,所述第二颗粒度维度满足所述资源分配条件。
具体的,参照图9所示,混合动态资源树在物理内存结构上是完全一致,都是具有相同内存颗粒数的RAM单元(本文256个),控制结构上通过AB组节点状态bitmap和4个状态指针管理混合树,具有相同的算法,对于不同的维度参数只是算法参数发生了改变。因此,其控制结构硬件电路可实现统一化,仅通过外部维度参数变化,就可以重载更新内部的控制结构。非常适合在混合树群的管理中,进行树的动态负载调节,将预设参数不适合且包分配使用率低的树进行复位,并进行颗粒维度重新分配,动态重配置重载树。这样整个树群具有极高的灵活性,可以自动适应多态的业务要求,让每颗树都能随着场景形式的变化而变化,最大限度的发挥出树群分配管理内存的整体效益。
在图9中,初始分配有大维度参数A=8,B=32的编号7的树,在长时间的短包流量冲击下,基本分配不到包请求指令,该单元闲置率高。树群总体管理单元,会根据当前场景,先对该阵列的请求加锁,暂停所有该阵列新分配资源指令的需求,待阵列中包释放完毕后,复位该阵列后,将AB维度参数设置为2和2,此时释放该阵列的请求锁,重新将树7投入到工作中。树7在重载后,获得新生,再当前场景下变成一颗具有相同参数维度的混合乒乓树。
对于混合树群控制方案,若每颗树的两个参数维度采取差异化分配方式,对混合包长具有较好的适应能力。但在特定单一包长的长时间冲击下,最后会演变为单一维度的8颗单纯树,可动态适应,但效率还不是最高。其最高效率的场景为相同维度的8颗乒乓平衡树,AB组都同时工作,在处理响应能力上可相当于16颗单纯树。实际的演化结果,响应能力应在8颗~16颗单纯树处理能力之间。若每颗树的两个参数维度采取相等参数分配方式,则每颗匹配上的树会立刻达到最大的乒乓树处理能力,但包长混合变化后,树重载的频率会变。实际使用时,可结合业务场景,对多种混合参数的组合进行尝试验证,找到更优解。
在一个实施例中,如图10所示,提供了一种存储阵列的动态资源分配装置300,应用于安装有硬件加速卡的宿主机,包括:
接收模块1010,用于接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;
分配模块1020,用于针对每个目标用户的待处理数据的数据长度,根据所述待处理数据的数据长度,确定至少一个共享资源树,通过所述至少一个共享资源树对所述待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。
作为本公开实施例一种可选的实施方式,所述分配模块1020,包括:
确定单元,用于针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度;
分配单元,用于根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配。
作为本公开实施例一种可选的实施方式,所述确定单元,具体用于:
在预设时间段内,当所述待处理数据的数据长度小于第一预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度;
当所述待处理数据的数据长度大于所述第一预设数据长度,且,小于第二预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度,以及所述第二资源分配单元的第二颗粒度维度;
当所述待处理数据的数据长度大于所述第二预设数据长度时,确定所述第二资源分配单元的第二颗粒度维度。
作为本公开实施例一种可选的实施方式,所述第一资源分配单元包括:第一根状态节点、第一中间状态节点、以及第一底层状态节点,所述第二资源分配单元包括:第二根状态节点、第二中间状态节点、以及第二底层状态节点;
所述分配单元,具体用于:
根据所述第一颗粒度维度,将所述第一资源分配单元的第一可分配空闲指针分配给所述目标用户,并修改所述第一可分配空闲指针对应的第一底层状态节点的状态信息,以及所述第一底层状态节点的状态信息对应的第一中间状态节点的状态信息和第一根状态节点的状态信息;
和/或;
根据所述第二颗粒度维度,将所述第二资源分配单元的第二可分配空闲指针分配给所述目标用户,并修改所述第二可分配空闲指针对应的第二底层状态节点的状态信息,以及所述第二底层状态节点的状态信息对应的第二中间状态节点的状态信息和第二根状态节点的状态信息。
作为本公开实施例一种可选的实施方式,所述第一根状态节点的状态信息由第一预设数量的第一中间状态节点的状态信息确定,所述第一中间状态节点的状态信息由第二预设数量的第一底层状态节点的状态信息确定;所述第二根状态节点的状态信息由第三预设数量的第二中间状态节点的状态信息确定,所述第二中间状态节点的状态信息由第四预设数量的第二底层状态节点的状态信息确定。
作为本公开实施例一种可选的实施方式,所述第一可分配空闲指针的遍历方向为从所述第一底层状态节点的低地址向高地址遍历;所述第二可分配空闲指针的遍历方向为从所述第二底层状态节点的高地址向低地址遍历;
所述装置还包括更新模块,所述更新模块用于:
从所述第一底层状态节点的低地址向高地址遍历,更新所述第一可分配空闲指针和第一边界指针,并根据所述第一边界指针更新所述第一资源分配单元的第一可分配资源范围;
和/或;
从所述第二底层状态节点的高地址向低地址遍历,更新所述第二可分配空闲指针和第二边界指针,并根据所述第二边界指针更新所述第二资源分配单元的第二可分配资源范围。
作为本公开实施例一种可选的实施方式,所述装置还包括:重置模块,所述重置模块用于:
当所述待处理数据的数据长度发生变化时,目标共享资源树的第一颗粒度维度,和/或,所述第二颗粒度维度无法满足资源分配条件;
对所述目标共享资源树的所述第一颗粒度维度,和/或,所述第二颗粒度维度进行重新配置,以使所述第一颗粒度维度,和/或,所述第二颗粒度维度满足所述资源分配条件。
应用本公开实施例,本公开提供的存储阵列的动态资源分配装置,接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;针对每个目标用户的待处理数据的数据长度,根据待处理数据的数据长度,确定至少一个共享资源树,通过至少一个共享资源树对待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。对于固定包长、混合长短包、超长或超短包长等数据长度变化的场景,通过调整共享资源树的第一资源分配单元的第一颗粒度维度和第二资源分配单元的第二颗粒度维度,实现内存资源利用率和包分配能力的平衡,从而解决固定颗粒度维度的情况下,存储片分配能力和包缓存能力两者之间的冲突。
关于存储阵列的动态资源分配装置的具体限定可以参见上文中对于存储阵列的动态资源分配方法的限定,在此不再赘述。上述存储阵列的动态资源分配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备的处理器中,也可以软件形式存储于电子设备的处理器中,以便于处理器调用执行以上各个模块对应的操作。
本公开实施例还提供了一种电子设备,图11为本公开实施例提供的电子设备的结构示意图。如图11所示,本实施例提供的电子设备包括:存储器111和处理器112,存储器111用于存储计算机程序;处理器112用于调用计算机程序时执行上述方法实施例提供的存储阵列的动态资源分配方法中任一实施例所执行的步骤。所述电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,所述电子设备的处理器用于提供计算和控制能力。所述电子设备的存储器包括非易失性存储介质、内存储器。所述非易失性存储介质存储有操作系统和计算机程序。所述内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。所述计算机程序被处理器执行时以实现一种存储阵列的动态资源分配方法。所述电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,所述电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的计算机设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本公开提供的存储阵列的动态资源分配装置可以实现为一种计算机的形式,计算机程序可以在如图11所示的电子设备上运行。电子设备的存储器中可存储组成该电子设备的存储阵列的动态资源分配装置的各个程序模块。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例提供的存储阵列的动态资源分配方法。
本领域技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央判断单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种存储阵列的动态资源分配方法,其特征在于,所述方法包括:
接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;
针对每个目标用户的待处理数据的数据长度,根据所述待处理数据的数据长度,确定至少一个共享资源树,通过所述至少一个共享资源树对所述待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。
2.根据权利要求1所述的方法,其特征在于,所述通过所述至少一个共享资源树对所述待处理数据进行资源分配,包括:
针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度;
根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配。
3.根据权利要求2所述的方法,其特征在于,所述针对每个共享资源树,根据所述待处理数据的数据长度,确定所述第一资源分配单元的第一颗粒度维度,和/或,所述第二资源分配单元的第二颗粒度维度,包括:
在预设时间段内,当所述待处理数据的数据长度小于第一预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度;
当所述待处理数据的数据长度大于所述第一预设数据长度,且,小于第二预设数据长度时,确定所述第一资源分配单元的第一颗粒度维度,以及所述第二资源分配单元的第二颗粒度维度;
当所述待处理数据的数据长度大于所述第二预设数据长度时,确定所述第二资源分配单元的第二颗粒度维度。
4.根据权利要求3所述的方法,其特征在于,所述第一资源分配单元包括:第一根状态节点、第一中间状态节点、以及第一底层状态节点,所述第二资源分配单元包括:第二根状态节点、第二中间状态节点、以及第二底层状态节点;
所述根据所述第一颗粒度维度,和/或,所述第二颗粒度维度,对所述待处理数据进行资源分配,包括:
根据所述第一颗粒度维度,将所述第一资源分配单元的第一可分配空闲指针分配给所述目标用户,并修改所述第一可分配空闲指针对应的第一底层状态节点的状态信息,以及所述第一底层状态节点的状态信息对应的第一中间状态节点的状态信息和第一根状态节点的状态信息;
和/或;
根据所述第二颗粒度维度,将所述第二资源分配单元的第二可分配空闲指针分配给所述目标用户,并修改所述第二可分配空闲指针对应的第二底层状态节点的状态信息,以及所述第二底层状态节点的状态信息对应的第二中间状态节点的状态信息和第二根状态节点的状态信息。
5.根据权利要求4所述的方法,其特征在于,所述第一根状态节点的状态信息由第一预设数量的第一中间状态节点的状态信息确定,所述第一中间状态节点的状态信息由第二预设数量的第一底层状态节点的状态信息确定;所述第二根状态节点的状态信息由第三预设数量的第二中间状态节点的状态信息确定,所述第二中间状态节点的状态信息由第四预设数量的第二底层状态节点的状态信息确定。
6.根据权利要求4所述的方法,其特征在于,所述第一可分配空闲指针的遍历方向为从所述第一底层状态节点的低地址向高地址遍历;所述第二可分配空闲指针的遍历方向为从所述第二底层状态节点的高地址向低地址遍历;
所述方法还包括:
从所述第一底层状态节点的低地址向高地址遍历,更新所述第一可分配空闲指针和第一边界指针,并根据所述第一边界指针更新所述第一资源分配单元的第一可分配资源范围;
和/或;
从所述第二底层状态节点的高地址向低地址遍历,更新所述第二可分配空闲指针和第二边界指针,并根据所述第二边界指针更新所述第二资源分配单元的第二可分配资源范围。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述待处理数据的数据长度发生变化时,目标共享资源树的第一颗粒度维度,和/或,所述第二颗粒度维度无法满足资源分配条件;
对所述目标共享资源树的所述第一颗粒度维度,和/或,所述第二颗粒度维度进行重新配置,以使所述第一颗粒度维度,和/或,所述第二颗粒度维度满足所述资源分配条件。
8.一种存储阵列的动态资源分配装置,其特征在于,包括:
接收模块,用于接收至少一个目标用户发送的资源分配请求;其中,每个资源请求携带有每个目标用户的待处理数据的数据长度;
分配模块,用于针对每个目标用户的待处理数据的数据长度,根据所述待处理数据的数据长度,确定至少一个共享资源树,通过所述至少一个共享资源树对所述待处理数据进行动态资源分配;其中,每个资源共享树包括:第一资源分配单元和第二资源分配单元;所述第一资源分配单元的第一颗粒度维度小于等于所述第二资源分配单元的第二颗粒度维度。
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的存储阵列的动态资源分配方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,计算机程序被处理器执行时实现权利要求1至7中任一项所述的存储阵列的动态资源分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311632527.1A CN117971113A (zh) | 2023-11-30 | 2023-11-30 | 存储阵列的动态资源分配方法、装置、电子设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311632527.1A CN117971113A (zh) | 2023-11-30 | 2023-11-30 | 存储阵列的动态资源分配方法、装置、电子设备、介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117971113A true CN117971113A (zh) | 2024-05-03 |
Family
ID=90861631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311632527.1A Pending CN117971113A (zh) | 2023-11-30 | 2023-11-30 | 存储阵列的动态资源分配方法、装置、电子设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117971113A (zh) |
-
2023
- 2023-11-30 CN CN202311632527.1A patent/CN117971113A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7606236B2 (en) | Forwarding information base lookup method | |
US11240155B2 (en) | Technologies for network device load balancers for accelerated functions as a service | |
US7733892B2 (en) | Buffer management method based on a bitmap table | |
US7930451B2 (en) | Buffer controller and management method thereof | |
US8380936B2 (en) | Multi-core processor system and multi-core processor | |
US10055153B2 (en) | Implementing hierarchical distributed-linked lists for network devices | |
US20030033307A1 (en) | Partitioning search key thereby distributing table across multiple non-contiguous memory segments, memory banks or memory modules | |
KR102594657B1 (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
WO2020168522A1 (zh) | 一种片上系统、访问命令的路由方法及终端 | |
US9785367B2 (en) | System and method for enabling high read rates to data element lists | |
US20130061009A1 (en) | High Performance Free Buffer Allocation and Deallocation | |
US20240152474A1 (en) | On-chip integrated circuit, data processing device, and data processing method | |
CN114389995A (zh) | 资源共享的方法、装置以及电子设备 | |
US20100325360A1 (en) | Multi-core processor and multi-core processor system | |
CN113126911A (zh) | 基于ddr3 sdram的队列管理方法、介质、设备 | |
CN117971113A (zh) | 存储阵列的动态资源分配方法、装置、电子设备、介质 | |
US20230222058A1 (en) | Zoned namespaces for computing device main memory | |
US20190379613A1 (en) | Technologies for providing adaptive utilization of different interconnects for workloads | |
US9767014B2 (en) | System and method for implementing distributed-linked lists for network devices | |
CN111782561B (zh) | 一种sram的存储空间分配方法、装置及芯片 | |
JP6555158B2 (ja) | 割当管理装置、割当管理方法及びプログラム | |
CN114489943A (zh) | 一种数据访问方法和装置 | |
US10067690B1 (en) | System and methods for flexible data access containers | |
WO2024001414A1 (zh) | 报文的缓存方法、装置、电子设备及存储介质 | |
US10698687B1 (en) | Pipelined resource allocation using size aligned allocation |
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 |