CN113626181A - 一种内存清理方法、装置、设备及可读存储介质 - Google Patents
一种内存清理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN113626181A CN113626181A CN202110744436.1A CN202110744436A CN113626181A CN 113626181 A CN113626181 A CN 113626181A CN 202110744436 A CN202110744436 A CN 202110744436A CN 113626181 A CN113626181 A CN 113626181A
- Authority
- CN
- China
- Prior art keywords
- memory
- target
- message
- clearing
- cleaning
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 273
- 238000004140 cleaning Methods 0.000 title claims abstract description 116
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000010926 purge Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000005201 scrubbing Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种内存清理方法、装置、设备及可读存储介质,该方法包括:在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;将目标内存划分为与目标CPU的数量匹配的内存段;将内存段分别分配给参与内存清理的各个目标CPU;利用各个目标CPU分别独立确定每次清理的清除消息;结合与各个目标CPU对应的消息发送队列和消息等待队列,将各个清除消息发送给清除引擎;利用清除引擎,基于各个清除消息对目标内存进行清理。在本申请中,由于参与内存的清理的目标CPU的数量至少有2个,且目标CPU之间无需额外的通信交流,因而可以大大提高内存清除效率。
Description
技术领域
本申请涉及存储技术领域,特别是涉及一种内存清理方法、装置、设备及可读存储介质。
背景技术
内存清理在计算机设备开发和使用过程中,必不可少。例如,在SSD(Solid StateDisk,固态硬盘)的开发过程中,很多业务都有对大片的DDR内存进行清零需求,比如对SSD进行FORMAT(格式化)操作,或者对SSD进行TRIM(裁剪)操作等。
现有的内存清理方案中,在多CPU的情况下,为了较容易的精确控制清除进度,当所有CPU收到FORMAT或者TRIM命令时,需要把这些命令转发到其中某个固定的CPU上,让这个固定的CPU做清除操作,而其它CPU处于空闲状态。这样只让一个CPU做清除动作的方法不能充分利用多CPU的优势,而且需要CPU之间的消息交互,严重影响清除速度。其次,某个固定的CPU在清除的过程中,CPU给清除引擎发完消息后,要等到清除引擎清除完成并返回完成消息后CPU才会发起下次清除操作,这样不能充分利用CPU和清除引擎之间的队列深度,清除效率比较低下。
综上所述,如何有效地提高内存清楚速度等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种内存清理方法、装置、设备及可读存储介质,让多个CPU同时进行内存清理,以提高内存清理效率。
为解决上述技术问题,本申请提供如下技术方案:
一种内存清理方法,包括:
在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;
将所述目标内存划分为与所述目标CPU的数量匹配的内存段;
将所述内存段分别分配给参与内存清理的各个所述目标CPU;
利用各个所述目标CPU分别独立确定每次清理的清除消息;
结合与各个所述目标CPU对应的消息发送队列和消息等待队列,将各个所述清除消息发送给清除引擎;
利用所述清除引擎,基于各个所述清除消息对所述目标内存进行清理。
优选地,所述在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU,包括:
在需要清理所述目标内存的情况下,获取各个CPU的业务参数;
利用所述业务参数,从各个所述CPU中确定出至少两个所述目标CPU。
优选地,将所述目标内存划分为与所述目标CPU的数量匹配的内存段,包括:
将所述目标内存划分为长度与所述CPU业务参数匹配,且数量与所述目标CPU的数量匹配的所述内存段。
优选地,将所述目标内存划分为与所述目标CPU的数量匹配的内存段,包括:
将所述目标内存平均划分为与所述目标CPU的数量匹配的内存段。
优选地,利用各个所述目标CPU分别独立确定每次清理的清除消息,包括:
利用各个所述目标CPU分别基于自身对应的所述内存段,独立计算出每次清理的所述清除消息;所述清除消息包括清理长度和清理起始位置。
优选地,将所述内存段分别分配给参与内存清理的各个所述目标CPU之后,还包括:
获取各个所述内存段对应的未清理长度;
若存在所述未清理长度大于预设阈值的目标内存段,则确定所述目标内存段对应未清理段;
更换所述未清理段对应的所述目标CPU。
优选地,所述结合与各个所述目标CPU对应的消息发送队列和消息等待队列,将各个所述清除消息发送给清除引擎,包括:
按照所述消息发送队列将各个所述清除消息发送给所述清除引擎;
接收所述清除引擎反馈的应答消息;
利用所述应答消息对所述消息发送队列中的所述清除消息进行清理;
在所述消息发送队列满了的情况下,将当前要发送的所述清除消息存入所述消息等待队列。
一种内存清理装置,包括:
CPU确定模块,用于在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;
内存划分模块,用于将所述目标内存划分为与所述目标CPU的数量匹配的内存段;
内存分配模块,用于将所述内存段分别分配给参与内存清理的各个所述目标CPU;
清除消息确定模块,用于利用各个所述目标CPU分别独立确定每次清理的清除消息;
消息发送模块,用于结合与各个所述目标CPU对应的消息发送队列和消息等待队列,将各个所述清除消息发送给清除引擎;
内存清理模块,用于利用所述清除引擎,基于各个所述清除消息对所述目标内存进行清理。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述内存清理方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述内存清理方法的步骤。
应用本申请实施例所提供的方法,在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;将目标内存划分为与目标CPU的数量匹配的内存段;将内存段分别分配给参与内存清理的各个目标CPU;利用各个目标CPU分别独立确定每次清理的清除消息;结合与各个目标CPU对应的消息发送队列和消息等待队列,将各个清除消息发送给清除引擎;利用清除引擎,基于各个清除消息对目标内存进行清理。
在本申请中,当需要清理目标内存时,先找出至少两个需要参与内存清理的目标CPU。将目标内存进行分段,并将内存段分配给相应的目标CPU。然后,各个目标CPU便可以独立地确定出每次清理的清除消息。由于各个目标CPU分别独立确定各自对应的内存段,因而CPU之间可以省去关于确定清除消息的通信环节,且不会导致出现清除混乱问题。结合消息发送队列和消息等待队列,便可以将各个目标CPU确定的清除消息发送给清除引擎。清除引擎可以基于所接收的清除消息快速完成内存清除。由于参与内存的清理的目标CPU的数量至少有2个,且目标CPU之间无需额外的通信交流,因而可以大大提高内存清除效率。
相应地,本申请实施例还提供了与上述内存清理方法相对应的内存清理装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种内存清理方法的实施流程图;
图2为本申请实施例中一种内存清理装置的结构示意图;
图3为本申请实施例中一种电子设备的结构示意图;
图4为本申请实施例中一种电子设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例中一种内存清理方法的流程图,该方法包括以下步骤:
S101、在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU。
在本申请实施例中,可以在对SSD进行FORMAT(格式化)操作,或者对SSD进行TRIM(裁剪)操作等情况下,认为需要清理目标内存。目标内存的确定方式可以基于格式化或裁剪对应对象而确定。
在多核***中,往往存在多个CPU。在本申请中,为了提高内存清理效率,采用至少2个目标CPU来进行内存清理。也就是说,在本申请实施例中,不是固定某一个CPU来做内存清理,而是确定至少2个目标CPU来参与内存清理。
例如,多核***中共有4个CPU,则可以从这4个CPU中随机选出2或3个目标CPU,也可以直接将这4个CPU都确定为目标CPU。
S102、将目标内存划分为与目标CPU的数量匹配的内存段。
确定出目标CPU之后,便可将目标内存划分为与目标CPU的数量匹配的内存段。对于各个内存段的长度可以保持一致,也可以不一致。
例如,目标CPU的数量为N(N为大于1的整数),则可将目标内存划分为N段,当然也可以为2N段,或大于N段。即,对目标内存进行划分后,能够给每个目标CPU至少分一个内存段即可。
优选地,为了使得各个目标CPU间的负载均衡,步骤S102将目标内存划分为与目标CPU的数量匹配的内存段,可以包括:将目标内存平均划分为与目标CPU的数量匹配的内存段。也就是说,在划分目标内存时,可让每一个内存段的长度都相等。当然,也可以使得内存段的数量与目标CPU的数量保持一致,或使得内存段的数量是目标CPU的数量的整数倍,以使每一个目标CPU负责的内存段的总长度保证一致。
S103、将内存段分别分配给参与内存清理的各个目标CPU。
划分出内存段之后,便可将这些内存段分别分配给各个目标CPU。即,让至少2个目标CPU参与目标内存的清理,且每一个目标CPU仅处理被分配的内存段,如此,便可保障目标CPU之间不用相互协商也可以有序进行清理。
例如,目标内存的内存段共有3段,如内存段1、内存段2和内存段3,目标CPU、CPU1和CPU2和CPU3,则可将内存段1分配给CPU1,将内存段2分配给CPU2,将内存段3分配给CPU3。
S104、利用各个目标CPU分别独立确定每次清理的清除消息。
各个目标CPU得知自身需处理的内存段之后,便可以分别独立的针对自身的内存段来确定出每次清理的清除消息。
需要注意的是,这里的每次清理是针对清除引擎而言。由于清除引擎在接收到一个清除消息便进行一次内存清理,因而每一个清除消息都对应了清除引擎的一次清理。各个目标CPU在确定每次清理的清除消息,即各个目标CPU分别单独基于其对应的内存段,确定清除该内存段对应的清除消息。
一般地,对于清除引擎而言,其清理的长度存在上限,因而对于目标CPU而言,其所确定出的清除消息数量与被分配的内存段的长度、清除引擎每次清理内存的长度上限相关。在本实施例中,并不限定目标CPU所确定出的清除消息的数量。对应各个清除消息每次对应的清除长度也不做限定。
具体的,利用各个目标CPU分别独立确定每次清理的清除消息,包括:利用各个目标CPU分别基于自身对应的内存段,独立计算出每次清理的清除消息;清除消息包括清理长度和清理起始位置。也就是说,在将内存段分配给相应的目标CPU之后,便可触发这些目标CPU,使得各个目标CPU同时开始清理自己分配到的内存段。具体的,每个目标CPU在给清除引擎发清除消息前,都要先计算本次可清理的长度(一般不超过32k),然后根据本次可清理的长度更新本次清除的起始地址和剩余待清理的长度,然后把本次清理的起始地址和本次清理的长度通过清除消息告诉清除引擎去进行清除操作。即,清除消息中携带了清理长度和清理起始位置。
S105、结合与各个目标CPU对应的消息发送队列和消息等待队列,将各个清除消息发送给清除引擎。
消息发送队列即用于发送清除消息的队列,消息等待队列即在消息发送队列已满的情况下,暂时储存清除消息。
在本申请实施例中,每一个目标CPU可以单独维护对应的消息发送队列和消息等待队列,以加快向清除引擎发送清除消息的速度。
优选地,在本申请中的一种具体实施方式中,为了加快内存清除效率,还可以无需等待清理引擎的应答消息便可直接发送下一清除消息。具体实现过程中,步骤S105结合与各个目标CPU对应的消息发送队列和消息等待队列,将各个清除消息发送给清除引擎,可以具体包括:
步骤一、按照消息发送队列将各个清除消息发送给清除引擎;
步骤二、接收清除引擎反馈的应答消息;
步骤三、利用应答消息对消息发送队列中的清除消息进行清理;
步骤四、在消息发送队列满了的情况下,将当前要发送的清除消息存入消息等待队列。
为便于描述,下面将上述四个步骤结合起来进行说明。
每一个目标CPU给清除引擎发完一个清除消息后,只要被分配的内存段中待清除内存总剩余长度不为0,则可不用等待清除引擎回应答消息,而是直接给清除引擎发送下一条清除消息,直到清除消息发送队列被塞满消息为止。可将目标CPU发送清除消息的函数注册为回调函数。目标CPU每次发清除消息都要准确更新待清除的起始地址和待清除的总的剩余长度。
在消息发送队列被塞满清除消息后,停止发送,最后一个待发送的清除消息可加入到消息等待队列(PENDING LIST),此时可释放目标CPU。也就是说,被释放的目标CPU可以处理其他队列的消息(即非内存清除业务对应的消息),可以等把其他所有队列消息处理完后,再处理PENDING LIST,处理完PENDING LIST后,继续调用发送清除消息对应的回调函数,继续进行清除操作,这样循环执行,直到全部清除完成为止。
S106、利用清除引擎,基于各个清除消息对目标内存进行清理。
清除引擎接收到清除消息之后,便可以基于各个清除消息对目标内存进行清理。即,每接收到一个清除消息进行一次内存清理,直到目标内存对应的全部清除消息都被清除引擎接收并成功处理,便实现了多个CPU对目标内存进行清理。
应用本申请实施例所提供的方法,在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;将目标内存划分为与目标CPU的数量匹配的内存段;将内存段分别分配给参与内存清理的各个目标CPU;利用各个目标CPU分别独立确定每次清理的清除消息;结合与各个目标CPU对应的消息发送队列和消息等待队列,将各个清除消息发送给清除引擎;利用清除引擎,基于各个清除消息对目标内存进行清理。
在本申请中,当需要清理目标内存时,先找出至少两个需要参与内存清理的目标CPU。将目标内存进行分段,并将内存段分配给相应的目标CPU。然后,各个目标CPU便可以独立地确定出每次清理的清除消息。由于各个目标CPU分别独立确定各自对应的内存段,因而CPU之间可以省去关于确定清除消息的通信环节,且不会导致出现清除混乱问题。结合消息发送队列和消息等待队列,便可以将各个目标CPU确定的清除消息发送给清除引擎。清除引擎可以基于所接收的清除消息快速完成内存清除。由于参与内存的清理的目标CPU的数量至少有2个,且目标CPU之间无需额外的通信交流,因而可以大大提高内存清除效率。
需要说明的是,基于上述实施例,本申请实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
在本申请中的一种具体实施方式中,考虑到不同的CPU可能会因业务划分等原因导致其业务繁忙程度不同,为了保障内存清理效率,还可以结合CPU的相关业务参数,而确定参与内存清理的目标内存。也就是说,步骤S102在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU,可以具体包括:
步骤一、在需要清理目标内存的情况下,获取各个CPU的业务参数;
步骤二、利用业务参数,从各个CPU中确定出至少两个目标CPU。
为便于描述,下面将上述两个步骤结合起来进行说明。
在明确需要清理目标内存后,可以先获取各个CPU的业务参数,该业务参数可以具体为CPU占用率等可以标注CPU繁忙程度的参数。
得到业务参数之后,便可以基于阈值从CPU中筛选出业务相对空闲的若干个目标CPU。例如,可设置一个业务参数阈值,将业务参数小于该业务参数阈值的CPU确定为目标CPU。当然,也可以基于业务参数对CPU进行排序,然后基于该排序取固定数量且业务相对空闲的CPU作为目标CPU。
进一步地,在划分内存段时,为了均衡CPU负载,还可以将目标内存划分为长度与CPU业务参数匹配,且数量与目标CPU的数量匹配的内存段。也就是说,对于相对空闲的目标CPU可以划分出较长的内存段,对于相对繁忙的目标CPU可以划分较短的内存段。
在本申请中的一种具体实施方式,考虑到在实际应用中,业务需求会随着时间的变化而变化。为了保障内存清理效率,还可以在向目标CPU分配内存段之后,对各个CPU的清理进度/效率进行有效监控,从而对内存段分配进行微调。也就是说,在执行上述步骤S103将内存段分别分配给参与内存清理的各个目标CPU之后,还包括执行以下步骤:
步骤一、获取各个内存段对应的未清理长度;
步骤二、若存在未清理长度大于预设阈值的目标内存段,则确定目标内存段对应未清理段;
步骤三、更换未清理段对应的目标CPU。
为便于描述,下面将上述三个步骤结合起来进行说明。
各个内存段分配给相应的目标CPU之后,便可对各个CPU的清理进度进行有效监控。即可获取各个内存对应的未清理长度。在本实施例中,可以针对不同的时段给未清理长度设置一个阈值,然后,在发现未清理长度大于预设阈值的目标内存段之后,首先从目标内存段在确定出未清理段,然后将未清理段分配给除当前分配的目标CPU的其他目标CPU。例如,若发现CPU1对应的内存段还有78K未清理,而预设阈值为50K,此时可认为CPU1比较繁忙,难以快速对内存段进行清理,可以将剩余未清理的78K分配给CPU2进行清理。
相应于上面的方法实施例,本申请实施例还提供了一种内存清理装置,下文描述的内存清理装置与上文描述的内存清理方法可相互对应参照。
参见图2所示,该装置包括以下模块:
CPU确定模块101,用于在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;
内存划分模块102,用于将目标内存划分为与目标CPU的数量匹配的内存段;
内存分配模块103,用于将内存段分别分配给参与内存清理的各个目标CPU;
清除消息确定模块104,用于利用各个目标CPU分别独立确定每次清理的清除消息;
消息发送模块105,用于结合与各个目标CPU对应的消息发送队列和消息等待队列,将各个清除消息发送给清除引擎;
内存清理模块106,用于利用清除引擎,基于各个清除消息对目标内存进行清理。
应用本申请实施例所提供的装置,在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;将目标内存划分为与目标CPU的数量匹配的内存段;将内存段分别分配给参与内存清理的各个目标CPU;利用各个目标CPU分别独立确定每次清理的清除消息;结合与各个目标CPU对应的消息发送队列和消息等待队列,将各个清除消息发送给清除引擎;利用清除引擎,基于各个清除消息对目标内存进行清理。
在本申请中,当需要清理目标内存时,先找出至少两个需要参与内存清理的目标CPU。将目标内存进行分段,并将内存段分配给相应的目标CPU。然后,各个目标CPU便可以独立地确定出每次清理的清除消息。由于各个目标CPU分别独立确定各自对应的内存段,因而CPU之间可以省去关于确定清除消息的通信环节,且不会导致出现清除混乱问题。结合消息发送队列和消息等待队列,便可以将各个目标CPU确定的清除消息发送给清除引擎。清除引擎可以基于所接收的清除消息快速完成内存清除。由于参与内存的清理的目标CPU的数量至少有2个,且目标CPU之间无需额外的通信交流,因而可以大大提高内存清除效率。
在本申请的一种具体实施方式中,CPU确定模块101,具体用于在需要清理目标内存的情况下,获取各个CPU的业务参数;利用业务参数,从各个CPU中确定出至少两个目标CPU。
在本申请的一种具体实施方式中,内存划分模块102,具体用于将目标内存划分为长度与CPU业务参数匹配,且数量与目标CPU的数量匹配的内存段。
在本申请的一种具体实施方式中,内存划分模块102,具体用于将目标内存平均划分为与目标CPU的数量匹配的内存段。
在本申请的一种具体实施方式中,清除消息确定模块104,具体用于利用各个目标CPU分别基于自身对应的内存段,独立计算出每次清理的清除消息;清除消息包括清理长度和清理起始位置。
在本申请的一种具体实施方式中,还包括:
动态调整模块,用于将内存段分别分配给参与内存清理的各个目标CPU之后,获取各个内存段对应的未清理长度;若存在未清理长度大于预设阈值的目标内存段,则确定目标内存段对应未清理段;更换未清理段对应的目标CPU。
在本申请的一种具体实施方式中,消息发送模块105,具体用于按照消息发送队列将各个清除消息发送给清除引擎;接收清除引擎反馈的应答消息;利用应答消息对消息发送队列中的清除消息进行清理;在消息发送队列满了的情况下,将当前要发送的清除消息存入消息等待队列。
相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种内存清理方法可相互对应参照。
参见图3所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的内存清理方法的步骤。
具体的,请参考图4,图4为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作***341。
上文所描述的内存清理方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种内存清理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的内存清理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
Claims (10)
1.一种内存清理方法,其特征在于,包括:
在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;
将所述目标内存划分为与所述目标CPU的数量匹配的内存段;
将所述内存段分别分配给参与内存清理的各个所述目标CPU;
利用各个所述目标CPU分别独立确定每次清理的清除消息;
结合与各个所述目标CPU对应的消息发送队列和消息等待队列,将各个所述清除消息发送给清除引擎;
利用所述清除引擎,基于各个所述清除消息对所述目标内存进行清理。
2.根据权利要求1所述的内存清理方法,其特征在于,所述在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU,包括:
在需要清理所述目标内存的情况下,获取各个CPU的业务参数;
利用所述业务参数,从各个所述CPU中确定出至少两个所述目标CPU。
3.根据权利要求2所述的内存清理方法,其特征在于,将所述目标内存划分为与所述目标CPU的数量匹配的内存段,包括:
将所述目标内存划分为长度与所述CPU业务参数匹配,且数量与所述目标CPU的数量匹配的所述内存段。
4.根据权利要求1所述的内存清理方法,其特征在于,将所述目标内存划分为与所述目标CPU的数量匹配的内存段,包括:
将所述目标内存平均划分为与所述目标CPU的数量匹配的内存段。
5.根据权利要求1所述的内存清理方法,其特征在于,利用各个所述目标CPU分别独立确定每次清理的清除消息,包括:
利用各个所述目标CPU分别基于自身对应的所述内存段,独立计算出每次清理的所述清除消息;所述清除消息包括清理长度和清理起始位置。
6.根据权利要求1所述的内存清理方法,其特征在于,将所述内存段分别分配给参与内存清理的各个所述目标CPU之后,还包括:
获取各个所述内存段对应的未清理长度;
若存在所述未清理长度大于预设阈值的目标内存段,则确定所述目标内存段对应未清理段;
更换所述未清理段对应的所述目标CPU。
7.根据权利要求1至6任一项所述的内存清理方法,其特征在于,所述结合与各个所述目标CPU对应的消息发送队列和消息等待队列,将各个所述清除消息发送给清除引擎,包括:
按照所述消息发送队列将各个所述清除消息发送给所述清除引擎;
接收所述清除引擎反馈的应答消息;
利用所述应答消息对所述消息发送队列中的所述清除消息进行清理;
在所述消息发送队列满了的情况下,将当前要发送的所述清除消息存入所述消息等待队列。
8.一种内存清理装置,其特征在于,包括:
CPU确定模块,用于在需要清理目标内存的情况下,确定参与内存清理的至少两个目标CPU;
内存划分模块,用于将所述目标内存划分为与所述目标CPU的数量匹配的内存段;
内存分配模块,用于将所述内存段分别分配给参与内存清理的各个所述目标CPU;
清除消息确定模块,用于利用各个所述目标CPU分别独立确定每次清理的清除消息;
消息发送模块,用于结合与各个所述目标CPU对应的消息发送队列和消息等待队列,将各个所述清除消息发送给清除引擎;
内存清理模块,用于利用所述清除引擎,基于各个所述清除消息对所述目标内存进行清理。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述内存清理方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述内存清理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110744436.1A CN113626181B (zh) | 2021-06-30 | 2021-06-30 | 一种内存清理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110744436.1A CN113626181B (zh) | 2021-06-30 | 2021-06-30 | 一种内存清理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113626181A true CN113626181A (zh) | 2021-11-09 |
CN113626181B CN113626181B (zh) | 2023-07-25 |
Family
ID=78378820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110744436.1A Active CN113626181B (zh) | 2021-06-30 | 2021-06-30 | 一种内存清理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113626181B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070239949A1 (en) * | 2006-03-31 | 2007-10-11 | Lenovo (Singapore) Pte. Ltd. | Method and apparatus for reclaiming space in memory |
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理***及方法 |
CN101178669A (zh) * | 2007-12-13 | 2008-05-14 | 华为技术有限公司 | 资源回收方法及装置 |
CN101178679A (zh) * | 2007-12-14 | 2008-05-14 | 华为技术有限公司 | 多核***中内存核查的方法和*** |
CN102799471A (zh) * | 2012-05-25 | 2012-11-28 | 上海斐讯数据通信技术有限公司 | 操作***的进程回收方法及*** |
CN103544063A (zh) * | 2013-09-30 | 2014-01-29 | 三星电子(中国)研发中心 | 应用于安卓平台的进程清除方法和装置 |
CN103581008A (zh) * | 2012-08-07 | 2014-02-12 | 杭州华三通信技术有限公司 | 路由器及其软件升级方法 |
CN105205409A (zh) * | 2015-09-14 | 2015-12-30 | 浪潮电子信息产业股份有限公司 | 一种防止内存复用中数据泄露的方法及计算机*** |
CN107315622A (zh) * | 2017-06-19 | 2017-11-03 | 杭州迪普科技股份有限公司 | 一种缓存管理的方法及装置 |
CN110069422A (zh) * | 2018-01-23 | 2019-07-30 | 普天信息技术有限公司 | 基于mips多核处理器的内存缓冲区回收方法 |
CN112286688A (zh) * | 2020-11-05 | 2021-01-29 | 北京深维科技有限公司 | 一种内存管理和使用方法、装置、设备和介质 |
-
2021
- 2021-06-30 CN CN202110744436.1A patent/CN113626181B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070239949A1 (en) * | 2006-03-31 | 2007-10-11 | Lenovo (Singapore) Pte. Ltd. | Method and apparatus for reclaiming space in memory |
CN101055533A (zh) * | 2007-05-28 | 2007-10-17 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理***及方法 |
CN101178669A (zh) * | 2007-12-13 | 2008-05-14 | 华为技术有限公司 | 资源回收方法及装置 |
CN101178679A (zh) * | 2007-12-14 | 2008-05-14 | 华为技术有限公司 | 多核***中内存核查的方法和*** |
CN102799471A (zh) * | 2012-05-25 | 2012-11-28 | 上海斐讯数据通信技术有限公司 | 操作***的进程回收方法及*** |
CN103581008A (zh) * | 2012-08-07 | 2014-02-12 | 杭州华三通信技术有限公司 | 路由器及其软件升级方法 |
CN103544063A (zh) * | 2013-09-30 | 2014-01-29 | 三星电子(中国)研发中心 | 应用于安卓平台的进程清除方法和装置 |
CN105205409A (zh) * | 2015-09-14 | 2015-12-30 | 浪潮电子信息产业股份有限公司 | 一种防止内存复用中数据泄露的方法及计算机*** |
CN107315622A (zh) * | 2017-06-19 | 2017-11-03 | 杭州迪普科技股份有限公司 | 一种缓存管理的方法及装置 |
CN110069422A (zh) * | 2018-01-23 | 2019-07-30 | 普天信息技术有限公司 | 基于mips多核处理器的内存缓冲区回收方法 |
CN112286688A (zh) * | 2020-11-05 | 2021-01-29 | 北京深维科技有限公司 | 一种内存管理和使用方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113626181B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020211579A1 (zh) | 一种基于分布式批量处理***的处理方法、装置及*** | |
CN110389843B (zh) | 一种业务调度方法、装置、设备及可读存储介质 | |
CN109525410B (zh) | 分布式存储***升级管理的方法、装置及分布式存储*** | |
US20060095247A1 (en) | Predictive analysis of availability of systems and/or system components | |
CN107682417B (zh) | 一种数据节点的任务分配方法和装置 | |
CN105740063A (zh) | 一种数据处理方法及装置 | |
CN111309644B (zh) | 一种内存分配方法、装置和计算机可读存储介质 | |
CN112269661B (zh) | 基于Kafka集群的分区迁移方法和装置 | |
CN109902038B (zh) | 一种PCIe总线地址空间分配方法及装置 | |
CN112256433B (zh) | 基于Kafka集群的分区迁移方法和装置 | |
CN111338779A (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN106775975B (zh) | 进程调度方法及装置 | |
CN112261125B (zh) | 集中单元的云化部署方法、装置及*** | |
CN113626173A (zh) | 调度方法、装置及存储介质 | |
CN116483546B (zh) | 分布式训练任务调度方法、装置、设备及存储介质 | |
CN113347238A (zh) | 基于区块链的消息分区方法及***、设备、存储介质 | |
CN112631994A (zh) | 数据迁移方法及*** | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN113626181A (zh) | 一种内存清理方法、装置、设备及可读存储介质 | |
CN113849295A (zh) | 模型训练的方法、装置及计算机可读存储介质 | |
CN116954816A (zh) | 容器集群控制方法、装置、设备及计算机存储介质 | |
CN110750362A (zh) | 生物信息的分析方法、装置和存储介质 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
CN107656810B (zh) | 数据中心环境下保证延迟敏感程序服务质量的方法 | |
CN112748883A (zh) | 一种io请求流水线处理设备、方法、***及存储介质 |
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 |