CN117331504A - 均衡随机挑选指针的方法、装置和电子设备 - Google Patents
均衡随机挑选指针的方法、装置和电子设备 Download PDFInfo
- Publication number
- CN117331504A CN117331504A CN202311302843.2A CN202311302843A CN117331504A CN 117331504 A CN117331504 A CN 117331504A CN 202311302843 A CN202311302843 A CN 202311302843A CN 117331504 A CN117331504 A CN 117331504A
- Authority
- CN
- China
- Prior art keywords
- pointers
- pointer
- pool
- pools
- random
- 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 53
- 230000015654 memory Effects 0.000 claims abstract description 54
- 238000013500 data storage Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种均衡随机挑选指针的方法、装置和电子设备,获取当前时钟周期所需的指针数量,通过伪随机数发生器产生一在随机范围内的随机数,该随机范围的宽度与交换设备中存储器的指针池子的数量一致。基于随机数在依次排列的多个指针池子中确定初始指针池子,从初始指针池子开始,按照排列顺序向初始指针池子的两个相反方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所需的指针数量的指针为止。该方案中由产生的随机数决定指针池子挑选的初始位置,向两个相反的方向分周期各挑选多个指针池子,避免了现有技术中每个周期均需进行所有指针池子的排序导致的复杂度高的问题,可以在保障指针池子的均匀性的基础上,简化挑选复杂度。
Description
技术领域
本申请涉及交换机数据存储技术领域,具体而言,涉及一种均衡随机挑选指针的方法、装置和电子设备。
背景技术
随着对核心交换机的带宽需求越来越大,一般会利用多个数据通路堆叠来达到更大的整体芯片带宽容量。大带宽容量交换机内部需要很大的报文缓存空间,这些缓存空间由多块存储器组合而成。多个数据通路在数据存储时需要先申请存储器的空闲地址(由地址指针指向),然后根据地址指针完成数据的存储。在设计上利用指针池子来维护每块存储器的可用空闲地址,当数据通道需要空闲地址时,将从指针池子中提取指针,数据通道按照指针指向将数据写入存储器中。当数据从存储器中被读取之后,对应的指针需重新释放进指针池子中。为了保证多个数据通道的数据均能正常存储,需要维持各个指针池子中的指针被均匀利用,避免出现某些指针池子的指针被耗尽的现象。
现有技术中,针对上述问题,采用对所有的指针池子的剩余指针数量进行排序的方式,每次选择剩余指针较多的多个指针池子以进行数据存储。但是,随着数据通道数量的持续增多,每个周期需要的指针相应增加,为了均匀性的考虑,所需的存储器的数量也增加。现有技术中采用的这种方式,每次均需对多个指针池子的剩余指针数量进行排序,在存储器数量较多、指针池子数据较多的场景下,该种方式存在排序算法复杂度增高,资源消耗增多等缺陷。
发明内容
本申请的目的包括,例如,提供了一种均衡随机挑选指针的方法、装置和电子设备,其能够在保障指针池子的均匀性的基础上,简化挑选复杂度。
本申请的实施例可以这样实现:
第一方面,本申请提供一种均衡随机挑选指针的方法,应用于交换设备,所述交换设备包括由多块依次排列的存储器构成的存储空间,各所述存储器具有对应的指针池子,所述指针池子中维护的指针指向所述存储器的可用空闲地址,所述方法包括:
获取当前时钟周期所需的指针数量;
通过伪随机数发生器产生一在随机范围内的随机数,所述随机范围的宽度与所述指针池子的数量一致;
基于所述随机数在依次排列的多个指针池子中确定初始指针池子;
从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
在可选的实施方式中,所述基于所述随机数在依次排列的多个指针池子中确定初始指针池子的步骤之前,所述方法还包括:
确定多个指针池子中剩余指针最多的指针池子和剩余指针最少的指针池子;
检测剩余指针最多的指针池子中的指针数量与剩余指针最少的指针池子中的指针数量之间的差值是否大于预设阈值;
在所述差值大于所述预设阈值的情况下,确定剩余指针最少的第一预设个数的指针池子,并对该第一预设个数的指针池子进行屏蔽标记,其中,屏蔽标记后的指针池子不参与指针池子的挑选。
在可选的实施方式中,所述从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选的步骤,包括:
从所述初始指针池子开始,在每一轮挑选中,按照排列顺序向所述初始指针池子的两个相反的方向分别挑选一个与所述初始指针池子相邻的且未进行屏蔽标记的指针池子,将挑选出的指针池子进行屏蔽标记,并分别从挑选出的指针池子中提取一个指针,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
在可选的实施方式中,所述方法还包括:
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值满足预设要求的情况下,确定剩余指针最多的第二预设个数的指针池子;
利用所述第二预设个数的指针池子替换掉挑选出的指针池子中的对应个数的指针池子,并从该第二预设个数的指针池子中提取出指针。
在可选的实施方式中,所述方法还包括:
将被替换掉的指针池子中提取出的指针释放至所述被替换掉的指针池子中。
在可选的实施方式中,判断所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值是否满足预设要求的步骤,包括:
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值小于第一阈值时,判定所述差值不满足预设要求;
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第一阈值且小于第二阈值时,基于产生的随机概率判断所述差值是否满足预设要求,其中,所述第一阈值小于第二阈值;
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第二阈值时,判定所述差值满足预设要求。
在可选的实施方式中,所述基于产生的随机概率判断所述差值是否满足预设要求的步骤,包括:
基于伪随机数发生器产生一随机概率;
检测所述随机概率是否小于设置的概率阈值;
在所述随机概率小于所述概率阈值的情况下,判定所述差值满足预设要求。
在可选的实施方式中,所述方法还包括:
根据提取的指针确定对应的存储器;
基于提取的指针在对应的存储器中指向的可用空闲地址执行数据存储操作。
第二方面,本申请提供一种均衡随机挑选指针的装置,应用于交换设备,所述交换设备包括由多块依次排列的存储器构成的存储空间,各所述存储器具有对应的指针池子,所述指针池子中维护的指针指向所述存储器的可用空闲地址,所述装置包括:
获取模块,用于获取当前时钟周期所需的指针数量;
处理模块,用于通过伪随机数发生器产生一在随机范围内的随机数,所述随机范围的宽度与所述指针池子的数量一致;
所述处理模块,还用于基于所述随机数在依次排列的多个指针池子中确定初始指针池子;
所述处理模块,还用于从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
第三方面,本申请提供一种电子设备,包括一个或多个存储介质和一个或多个与存储介质通信的处理器,一个或多个存储介质存储有处理器可执行的机器可执行指令,当电子设备运行时,处理器执行所述机器可执行指令,以执行前述实施方式中任意一项所述的方法。
本申请实施例的有益效果包括,例如:
本申请提供一种均衡随机挑选指针的方法、装置和电子设备,在交换设备中,获取当前时钟周期所需的指针数量,通过伪随机数发生器产生一在随机范围内的随机数,该随机范围的宽度与交换设备中存储器的指针池子的数量一致。基于随机数在依次排列的多个指针池子中确定初始指针池子,从初始指针池子开始,按照排列顺序向初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所需的指针数量的指针为止。该方案中由产生的随机数决定指针池子挑选的初始位置,向两个相反的方向分周期各挑选多个指针池子,避免了现有技术中每个周期均需进行所有指针池子的排序导致的复杂度高的问题,可以在保障指针池子的均匀性的基础上,简化挑选复杂度。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的均衡随机挑选指针的方法的流程图;
图2为本申请实施例提供的均衡随机挑选指针的方法中,屏蔽标记方法的流程图;
图3为本申请实施例提供的均衡随机挑选指针的方法中,替换方法的流程图;
图4为本申请实施例提供的均衡随机挑选指针的方法中,存储方法的流程图;
图5为本申请实施例提供的均衡随机挑选指针的方法下执行逻辑示意图;
图6为本申请实施例提供的均衡随机挑选指针的装置的功能模块框图;
图7为本申请实施例提供的电子设备的结构框图。
图标:110-均衡随机挑选指针的装置;111-获取模块;112-处理模块;120-处理器;130-存储器;140-通信模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本申请的描述中,需要说明的是,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。
图1是本申请实施例提供的一种均衡随机挑选指针的方法的流程图,该方法可以由均衡随机挑选指针的装置来执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于终端中,该终端可以是交换设备。本实施例中,交换设备包括由多块依次排列的存储器构成的存储空间,各个存储器具有对应的指针池子,指针池子中维护的指针指向存储器的可用空闲地址。
如图1所示,本实施例所提供的均衡随机挑选指针的方法包括以下步骤:
S11,获取当前时钟周期所需的指针数量。
S12,通过伪随机数发生器产生一在随机范围内的随机数,所述随机范围的宽度与所述指针池子的数量一致。
S13,基于所述随机数在依次排列的多个指针池子中确定初始指针池子。
S14,从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
本实施例中,每个时钟周期所需的指针数量与该时钟周期内所需进行数据存储的数据通道的数量一致。例如,当前时钟周期所需进行数据存储的数据通道的数量为8,则当前时钟周期所需的指针数量为8。其中,所需的指针数量小于指针池子的数量。
需要说明的是,在执行时,指针提取的数量一般是偶数,例如2、4、8等。若当前时钟周期所需进行数据存储的数据通道的数量为奇数,则可以在该奇数的基础上加1以确定当前时钟周期所需的指针数量。例如,当前时钟周期所需进行数据存储的数据通道的数量为7,则确定出的当前时钟周期所需的指针数量为8。在后续挑选出8个指针池子,并从中提取出8个指针之后,可以将其中一个指针释放回对应的指针池子中,从而获得7个数据通道所需的7个指针。
本实施例中,交换设备中组成存储空间的多个存储器依次排列,相应地,各个存储器所对应的指针池子也依次排列。
在数据通道需要进行数据存储时,需要基于存储器的空闲地址实现数据存储。各个存储器对应的指针池子中维护有指向存储器的空闲地址的指针。而为了指针池子中剩余指针的均匀性,需要基于一定机制挑选出指针池子,进而从挑选出的指针池子中提取出指针。
本实施例中,可通过伪随机数发生器产生一在随机范围内的随机数,伪随机数发生器产生的随机数的随机范围根据指针池子的数量进行设置,随机范围的宽度可与指针池子的数量一致。例如,指针池子的数量为64时,伪随机数发生器产生的随机数的位数可为6bit,相应地随机范围的宽度为64。
本实施例中,多个指针池子依次排列,假设具有64个指针池子,则该64个指针池子的编号为0、1、2……62、63。64个指针池子按照编号依次排列,可以是按照编号从小到大的顺序进行排列,也可以是按照编号从大到小的顺序进行排列。在此情形下,产生的随机数可以是0至63之间的任意随机数。
在利用伪随机数发生器产生随机数后,基于随机数在依次排列的多个指针池子中确定初始指针池子。例如,产生的随机数为10,上述64个指针池子中,编号为10的指针池子为初始指针池子。
本实施例中,从确定出的初始指针池子开始,向初始指针池子的两个相反的方向执行指针池子的挑选。按照设计原则,每个指针池子每个时钟周期最多只能被提取一个指针,因此,在需要提取多个指针的情况下,则需要从初始指针池子开始,向两个相反的方向执行多轮指针池子的挑选。
以上述为例,若所需的指针数量为8,初始指针池子为编号10的指针池子,则从编号为10的指针池子开始,从两个相反的方向进行指针池子的挑选,每一轮挑选时最多可以挑选出2个指针池子,则至少经历4轮挑选之后,可以挑选出8个指针池子,进而提取得到8个指针。
本实施例所提供的均衡随机挑选指针的方法,由产生的随机数决定指针池子挑选的初始位置,向两个相反的方向分周期各挑选多个指针池子,避免了现有技术中每个周期均需进行所有指针池子的排序导致的复杂度高的问题,可以在保障指针池子的均匀性的基础上,简化挑选复杂度。
本实施例中,基于随机性的原则进行指针池子的挑选,以保障指针池子中的指针的均匀性。考虑到可能出现指针池子中的剩余指针差距很大的情形,在这种情形下,为了避免进一步加大指针池子中剩余指针的差距,可以将剩余指针最少的设定个数的指针池子进行屏蔽标记,以不参与指针池子的挑选。基于此,请参阅图2,本实施例中,在执行指针池子的挑选之前,还可以包括以下步骤:
S21,确定多个指针池子中剩余指针最多的指针池子和剩余指针最少的指针池子。
S22,检测剩余指针最多的指针池子中的指针数量与剩余指针最少的指针池子中的指针数量之间的差值是否大于预设阈值,在所述差值大于所述预设阈值的情况下,执行以下步骤S23后再执行上述步骤S14,在所述差值小于或等于所述预设阈值的情况下,直接执行上述步骤S14。
S23,确定剩余指针最少的第一预设个数的指针池子,并对该第一预设个数的指针池子进行屏蔽标记,其中,屏蔽标记后的指针池子不参与指针池子的挑选。
本实施例中,在每个时钟周期内,首先可以确定当前多个指针池子中剩余指针最多的指针池子中的指针数量与剩余指针最少的指针池子中指针数量之间的差值是否大于预设阈值。在大于预设阈值的情况下,表明当前指针池子之间的剩余指针的差距较大,为了避免进一步加大剩余指针之间的差距,应当避免继续从剩余指针较少的指针池子中提取指针。
因此,本实施例中,在差值大于预设阈值的情况下,可以将当前剩余指针较少的指针池子进行屏蔽。具体地,可以根据各个指针池子中剩余指针的数量确定出剩余指针最少的第一预设个数的指针池子,并将确定出的指针池子进行屏蔽标记,该第一预设个数例如可以是2个。而进行屏蔽标记的指针池子不参与指针池子的挑选,也即,在上述步骤S14中进行指针挑选时,仅从未进行屏蔽标记的指针池子中进行挑选。
如此,可以避免剩余指针较少的指针池子中的指针进一步减少,从而导致指针池子之间剩余指针的进一步失衡。
本实施例中,上述步骤S14中进行指针池子挑选时,具体地,可以通过以下方式实现:
从初始指针池子开始,在每一轮挑选中,按照排列顺序向初始指针池子的两个相反的方向分别挑选一个与初始指针池子相邻的且未进行屏蔽标记的指针池子,将挑选出的指针池子进行屏蔽标记,并分别从挑选出的指针池子中提取一个指针,直至从挑选出的指针池子中提取出所需的指针数量的指针为止。
本实施例中,在每一轮挑选时,每个方向上仅能挑选一个指针池子,并且,仅能在未进行屏蔽标记的指针池子中进行挑选。在每一轮挑选确定指针池子之后,会将当前轮挑选的指针池子进行屏蔽标记,因此,下一轮挑选时并不会存在重复挑选的问题。
本实施例中,在每一轮挑选时均以初始指针池子为起点,分别向两个相反的方向进行遍历挑选,挑选出同时满足与初始指针池子相邻的、未进行屏蔽标记的指针池子。其中,屏蔽标记的指针池子可能是上一轮挑选后进行屏蔽标记的,也可能是上述确定出的剩余指针较少因而进行屏蔽标记的指针池子。
例如,原始的64个指针池子按照排列顺序组成64位的vector0[63:0],各个指针池子的编号分别依次对应vector0[63:0]的bit位。在剩余指针最多的指针池子与剩余指针最少的指针池子之间的差值大于预设阈值时,则原始的vector0[63:0]中将对剩余指针最少的两个指针池子进行屏蔽标记,此时,指针池子的状态变为vector1[63:0]。
在产生随机数确定初始指针池子后,在vector1[63:0]中,从初始指针池子向两个反向方向开始遍历挑选,挑选出的两个指针池子将进行屏蔽标记,重新生成新的状态vector2[63:0]。
在vector2[63:0]中,同样地从初始指针池子开始,向两个相反的方向从未进行屏蔽标记的指针池子中挑选,挑选出的两个指针池子进行屏蔽标记,并更新指针池子的状态为vector3[63:0]。
继续在vector3[63:0]中进行指针池子的挑选,挑选出的两个指针池子被屏蔽标记,并更新指针池子的状态为vector4[63:0]。然后再从vector4[63:0]中挑选两个指针池子,直至可以挑选出8个指针池子。
例如,若初始指针池子为编号为10的指针池子,则可以从编号为10的指针池子开始,向编号为9的方向和编号为11的方向进行遍历挑选,假设编号为9和11的指针池子未进行屏蔽标记,则可以挑选出编号为9和11的指针池子,并且,将编号为9和11的指针池子进行屏蔽标记。继续执行第二轮挑选,仍然从编号为10的指针池子开始向两个相反的方向遍历挑选,首先遍历至编号为9和11的指针池子,但是编号为9和11的指针池子已在上一轮挑选之后被屏蔽标记,因此,跳过编号为9和11的指针池子,遍历至编号为8和12的指针池子。若编号为8和12的指针池子未进行屏蔽标记,则可以挑选出编号为8和12的指针池子,并且,将编号为8和12的指针池子进行屏蔽标记。
以此类推,按照上述方式直至挑选出所需的例如8个指针池子为止,进而从挑选出的每个指针池子分别提取一个指针,得到8个指针为止。
需要说明的是,若产生的随机数较大或者较小,导致向两个相反的方向进行遍历挑选时,可能存在还未挑选出所需数量的指针池子时,在其中一个方向已遍历至依次排列的指针池子的末端。例如,若产生的随机数较大,假设为62,则在第一轮遍历挑选确定出编号为63的指针池子后,由于编号63为最大的编号,则第二轮挑选时无法向上进行遍历。
考虑到这种情况,为了遍历挑选的顺利执行,本实施例中,可以将指针池子的排列按照环状进行排列,也即,在编号63之后排列编号为0的指针池子,如此,指针池子从编号0至编号63构成环状排列。
在上述情形中,第二轮挑选时,则从编号为62的初始指针池子开始,跳过第一轮的编号为63的指针池子,遍历至编号为0的指针池子。
同理,若产生的随机数较小,遍历的原理可参见上述较大随机数下的遍历原理,本实施例在此不作赘述。
在按照上述方式挑选出所需的指针数量的指针的情况下,为了进一步使得每个指针池子中剩余指针更加均匀,可以利用当前剩余指针较多的设定数量的指针池子替换掉挑选出的指针池子中的对应数量的指针池子。
作为一种可能的实现方式,请参阅图3,本实施例中,在上述基础上,还可以包括以下步骤:
S31,在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值满足预设要求的情况下,确定剩余指针最多的第二预设个数的指针池子。
S32,利用所述第二预设个数的指针池子替换掉挑选出的指针池子中的对应个数的指针池子,并从该第二预设个数的指针池子中提取出指针。
本实施例中,在当前剩余指针最多的指针池子与剩余指针最少的指针池子中的指针数量相差较大的情况下,说明当前指针池子存在较大的不均匀的情况。为了缩小剩余较多的指针池子与其他指针池子之间的差距,因此,可以遍历各个指针池子,根据各个指针池子中剩余指针的数量确定出剩余指针最多的第二预设个数的指针池子,并利用确定出的第二预设个数的指针池子替换掉上述挑选出的指针池子中对应数量的指针池子。其中,所述的第二预设个数可以是2个。
本实施例中,可以在剩余指针最多的指针池子与剩余指针最少的指针池子的指针数量满足预设要求的情况下,启动上述的替换操作。
本实施例中,可以设置高低两个阈值来进行是否满足预设要求的判断。具体地,在剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值小于第一阈值时,判定差值不满足预设要求。
在剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第一阈值且小于第二阈值时,基于产生的随机概率判断差值是否满足预设要求,其中,第一阈值小于第二阈值。
此外,在剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第二阈值时,判定差值满足预设要求。
可见,本实施例中,在差值低于低档阈值(第一阈值)时,则不触发替换操作。在差值高于低档阈值但小于高档阈值(第二阈值)时,则以一定概率来触发替换操作。而在差值高于高档阈值时,则触发替换操作。
其中,在上述基于产生的随机概率判断差值是否满足预设要求时,可以基于伪随机数发生器产生一随机概率,检测随机概率是否小于设置的概率阈值,在随机概率小于概率阈值的情况下,判定差值满足预设要求。
例如,概率阈值可设置为512,而伪随机数发生器可产生一在0至1024范围内的随机概率。由此,可以理解为以二分之一的概率触发替换操作。
本实施例中,由于从被挑选出的指针池子中进行了指针的提取,因此,若利用剩余指针最多的两个指针池子替换掉了被挑选出的指针池子中的两个,则需要将被替换掉的指针池子中提取出的指针释放至被替换掉的指针池子中。
此外,本实施例中,考虑到在执行上述的指针池子的挑选的过程中,若在某个时钟周期内,遍历至的某个指针池子由于指针被耗尽导致无法提取到指针,或者是在时钟周期内无法挑选出所需数量的指针池子进而提取到所需数据的指针,则需要将已经提取出的指针释放至对应指针池子,并且数据存储处于等待周期,直到某个时钟周期能成功挑选出所需数量的指针为止。
本实施例中,通过以上方式,由伪随机数发生器产生的随机数决定指针池子挑选的初始位置,以向两个相反的方向分周期各挑选多个指针池子。并且,当发生剩余指针最多和最少的指针数量差值超过一定阈值的情况时,通过屏蔽剩余指针最少的指针池子以及利用剩余指针最多的指针池子来替换挑选出的指针池子,从而动态使得各个指针池子中的剩余指针达到均衡。
在上述基础上,请参阅图4,本实施例提供的均衡随机挑选指针的方法还包括以下步骤:
S41,根据提取的指针确定对应的存储器。
S42,基于提取的指针在对应的存储器中指向的可用空闲地址执行数据存储操作。
本实施例中,基于上述均衡操作下所提取的指针执行数据存储操作,可以使得各个存储器的剩余存储空间达到均衡,避免出现某个存储器存储空间耗尽而影响性能的情形出现。
为了进一步对本实施例提供的均衡随机挑选指针方法进行说明,以下结合图5中所示,对该方法的实现过程进行介绍。
由图5中所示,若指针池子的数量为64,编号从0至63,当前时钟周期内所需的指针数量为8。假设当前时钟周期内,剩余指针最多的指针池子与剩余指针最少的指针池子中指针数量的差值大于预设阈值,则可以将剩余指针最少的两个指针池子6、9进行屏蔽标记。
伪随机数发生器产生的随机数为10,则编号为10的指针池子为初始指针池子。在第一轮挑选中,从编号为10的指针池子向两个相反的方向开始遍历挑选,在正向方向上,首先遍历到编号11的指针池子,确定编号11的指针池子为被挑选指针池子0。在反向方向上,首先遍历到编号9的指针池子,但是编号9的指针池子已经被屏蔽标记,不参与挑选,因此跳过编号9的指针池子,遍历至编号为8的指针池子,确定编号为8的指针池子为被挑选指针池子1。
在第二轮挑选中,从编号为10的指针池子开始,在正向方向上,由于编号为11的指针池子在第一轮挑选中被挑选,因此,遍历至编号为12的指针池子,确定编号为12的指针池子被挑选。在反向方向上,编号为9的指针池子被屏蔽标记、编号为8的指针池子在第一轮挑选中被挑选,因此,确定编号为7的指针池子被挑选。
在第三轮挑选中,按上述逻辑,可以确定编号为5、13的指针池子被挑选。
在第四轮挑选中,从编号为10的初始指针池子开始,在正向方向上,编号为11、12、13的指针池子均在之前被挑选,因此,确定编号为14的指针池子被挑选。在反向方向上,编号为9、6的指针池子作为剩余指针最少的指针池子被屏蔽标记,而编号为8、7、5的指针池子均在之前被挑选,因此,确定编号为4的指针池子被挑选。
直至可以挑选出编号为8、11、7、12、5、13、4、14的8个指针池子。
若剩余指针最多的指针池子与剩余指针最少的指针池子的指针数量之间的差值满足预设要求,则触发替换操作。若当前剩余指针最多的两个指针池子为编号34、56的指针池子,则利用这两个指针池子替换上述挑选出的指针池子中的两个。该两个被替换的指针池子可以是最后挑选出的两个指针池子,或者是最先挑选出的两个指针池子。
基于同一发明构思,请参阅图6,示出了本申请实施例提供的均衡随机挑选指针的装置110的功能模块示意图,本实施例可以根据上述方法实施例对该均衡随机挑选指针的装置110进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块112中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,在采用对应各个功能划分各个功能模块的情况下,图6示出的均衡随机挑选指针的装置110只是一种装置示意图。其中,均衡随机挑选指针的装置110可以包括获取模块111和处理模块112,下面分别对该均衡随机挑选指针的装置110的各个功能模块的功能进行详细阐述。
获取模块111,用于获取当前时钟周期所需的指针数量;
可以理解,该获取模块111可以用于执行上述步骤S11,关于该获取模块111的详细实现方式可以参照上述步骤S11有关的内容。
处理模块112,用于通过伪随机数发生器产生一在随机范围内的随机数,所述随机范围的宽度与所述指针池子的数量一致;
所述处理模块112,还用于基于所述随机数在依次排列的多个指针池子中确定初始指针池子;
所述处理模块112,还用于从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
可以理解,该处理模块112可以用于执行上述步骤S12-步骤S14,关于该处理模块112的详细实现方式可以参照上述步骤S12-步骤S14有关的内容。
在一种可能的实现方式中,所述处理模块112还可以用于:
确定多个指针池子中剩余指针最多的指针池子和剩余指针最少的指针池子;
检测剩余指针最多的指针池子中的指针数量与剩余指针最少的指针池子中的指针数量之间的差值是否大于预设阈值;
在所述差值大于所述预设阈值的情况下,确定剩余指针最少的第一预设个数的指针池子,并对该第一预设个数的指针池子进行屏蔽标记,其中,屏蔽标记后的指针池子不参与指针池子的挑选。
在一种可能的实现方式中,所述处理模块112可以用于通过以下方式执行指针池子的挑选:
从所述初始指针池子开始,在每一轮挑选中,按照排列顺序向所述初始指针池子的两个相反的方向分别挑选一个与所述初始指针池子相邻的且未进行屏蔽标记的指针池子,将挑选出的指针池子进行屏蔽标记,并分别从挑选出的指针池子中提取一个指针,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
在一种可能的实现方式中,所述处理模块112还可以用于:
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值满足预设要求的情况下,确定剩余指针最多的第二预设个数的指针池子;
利用所述第二预设个数的指针池子替换掉挑选出的指针池子中的对应个数的指针池子,并从该第二预设个数的指针池子中提取出指针。
在一种可能的实现方式中,所述处理模块112还可以用于:
将被替换掉的指针池子中提取出的指针释放至所述被替换掉的指针池子中。
在一种可能的实现方式中,所述处理模块112可以用于通过以下方式判断差值是否满足预设要求:
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值小于第一阈值时,判定所述差值不满足预设要求;
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第一阈值且小于第二阈值时,基于产生的随机概率判断所述差值是否满足预设要求,其中,所述第一阈值小于第二阈值;
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第二阈值时,判定所述差值满足预设要求。
在一种可能的实现方式中,所述处理模块112可以用于通过以下方式基于产生的随机概率判断差值是否满足预设要求:
基于伪随机数发生器产生一随机概率;
检测所述随机概率是否小于设置的概率阈值;
在所述随机概率小于所述概率阈值的情况下,判定所述差值满足预设要求。
在一种可能的实现方式中,所述处理模块112还可以用于:
根据提取的指针确定对应的存储器;
基于提取的指针在对应的存储器中指向的可用空闲地址执行数据存储操作。
关于装置中的各模块的处理流程以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
请参阅图7,为本申请实施例提供的电子设备的结构框图,所述电子设备包括存储器130、处理器120及通信模块140。所述存储器130、处理器120以及通信模块140各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器130用于存储程序或者数据。所述存储器130可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
处理器120用于读/写存储器130中存储的数据或程序,并执行本申请任意实施例提供的均衡随机挑选指针的方法。
通信模块140用于通过网络建立电子设备与其他通信终端之间的通信连接,并用于通过网络收发数据。
应当理解的是,图7所示的结构仅为电子设备的结构示意图,所述电子设备还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
进一步地,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有机器可执行指令,机器可执行指令被执行时实现上述实施例提供的均衡随机挑选指针的方法。
具体地,该计算机可读存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该计算机可读存储介质上的计算机程序被运行时,能够执行上述均衡随机挑选指针的方法。关于计算机可读存储介质及其可执行指令被运行时,所涉及的过程,可以参照上述方法实施例中的相关说明,这里不再详述。
综上所述,本申请实施例提供的均衡随机挑选指针的方法、装置和电子设备,在交换设备中,获取当前时钟周期所需的指针数量,通过伪随机数发生器产生一在随机范围内的随机数,该随机范围的宽度与对应交换机中存储器的指针池子的数量一致。基于随机数在依次排列的多个指针池子中确定初始指针池子,从初始指针池子开始,按照排列顺序向初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所需的指针数量的指针为止。该方案中由产生的随机数决定指针池子挑选的初始位置,向两个相反的方向分周期各挑选多个指针池子,避免了现有技术中每个周期均需进行所有指针池子的排序导致的复杂度高的问题,可以在保障指针池子的均匀性的基础上,简化挑选复杂度。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种均衡随机挑选指针的方法,其特征在于,应用于交换设备,所述交换设备包括由多块依次排列的存储器构成的存储空间,各所述存储器具有对应的指针池子,所述指针池子中维护的指针指向所述存储器的可用空闲地址,所述方法包括:
获取当前时钟周期所需的指针数量;
通过伪随机数发生器产生一在随机范围内的随机数,所述随机范围的宽度与所述指针池子的数量一致;
基于所述随机数在依次排列的多个指针池子中确定初始指针池子;
从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
2.根据权利要求1所述的均衡随机挑选指针的方法,其特征在于,所述基于所述随机数在依次排列的多个指针池子中确定初始指针池子的步骤之前,所述方法还包括:
确定多个指针池子中剩余指针最多的指针池子和剩余指针最少的指针池子;
检测剩余指针最多的指针池子中的指针数量与剩余指针最少的指针池子中的指针数量之间的差值是否大于预设阈值;
在所述差值大于所述预设阈值的情况下,确定剩余指针最少的第一预设个数的指针池子,并对该第一预设个数的指针池子进行屏蔽标记,其中,屏蔽标记后的指针池子不参与指针池子的挑选。
3.根据权利要求2所述的均衡随机挑选指针的方法,其特征在于,所述从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选的步骤,包括:
从所述初始指针池子开始,在每一轮挑选中,按照排列顺序向所述初始指针池子的两个相反的方向分别挑选一个与所述初始指针池子相邻的且未进行屏蔽标记的指针池子,将挑选出的指针池子进行屏蔽标记,并分别从挑选出的指针池子中提取一个指针,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
4.根据权利要求2所述的均衡随机挑选指针的方法,其特征在于,所述方法还包括:
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值满足预设要求的情况下,确定剩余指针最多的第二预设个数的指针池子;
利用所述第二预设个数的指针池子替换掉挑选出的指针池子中的对应个数的指针池子,并从该第二预设个数的指针池子中提取出指针。
5.根据权利要求4所述的均衡随机挑选指针的方法,其特征在于,所述方法还包括:
将被替换掉的指针池子中提取出的指针释放至所述被替换掉的指针池子中。
6.根据权利要求4所述的均衡随机挑选指针的方法,其特征在于,判断所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值是否满足预设要求的步骤,包括:
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值小于第一阈值时,判定所述差值不满足预设要求;
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第一阈值且小于第二阈值时,基于产生的随机概率判断所述差值是否满足预设要求,其中,所述第一阈值小于第二阈值;
在所述剩余指针最多的指针池子和剩余指针最少的指针池子的指针数量之间的差值大于或等于第二阈值时,判定所述差值满足预设要求。
7.根据权利要求6所述的均衡随机挑选指针的方法,其特征在于,所述基于产生的随机概率判断所述差值是否满足预设要求的步骤,包括:
基于伪随机数发生器产生一随机概率;
检测所述随机概率是否小于设置的概率阈值;
在所述随机概率小于所述概率阈值的情况下,判定所述差值满足预设要求。
8.根据权利要求1-7任意一项所述的均衡随机挑选指针的方法,其特征在于,所述方法还包括:
根据提取的指针确定对应的存储器;
基于提取的指针在对应的存储器中指向的可用空闲地址执行数据存储操作。
9.一种均衡随机挑选指针的装置,其特征在于,应用于交换设备,所述交换设备包括由多块依次排列的存储器构成的存储空间,各所述存储器具有对应的指针池子,所述指针池子中维护的指针指向所述存储器的可用空闲地址,所述装置包括:
获取模块,用于获取当前时钟周期所需的指针数量;
处理模块,用于通过伪随机数发生器产生一在随机范围内的随机数,所述随机范围的宽度与所述指针池子的数量一致;
所述处理模块,还用于基于所述随机数在依次排列的多个指针池子中确定初始指针池子;
所述处理模块,还用于从所述初始指针池子开始,按照排列顺序向所述初始指针池子的两个相反的方向执行指针池子的挑选,直至从挑选出的指针池子中提取出所述所需的指针数量的指针为止。
10.一种电子设备,其特征在于,包括一个或多个存储介质和一个或多个与存储介质通信的处理器,一个或多个存储介质存储有处理器可执行的机器可执行指令,当电子设备运行时,处理器执行所述机器可执行指令,以执行权利要求1-8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311302843.2A CN117331504A (zh) | 2023-10-10 | 2023-10-10 | 均衡随机挑选指针的方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311302843.2A CN117331504A (zh) | 2023-10-10 | 2023-10-10 | 均衡随机挑选指针的方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117331504A true CN117331504A (zh) | 2024-01-02 |
Family
ID=89291388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311302843.2A Pending CN117331504A (zh) | 2023-10-10 | 2023-10-10 | 均衡随机挑选指针的方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117331504A (zh) |
-
2023
- 2023-10-10 CN CN202311302843.2A patent/CN117331504A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108769045B (zh) | Acl规则配置方法、装置及网络设备 | |
CN111416765A (zh) | 一种互动消息处理的方法及装置 | |
CN107465562B (zh) | 一种ctdb自定义分配虚拟ip的方法、装置、设备 | |
CN106708468B (zh) | 一种除法运算装置 | |
CN108875035B (zh) | 分布式文件系统的数据存储方法及相关设备 | |
CN108228341A (zh) | 内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN104572994B (zh) | 用于搜索数据的方法和装置 | |
CN113763034B (zh) | 广告数据的处理方法及装置 | |
CN117331504A (zh) | 均衡随机挑选指针的方法、装置和电子设备 | |
CN114268497A (zh) | 一种网络资产扫描方法、装置、设备和介质 | |
CN109767106A (zh) | 跨组织流程处理方法及装置 | |
JP5949606B2 (ja) | テスト設計支援装置及びプログラム | |
CN108243113B (zh) | 随机负载均衡的方法及装置 | |
CN111124672A (zh) | 基于Redis集群的数据分配的方法及相关设备 | |
CN115754413A (zh) | 示波器及数据处理方法 | |
CN113055459B (zh) | 日志投递方法和装置、电子设备及存储介质 | |
EP3376369B1 (en) | Method, apparatus and recording medium for processing division calculation | |
CN110460634B (zh) | 边缘计算共识请求管理方法和系统 | |
CN111985644B (zh) | 神经网络生成方法及装置、电子设备及存储介质 | |
CN113835679A (zh) | 一种随机数的生成方法、装置及系统 | |
CN107797764B (zh) | 确定路径的方法及其装置 | |
US9645793B2 (en) | Random permutation generator and method for generating a random permutation sequence | |
CN113157603A (zh) | 数据读取装置、方法、芯片、计算机设备及存储介质 | |
CN106302585A (zh) | 一种资源碰撞的检测指示方法及装置 | |
CN109885402B (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 |