CN116010019A - 一种内存资源的分配方法、相关装置及设备 - Google Patents
一种内存资源的分配方法、相关装置及设备 Download PDFInfo
- Publication number
- CN116010019A CN116010019A CN202111237497.5A CN202111237497A CN116010019A CN 116010019 A CN116010019 A CN 116010019A CN 202111237497 A CN202111237497 A CN 202111237497A CN 116010019 A CN116010019 A CN 116010019A
- Authority
- CN
- China
- Prior art keywords
- resource
- amount
- memory
- resources
- space
- 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
Images
Landscapes
- Memory System (AREA)
Abstract
本申请实施例公开了一种内存资源的分配方法、相关装置及设备,用于提高内存资源的分配或能耗的合理性。本申请实施例方法包括:获取目标业务在当前时刻的资源占用率,资源占用率为目标业务的已使用资源量与已分配资源量之间的比值,若资源占用率大于第一占用率阈值,则确定扩张资源量,若扩张资源量大于第一堆空间在当前时刻的剩余资源量,则计算扩张资源量与剩余资源量之间的第一资源差值,第一堆空间为根据目标业务的业务场景所确定的,从第二堆空间中划分出与第一资源差值对应的第一内存资源,第二堆空间为根据目标业务在历史时段内的资源分配情况所确定的,为目标业务分配第一内存资源以及第一堆空间中剩余资源量所对应的内存资源。
Description
技术领域
本申请实施例涉及资源存储管理技术领域,尤其涉及一种内存资源的分配方法、相关装置及设备。
背景技术
虚拟机可以具有其自己的存储器空间、操作系统实例、以及资源集,或可以共享某些资源,在虚拟机运行时,虚拟机中会创建有用于存储对象的空间称为堆,且所有的对象实例以及数组都应当在运行时分配在堆上,即需要分配合适的堆空间以支持对象实例或数组的运行。
而传统技术通常采用基于固定上限的堆空间管理方式,即虚拟机启动时会预先配置初始大小的堆空间,使得虚拟机在运行期间可以根据需要对堆空间进行扩充,但最大不得超过最大堆空间,即虚拟机可使用的堆空间不超过预先配置的最大堆空间,但是,在对象实例实际在运行时,采用基于固定上限的堆空间管理方式,当对象实例对堆空间的内存资源的需求下降的情况时,由于堆空间分配的内存资源的达到固定上限后,不会根据需求下降而发生相应的变化,仍然会从堆空间中为对象实例分配与固定上限大小相同的内存资源,因此容易导致分配给该对象实例的堆空间的内存资源过多,内存资源的使用成本增加,从而导致堆空间的内存资源浪费。
发明内容
本申请实施例提供了一种内存资源的分配方法、相关装置及设备,用于根据扩张资源量与剩余资源量之间的第一资源差值确定与目标业务适配的内存资源以及该适配的内存资源的来源,能够降低内存资源的使用成本,从而提高内存资源的分配合理性。
有鉴于此,本申请一方面提供一种内存资源的分配方法,包括:
获取目标业务在当前时刻的资源占用率,其中,资源占用率为目标业务的已使用资源量与已分配资源量之间的比值;
若资源占用率大于第一占用率阈值,则确定扩张资源量;
若扩张资源量大于第一堆空间在当前时刻的剩余资源量,则计算扩张资源量与剩余资源量之间的第一资源差值,其中,第一堆空间为根据目标业务的业务场景所确定的;
从第二堆空间中划分出与第一资源差值对应的第一内存资源,其中,第二堆空间为根据目标业务在历史时段内的资源分配情况所确定的;
为目标业务分配第一内存资源以及第一堆空间中剩余资源量所对应的内存资源。
本申请的另一方面提供一种内存资源的分配装置,包括:
获取单元,用于获取目标业务在当前时刻的资源占用率,其中,资源占用率为目标业务的已使用资源量与已分配资源量之间的比值;
确定单元,用于若资源占用率大于第一占用率阈值,则确定扩张资源量;
处理单元,用于若扩张资源量大于第一堆空间在当前时刻的剩余资源量,则计算扩张资源量与剩余资源量之间的第一资源差值,其中,第一堆空间为根据目标业务的业务场景所确定的;
处理单元,还用于从第二堆空间中划分出与第一资源差值对应的第一内存资源,其中,第二堆空间为根据目标业务在历史时段内的资源分配情况所确定的;
处理单元,还用于为目标业务分配第一内存资源以及第一堆空间中剩余资源量所对应的内存资源。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,
获取单元,还用于获取目标业务所对应的历史资源使用数据;
确定单元,还用于根据历史资源使用数据中的最大资源使用量与第一堆空间所对应的内存资源量之间的差值,确定第二堆空间。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,
获取单元,还用于根据目标业务的业务场景和历史资源堆空间之间的对应的关系,获取历史第一资源堆空间;
确定单元,还用于根据历史第一堆空间确定第一堆空间。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,
处理单元,还用于若扩张资源量小于或等于第一堆空间在当前时刻的剩余资源量,则从第一堆空间中剩余资源量所对应的内存资源中划分出与扩张资源量的大小相对应的第二内存资源;
处理单元,还用于为目标业务分配第二内存资源。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,处理单元具体可以用于:
若第一资源差值大于第二堆空间中内存资源量,则计算扩张资源量与预设缩减系数之间的第一乘积,其中,预设缩减系数大于0且小于1;
若第一乘积小于或等于资源限制阈值,则从第二堆空间中划分出与第一乘积相对应的第一内存资源。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,
处理单元,还用于若第一乘积大于资源限制阈值,则将目标业务的业务标识添加至待重新分配内存资源的消息队列;
处理单元,还用于当经过预设时长时,按照消息队列中业务标识的排序,对业务标识对应的目标业务重新进行资源分配。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,
处理单元,还用于若资源占用率小于第二占用率阈值,且已分配资源量大于第一堆空间中内存资源量,则对已分配资源量所对应的内存资源进行资源释放,其中,第二占用率阈值大于0且小于第一占用率阈值。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,处理单元具体可以用于:
计算已分配资源量与第一堆空间中的内存资源量之间的第二差值;
从已分配资源量所对应的内存资源中释放与第二差值相对应的第三内存资源。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,处理单元具体可以用于:
计算已分配资源量和已使用资源量之间的差值与紧缩比例系数的第二乘积,其中,紧缩比例系数大于0且小于1;
若第二乘积小于第二差值,则从已分配资源量所对应的内存资源中释放与第二乘积相对应的第三内存资源。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,
处理单元,还用于若资源占用率小于或等于第一占用率阈值,且大于或等于第二占用率阈值,则从已分配资源量所对应的内存资源中获取第四内存资源;
处理单元,还用于为目标业务分配第四内存资源。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,确定单元具体可以用于:
从第一堆空间在当前时刻的剩余资源量,将与已分配资源量的大小相同的资源量确定为扩张资源量。
在一种可能的设计中,在本申请实施例的另一方面的一种实现方式中,确定单元具体可以用于:
从第一堆空间在当前时刻的剩余资源量,将与初始资源量的大小相同的资源量确定为扩张资源量,其中,初始资源量为根据目标业务的业务场景所确定的。
本申请另一方面提供了一种计算机设备,包括:存储器、收发器、处理器以及总线系统;
其中,存储器用于存储程序;
处理器用于执行存储器中的程序时实现如上述各方面的方法;
总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。
本申请的另一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。网络设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网络设备执行上述各方面所提供的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
通过获取目标业务在当前时刻的资源占用率,当资源占用率大于第一占用率阈值时,可以确定扩张资源量,并当扩张资源量大于第一堆空间在当前时刻的剩余资源量时,计算扩张资源量与剩余资源量之间的第一资源差值,然后,从第二堆空间中划分出与第一资源差值对应的第一内存资源,为目标业务分配第一内存资源以及第一堆空间中剩余资源量所对应的内存资源。通过上述方式,能够通过资源占用率确定需要将内存资源扩张分配给目标业务时,可以确定扩张资源量,并可以根据扩张资源量与剩余资源量之间的第一资源差值确定与目标业务适配的内存资源以及该适配的内存资源的来源,即第一内存资源和剩余资源量对应的内存资源,能够避免分配给目标业务的内存资源不合理的情况,降低内存资源的使用成本,从而提高内存资源的分配合理性。
附图说明
图1是本申请实施例中资源控制系统的一个架构示意图;
图2是本申请实施例中内存资源的分配方法的一个实施例流程图;
图3是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图4是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图5是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图6是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图7是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图8是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图9是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图10是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图11是本申请实施例中内存资源的分配方法的另一个实施例流程图;
图12是本申请实施例中内存资源的分配方法的一个原理示意图;
图13是本申请实施例中内存资源的分配方法的另一个原理示意图;
图14是本申请实施例中内存资源的分配装置的一个实施例示意图;
图15是本申请实施例中计算机设备的一个实施例示意图。
具体实施方式
本申请实施例提供了一种内存资源的分配方法、相关装置及设备,用于根据扩张资源量与剩余资源量之间的第一资源差值确定与目标业务适配的内存资源以及该适配的内存资源的来源,即第一内存资源和剩余资源量对应的内存资源,能够避免分配给目标业务的内存资源不合理的情况,降低内存资源的使用成本,从而提高内存资源的分配合理性。
本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请提供的内存资源的分配方法可以应用于通过内存资源分配完成虚拟业务或实体业务的运行或交易等的场景中,作为示例,例如通过给外卖业务分配合适的内存资源完成外卖订单的交易。作为另一个示例,例如通过对气象业务分配合适的内存资源完成气象资源的播报或通知等。作为再一示例,例如通过给话费充值业务分配合成的内存资源完成话费订单充值交易。在上述种种场景中,为了完成内存资源的分配,通常是通过采用基于固定上限的堆空间管理方式,但是,在对象实例实际在运行时,采用基于固定上限的堆空间管理方式,当对象实例对堆空间的内存资源的需求下降的情况时,由于堆空间分配的内存资源的达到固定上限后,不会根据需求下降而发生相应的变化,仍然会从堆空间中为对象实例分配与固定上限大小相同的内存资源,因此容易导致分配给该对象实例的堆空间的内存资源过多,内存资源的使用成本增加,从而导致堆空间的内存资源浪费。
为了解决上述问题,本申请提出了一种内存资源的分配方法,该方法应用于图1所示的资源控制系统,请参阅图1,图1为本申请实施例中资源控制系统的一个架构示意图,如图1所示,服务器通过获取终端设备提供的目标业务在当前时刻的资源占用率,当资源占用率大于第一占用率阈值时,可以确定扩张资源量,并当扩张资源量大于第一堆空间在当前时刻的剩余资源量时,计算扩张资源量与剩余资源量之间的第一资源差值,然后,从第二堆空间中划分出与第一资源差值对应的第一内存资源,为目标业务分配第一内存资源以及第一堆空间中剩余资源量所对应的内存资源。通过上述方式,能够通过资源占用率确定需要将内存资源扩张分配给目标业务时,可以确定扩张资源量,并可以根据扩张资源量与剩余资源量之间的第一资源差值确定与目标业务适配的内存资源以及该适配的内存资源的来源,即第一内存资源和剩余资源量对应的内存资源,能够避免分配给目标业务的内存资源不合理的情况,降低内存资源的使用成本,从而提高内存资源的分配合理性。
随着信息的飞速发展,云技术(Cloud technology)也逐渐走入人们生活的方方面面。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
而云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
可以理解的是,图1中仅示出了一种终端设备,在实际场景中可以由更多种类的终端设备参与到数据处理的过程中,终端设备包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等,具体数量和种类因实际场景而定,具体此处不做限定。另外,图1中示出了一个服务器,但在实际场景中,也可以有多个服务器的参与,特别是在多模型训练交互的场景中,服务器的数量因实际场景而定,具体此处不做限定。
需要注意的是,本实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdelivery network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,终端设备以及服务器可以连接组成区块链网络,本申请在此不做限制。
为了解决上述问题,本申请提出了一种内存资源的分配方法,该方法一般由服务器或终端设备执行,相应地,应用于内存资源的分配装置一般设置于服务器或终端设备中。
可以理解的是,如本申请所公开的内存资源的分配方法、相关设备以及装置,其中多个服务器或终端设备可以组成为一区块链,而服务器或终端设备为区块链上的节点。在实际应用中,可以在区块链中需要进行节点与节点之间的数据共享,每个节点上可以存储有资源数据等。
下面将对本申请中内存资源的分配方法进行介绍,请参阅图2,本申请实施例中内存资源的分配方法一个实施例包括:
在步骤S101中,获取目标业务在当前时刻的资源占用率,其中,资源占用率为目标业务的已使用资源量与已分配资源量之间的比值;
在步骤S102中,若资源占用率大于第一占用率阈值,则确定扩张资源量;
在步骤S103中,若扩张资源量大于第一堆空间在当前时刻的剩余资源量,则计算扩张资源量与剩余资源量之间的第一资源差值,其中,第一堆空间为根据目标业务的业务场景所确定的;
在步骤S104中,从第二堆空间中划分出与第一资源差值对应的第一内存资源,其中,第二堆空间为根据目标业务在历史时段内的资源分配情况所确定的;
在步骤S105中,为目标业务分配第一内存资源以及第一堆空间中剩余资源量所对应的内存资源。
在本实施例中,由于虚拟机可以通过垃圾收集器进行内存管理,其中,垃圾收集器用于管理堆空间中的对象的创建和回收,垃圾收集器创建对象时,垃圾收集器会先根据对象的属性为对象分配相应的存储空间,而用于存储对象的空间称为堆空间,垃圾收集器回收对象时,是指对象使用完毕后,垃圾收集器用于回收对象占用的内存空间,因此,针对于每个业务场景都分配有相应的存储空间,如图13所示,具体可以表现为第一堆空间以及第二堆空间,进一步地,当每次目标业务运行后,可以获取目标业务的已使用资源量以及已分配资源量,来计算资源占用率,并可以通过资源占用率确定是否需要将内存资源扩张分配给目标业务,然后,当需要将内存资源扩张分配给目标业务时,可以先确定扩张资源量,并计算扩张资源量与第一堆空间在当前时刻的剩余资源量之间的第一资源差值,进而可以通过第一资源差值确定与目标业务适配的内存资源以及该适配的内存资源的来源,即第一内存资源和剩余资源量对应的内存资源,能够避免分配给目标业务的内存资源不合理的情况,降低内存资源的使用成本,从而提高内存资源的分配合理性。
其中,第一堆空间指的是虚拟机运行时可长期占用的最大堆空间大小,如图12所示,具体可以表现为最大堆空间(MaxHeapSize),可以理解为是分配给每个业务场景的存储空间的空间上限,第一堆空间中内存资源在业务运行时优先被分配使用。第二堆空间指的是虚拟机运行时可临时额外占用的堆空间大小,如图13所示,具体可以表现为备用堆空间(BackupHeapSize),可以理解为是在第一堆空间中的内存资源被使用完毕的基础上,可以被透支的存储空间,或者可以理解为是可预支内存资源的存储空间,第二堆空间中内存资源是在第一堆空间中内存资源不足以提供给业务运行使用时,透支分配给业务进行使用。
具体地,当每次垃圾收集或检测到有业务场景运行后,可以获取第一堆空间以及第二堆空间的使用状态,并根据获取到的使用状态确定相应的操作指令如扩张指令或紧缩指令等,具体可以是当检测到目标业务运行时,可以先获取第一堆空间或第二堆空间已经分配给目标业务进行使用的内存资源量,即已分配资源量,以及当前目标业务运行时已经使用过的内存资源量,即已使用资源量。
进一步地,可以根据已分配资源量被目标业务的使用情况来确定是需要扩张分配资源给目标业务还是对目标业务的内存资源进行释放,具体可以是通过已使用资源量与已分配资源量之间的比值的大小,即资源占用率,来反映已分配资源量被目标业务的使用情况,可以理解的是,资源占用率较大时,即当资源占用率大于第一占用率阈值时,可以理解为是已分配资源量将要被目标业务使用完毕,需要继续分配内存资源给该目标业务才能维护目标业务顺利运行,则可以确定需要进行扩张操作,即需要将内存资源扩张分配给目标业务,则可以向第一堆空间发送扩张操作指令,其中,第一占用率阈值是大于0且小于1的阈值参数,是根据实际应用需求进行设置,通常可以设置为0.8,还可以是其他数值,此处不作具体限制。
进一步地,当第一堆空间接收到扩张操作指令后,可以先根据预先配置的扩张方式,如变量扩张或定量扩张的方式,确定目标业务的扩张资源量,然后,可以根据扩张资源量判断第一堆空间在当前时刻的剩余资源量是否足够分配给目标业务进行使用,具体可以通过比较扩张资源量与第一堆空间在当前时刻的剩余资源量之间的大小来确定,当扩张资源量大于第一堆空间在当前时刻的剩余资源量时,可以理解的是,第一堆空间在当前时刻的剩余资源量短缺,不足以分配目标业务所需的内存资源,如图13所示,则可以调用第二堆空间来进行扩张分配内存资源,具体可以是通过计算扩张资源量与剩余资源量之间的第一资源差值,来确定第二堆空间需要提供的内存资源量,即第一内存资源,然后,可以将第一内存资源和剩余资源量对应的内存资源分配给目标业务进行使用,能够实现第一堆空间中的内存资源充分被使用,又能通过第二堆空间提供第一内存资源来弥补第一堆空间的资源短缺的情况,能够在一定程度上提高内存资源的合理利用率。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.6G,第二堆空间为BackupHeapSize=0.4G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.36G,以及已分配资源量为0.4G,则可以计算得到该外卖点餐业务的资源占用率为0.9,假设第一占用率阈值为0.8,可知,该资源占用率大于第一占用率阈值,则需要将内存资源扩张分配给该外卖点餐业务,如果扩张资源量为0.4G,第一堆空间在当前时刻的剩余资源量为0.2G,即扩张资源量大于剩余资源量,则可以计算第一资源差值为0.2G,故可以从第二堆空间中划分出0.2G的第一内存资源,然后,可以将剩余资源量对应的内存资源0.2G以及第一内存资源0.2G分配给该外卖点餐业务进行使用。
在本申请实施例中,提供了一种内存资源的分配方法,通过上述方式,能够通过资源占用率确定需要将内存资源扩张分配给目标业务时,可以确定扩张资源量,并可以根据扩张资源量与剩余资源量之间的第一资源差值确定与目标业务适配的内存资源以及该适配的内存资源的来源,即第一内存资源和剩余资源量对应的内存资源,能够避免分配给目标业务的内存资源不合理的情况,降低内存资源的使用成本,从而提高内存资源的分配合理性。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图3所示,该方法还包括:
在步骤S301中,获取目标业务所对应的历史资源使用数据;
在步骤S302中,根据历史资源使用数据中的最大资源使用量与第一堆空间所对应的内存资源量之间的差值,确定第二堆空间。
在本实施例中,在需要从第二堆空间中划分出与第一资源差值对应的第一内存资源之前,本实施例可以先根据目标业务的业务标识,在大数据平台中进行历史资源使用数据的爬取,或在数据库中进行遍历,获取与业务标识相对应的历史资源使用数据,此处不作具体限制,然后可以从历史资源使用数据中筛选出最大资源使用量,进而可以根据最大资源使用量来给目标业务分配第二堆空间,使得第一堆空间与第二堆空间中的内存资源能够满足目标业务在最大资源使用量时的资源需求,减少不必要的资源浪费,能够在一定程度上提高内存资源的合理利用率。
其中,历史资源使用数据具体可以表现为目标业务使用内存资源的洪峰值,即最大资源使用量,或者,目标业务使用内存资源的低谷值,即最小资源使用量,还可以是其他使用量,此处不作具体限制。
具体地,在需要从第二堆空间中划分出与第一资源差值对应的第一内存资源之前,可以先根据目标业务的业务标识如001,进而在数据库中进行遍历,获取与业务标识001相对应的历史资源使用数据,然后,可以将历史资源使用数据中各个使用量进行比较,以获取最大资源使用量,进而可以根据最大资源使用量来给目标业务分配第二堆空间,具体可以是通过计算最大资源使用量与第一堆空间中的内存资源量之间的差值,来将该差值对应的内存资源确定为第二堆空间的内存资源,以使得第一堆空间与第二堆空间中的内存资源能够满足目标业务在最大资源使用量时的资源需求。
例如,假设外卖点餐业务场景的流量峰值为1G,历史资源使用数据中的最大资源使用量为1G,如果第一堆空间为MaxHeapSize=0.4G,则通过计算最大资源使用量与第一堆空间中的内存资源量之间的差值,可以得到第二堆空间为BackupHeapSize=0.6G。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图4所示,该方法还包括:
在步骤S401中,根据目标业务的业务场景和历史资源堆空间之间的对应的关系,获取历史第一资源堆空间;
在步骤S402中,根据历史第一堆空间确定第一堆空间。
在本实施例中,在比较扩张资源量与第一堆空间在当前时刻的剩余资源量之间的大小之前,本实施例先可以根据目标业务的业务标识,在数据库中进行遍历,能够根据与业务标识具有对应关系的历史资源堆空间的资源分配情况,获取历史第一资源堆空间,然后,根据历史第一堆空间的空间大小确定第一堆空间的空间大小,能够满足目标业务的普通运行状态的资源需求,减少不必要的资源浪费,能够在一定程度上提高内存资源的合理利用率。
其中,历史资源堆空间是该目标业务所属于的业务场景,通常分配的第一堆空间以及第二堆空间的大小,目标业务所属于的业务场景对应的第一堆空间,即历史第一堆空间。
可以理解的是,本实施例还可以根据目标业务的业务标识,在数据库中进行遍历,获取与业务标识相对应的历史资源使用数据,然后可以根据历史资源使用数据中的各个资源使用量,进行标准差或均值等计算,并将计算结果确定为第一堆空间,能够满足目标业务的普通运行状态的资源需求,从而能够在一定程度上提高内存资源的合理利用率。
具体地,在比较扩张资源量与第一堆空间在当前时刻的剩余资源量之间的大小之前,可以先根据目标业务的业务标识,在数据库中进行遍历,获取与业务标识具有对应关系的历史资源堆空间的资源分配情况,以确定历史第一资源堆空间,然后,按照历史第一堆空间的空间大小为目标业务分配第一堆空间的空间大小。
例如,假设外卖点餐业务场景的业务标识为001,如果业务标识为001对应的历史资源堆空间的资源分配情况为历史第一堆空间为MaxHeapSize=0.4G,历史第二堆空间为BackupHeapSize=0.6G,则可以按照历史第一堆空间为MaxHeapSize=0.4G为目标业务分配0.4G的第一堆空间。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图5所示,该方法还包括:
在步骤S501中,若扩张资源量小于或等于第一堆空间在当前时刻的剩余资源量,则从第一堆空间中剩余资源量所对应的内存资源中划分出与扩张资源量的大小相对应的第二内存资源;
在步骤S502中,为目标业务分配第二内存资源。
在本实施例中,在获取到扩张资源量后,可以先将扩张资源量与第一堆空间在当前时刻的剩余资源量进行比较,如果扩张资源量小于或等于第一堆空间在当前时刻的剩余资源量,可以表示第一堆空间资源充足,则可以从第一堆空间中剩余资源量所对应的内存资源中划分出与扩张资源量的大小相对应的内存资源分配给目标业务进行使用,能够实现第一堆空间中的内存资源充分被使用,能够在一定程度上提高内存资源的合理利用率。
具体地,在获取到扩张资源量后,可以先根据扩张资源量判断第一堆空间在当前时刻的剩余资源量是否足够分配给目标业务进行使用,如果扩张资源量小于或等于第一堆空间在当前时刻的剩余资源量时,可以理解的是,第一堆空间在当前时刻的剩余资源量充足,足够分配目标业务所需的内存资源,如图13所示,则可以调用第一堆空间中剩余资源量对应的内存资源来进行扩张分配内存资源,具体可以是通过计算扩张资源量与剩余资源量之间的差值,来确定扩张资源量小于或等于第一堆空间在当前时刻的剩余资源量,即第一内存资源,然后,可以从第一堆空间中剩余资源量所对应的内存资源中划分出与扩张资源量的大小相对应的内存资源分配给目标业务进行使用,即第二内存资源。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.6G,第二堆空间为BackupHeapSize=0.4G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.18G,以及已分配资源量为0.2G,则可以计算得到该外卖点餐业务的资源占用率为0.9,假设第一占用率阈值为0.8,可知,该资源占用率大于第一占用率阈值,则需要将内存资源扩张分配给该外卖点餐业务,如果扩张资源量为0.2G,第一堆空间在当前时刻的剩余资源量为0.4G,即扩张资源量小于剩余资源量,则可以从第一堆空间中剩余资源量所对应的内存资源中划分出与扩张资源量的大小相对应的0.2G的第二内存资源,然后,可以将第二内存资源0.2G分配给该外卖点餐业务进行使用。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图6所示,从第二堆空间中划分出与第一资源差值对应的第一内存资源,包括:
在步骤S601中,若第一资源差值大于第二堆空间中内存资源量,则计算扩张资源量与预设缩减系数之间的第一乘积,其中,预设缩减系数大于0且小于1;
在步骤S602中,若第一乘积小于或等于资源限制阈值,则从第二堆空间中划分出与第一乘积相对应的第一内存资源。
在本实施例中,在需要从第二堆空间中划分出与第一资源差值对应的第一内存资源时,如果第一资源差值大于第二堆空间中内存资源量,即表示第二堆空间中资源短缺,不足以提供目标业务的需要扩张分配的内存资源需求,因此,本实施例通过缩减扩张分配给目标业务的资源量来实现尽可能地维持业务运行,以及避免堆空间异常,能够实现第二堆空间中的内存资源充分被使用,能够在一定程度上提高内存资源的合理利用率。
具体地,当需要从第二堆空间中划分出与第一资源差值对应的第一内存资源时,本实施例可以先将第一资源差值与第二堆空间中内存资源量进行比较,来确定第二堆空间中的内存资源量是否充足,如果第一资源差值大于第二堆空间中内存资源量,可以理解为是当前第二堆空间中内存资源量不足以提供目标业务的需要扩张分配的内存资源需求,然后,尽可能地维持业务运行,本实施例通过计算扩张资源量与预设缩减系数之间的第一乘积,缩减扩张分配给目标业务的资源量,其中,预设缩减系数大于0且小于1,预设缩减系数是根据实际应用需求进行设置的,通常可以设置为0.5,来实现将扩张资源量减半,还可以是其他数值,如0.25、0.3等,此处不作具体限制。
进一步地,当第一乘积小于或等于资源限制阈值时,可以理解为第二堆空间中内存资源量足以提供目标业务缩减扩张资源量的内存资源需求来维持目标业务的运行,从而能够在一定程度上提高内存资源的合理利用率,其中,资源限制阈值大于0且小于1,资源限制阈值是根据实际应用需求进行设置的,通常可以设置为0.05G,还可以是其他数值,如0.2或0.1等,此处不作具体限制。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.6G,第二堆空间为BackupHeapSize=0.4G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.72G,以及已分配资源量为0.8G,则可以计算得到该外卖点餐业务的资源占用率为0.9,假设第一占用率阈值为0.8,可知,该资源占用率大于第一占用率阈值,则需要将内存资源扩张分配给该外卖点餐业务,如果扩张资源量为0.8G,可以计算得到第一资源差值为0.8G,可知,第一资源差值大于第二堆空间中内存资源量,且第二堆空间中的剩余内存资源量为0.2G,假设预设缩减系数为0.1,资源限制阈值为0.2,则计算扩张资源量与预设缩减系数之间的第一乘积为0.08G,可知,第一乘积小于或等于资源限制阈值,则可以从第二堆空间中划分出与第一乘积相对应的第一内存资源0.08G分配给该外卖点餐业务进行使用。
可选地,在上述图6对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图7所示,该方法还包括:
在步骤S701中,若第一乘积大于资源限制阈值,则将目标业务的业务标识添加至待重新分配内存资源的消息队列;
在步骤S702中,当经过预设时长时,按照消息队列中业务标识的排序,对业务标识对应的目标业务重新进行资源分配。
在本实施例中,在获取到第一乘积后,如果第一乘积大于资源限制阈值,即表示第二堆空间中资源严重短缺,不足以提供目标业务的需要扩张分配的内存资源需求,因此,本实施例将目标业务的业务标识添加至待重新分配内存资源的消息队列,使得目标业务处于待定状态,等待第一堆空间或第二堆空间有空闲内存资源时,可以按照消息队列中业务标识的排序,对业务标识对应的目标业务重新进行资源分配,以及避免堆空间异常,能够在一定程度上提高内存资源的合理利用率。
具体地,当获取到第一乘积时,本实施例可以先将第一乘积与资源限制阈值进行比较,来确定第二堆空间中的内存资源量是否充足,如果第一乘积大于资源限制阈值,可以理解为是当前第二堆空间中内存资源量严重不足,难以提供目标业务的需要扩张分配的内存资源需求,然后,将目标业务的业务标识添加至待重新分配内存资源的消息队列,使得目标业务处于待定状态,当经过预设时长,第一堆空间或第二堆空间处于有空闲内存资源状态时,可以按照消息队列中业务标识的排序,具体可以表现为消息队列中业务标识的升序或倒序,此处不作具体限制,来依次对业务标识对应的目标业务重新进行资源分配,其中,预设时长是根据实际应用需求进行设置的,通常可以设置为1h,还可以是其他数值,如0.5h或1min等,此处不作具体限制。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.6G,第二堆空间为BackupHeapSize=0.4G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.72G,以及已分配资源量为0.8G,则可以计算得到该外卖点餐业务的资源占用率为0.9,假设第一占用率阈值为0.8,可知,该资源占用率大于第一占用率阈值,则需要将内存资源扩张分配给该外卖点餐业务,如果扩张资源量为0.8G,可以计算得到第一资源差值为0.8G,可知,第一资源差值大于第二堆空间中内存资源量,且第二堆空间中的剩余内存资源量为0.2G,假设预设缩减系数为0.5,资源限制阈值为0.1,则计算扩张资源量与预设缩减系数之间的第一乘积为0.4G,可知,第一乘积大于资源限制阈值,则可以将该外卖点餐业务的业务标识添加至待重新分配内存资源的消息队列中,使得当经过预设时长,第一堆空间或第二堆空间处于有空闲内存资源状态时,可以按照消息队列中业务标识的升序来依次对业务标识对应的目标业务重新进行资源分配。
需要说明的是,当在获取到第一乘积后,如果第一乘积大于资源限制阈值,即表示第二堆空间中资源严重短缺,难以再提供目标业务的需要扩张分配的内存资源需求,可能会出现资源溢出的风险,则通常情况下,本实施例还可以启动资源保护机制,具体可以是当检测到第一乘积大于资源限制阈值时,可以结束资源分配进程,并发出即将资源溢出的预警或提示,以提醒管理人员当前堆空间的内存资源不足,需要进行及时调整和维护,还可以是其他保护机制,此处不作具体限制。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图8所示,该方法还包括:
在步骤S801中,若资源占用率小于第二占用率阈值,且已分配资源量大于第一堆空间中内存资源量,则对已分配资源量所对应的内存资源进行资源释放,其中,第二占用率阈值大于0且小于第一占用率阈值。
在本实施例中,当每次目标业务运行后,如果根据获取到的目标业务的已使用资源量以及已分配资源量计算得到的资源占用率小于第二占用率阈值,且已分配资源量大于第一堆空间中内存资源量,即表示已分配资源量十分充足,已分配资源量被目标业务的使用率不高,则可以确定不需要将内存资源扩张分配给目标业务,然后,对已分配资源量所对应的内存资源进行资源释放,以提供给其他业务进行使用,从而能够在一定程度上提高内存资源的分配合理性,其中,第二占用率阈值大于0且小于第一占用率阈值,是根据实际应用需求进行设置,通常可以设置为0.5,还可以是其他数值,此处不作具体限制。
具体地,当检测到目标业务运行时,可以先获取目标业务对应的已分配资源量以及当前目标业务运行时的已使用资源量,如果当根据已使用资源量与已分配资源量计算得到资源占用率小于第二占用率阈值,且已分配资源量大于第一堆空间中内存资源量,可以理解为已分配资源量几乎没有被目标业务使用,无需继续分配内存资源给该目标业务,并可以将该目标业务的已分配资源量对应的内存资源进行释放,以提供给其他业务运行使用,则可以确定需要进行紧缩操作,则可以向第一堆空间发送紧缩操作指令,然后,当第一堆空间接收到进行紧缩操作指令后,可以先根据预先配置的紧缩方式,如变量紧缩或定量紧缩的方式,确定目标业务需要释放的资源量。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.4G,第二堆空间为BackupHeapSize=0.6G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.12G,以及已分配资源量为0.6G,则可以计算得到该外卖点餐业务的资源占用率为0.2,假设第二占用率阈值为0.5,可知,该资源占用率小于第二占用率阈值,则需要将内存资源进行释放,以提供给其他业务运行使用。
可选地,在上述图8对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图9所示,对已分配资源量所对应的内存资源进行资源释放,包括:
在步骤S901中,计算已分配资源量与第一堆空间中的内存资源量之间的第二差值;
在步骤S902中,从已分配资源量所对应的内存资源中释放与第二差值相对应的第三内存资源。
在本实施例中,在需要对已分配资源量所对应的内存资源进行资源释放时,已分配资源量大于第一堆空间中内存资源量,即表示已分配资源量十分充足,可以从已分配资源量所对应的内存资源中释放内存资源,以提供给其他业务进行使用,从而能够在一定程度上提高内存资源的分配合理性。
具体地,当需要对已分配资源量所对应的内存资源进行资源释放时,如果已分配资源量大于第一堆空间中内存资源量,可以理解为已分配资源量几乎没有被目标业务使用,具体可以是根据(heap_size-MaxHeapSize)的原则,其中,heap_size为已分配资源量,通过计算已分配资源量与第一堆空间中的内存资源量之间的第二差值,并从已分配资源量所对应的内存资源中释放与第二差值相对应的内存资源,即第三内存资源,来尽量多将该目标业务的已分配资源量对应的内存资源进行释放,以提供给其他业务运行使用。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.4G,第二堆空间为BackupHeapSize=0.6G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.12G,以及已分配资源量为0.6G,则可以计算得到该外卖点餐业务的资源占用率为0.2,假设第二占用率阈值为0.5,可知,该资源占用率小于第二占用率阈值,且已分配资源量大于第一堆空间中的内存资源量,则需要将内存资源进行释放,可以计算已分配资源量与第一堆空间中的内存资源量之间的第二差值为0.2G,则可以从已分配资源量所对应的内存资源中释放与第二差值相对应的第三内存资源0.2G,以提供给其他业务运行使用。
可选地,在上述图9对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图10所示,从已分配资源量所对应的内存资源中释放与第二差值相对应的第三内存资源包括:
在步骤S1001中,计算已分配资源量和已使用资源量之间的差值与紧缩比例系数的第二乘积,其中,紧缩比例系数大于0且小于1;
在步骤S1002中,若第二乘积小于第二差值,则从已分配资源量所对应的内存资源中释放与第二乘积相对应的第三内存资源。
在本实施例中,在需要从已分配资源量所对应的内存资源中释放与第二差值相对应的第三内存资源时,为了在释放已分配资源量所对应的内存资源的同时,避免释放后的资源量不足以维持目标业务运行,本实施例可以根据min(紧缩比例系数*(heap_size–used_size),heap_size-MaxHeapSize)的原则,其中,used_size为已使用资源量,按照紧缩比例系数来对已分配资源量所对应的内存资源进行释放,以避免垃圾收集器回收过快或过多,其中,紧缩比例系数大于0且小于1,紧缩比例系数是根据实际应用需求进行设置,通常可以设置为0.2,还可以是其他数值,此处不作具体限制。
具体地,当需要从已分配资源量所对应的内存资源中释放与第二差值相对应的第三内存资源时,可以理解为已分配资源量几乎没有被目标业务使用,具体可以是根据min(紧缩比例系数*(heap_size-used_size),heap_size-MaxHeapSize),通过计算已分配资源量和已使用资源量之间的差值与紧缩比例系数的第二乘积,使得当第二乘积小于第二差值时,从已分配资源量所对应的内存资源中释放与第二乘积相对应的内存资源,即第三内存资源,在能够将该目标业务的已分配资源量对应的内存资源进行释放的同时,也足够维持目标业务的运行使用,以避免垃圾收集器回收过快或过多,使得内存资源能够更加良好地进行释放。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.4G,第二堆空间为BackupHeapSize=0.6G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.12G,以及已分配资源量为0.6G,则可以计算得到该外卖点餐业务的资源占用率为0.2,假设第二占用率阈值为0.5,可知,该资源占用率小于第二占用率阈值,且已分配资源量大于第一堆空间中的内存资源量,则需要将内存资源进行释放,可以计算已分配资源量与第一堆空间中的内存资源量之间的第二差值为0.2G,假设紧缩比例系数为0.2,可以计算已分配资源量和已使用资源量之间的差值与紧缩比例系数的第二乘积为0.096G,可知,第二乘积小于第二差值,则从已分配资源量所对应的内存资源中释放与第二乘积相对应的第三内存资源0.096G,以提供给其他业务运行使用。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,如图11所示,该方法还包括:
在步骤S1101中,若资源占用率小于或等于第一占用率阈值,且大于或等于第二占用率阈值,则从已分配资源量所对应的内存资源中获取第四内存资源;
在步骤S1102中,为目标业务分配第四内存资源。
在本实施例中,在本实施例中,当每次目标业务运行后,如果根据获取到的目标业务的已使用资源量以及已分配资源量计算得到的资源占用率为小于或等于第一占用率阈值,且大于或等于第二占用率阈值,即表示已分配资源量足够提供给目标业务进行使用,则可以确定既不需要将内存资源扩张分配给目标业务,也不需要对内存资源进行释放,以提供给其他业务进行使用,则可以从已分配资源量所对应的内存资源中获取第四内存资源来分配给目标业务进行使用,从而能够在一定程度上提高内存资源的分配合理性。
具体地,当检测到目标业务运行时,可以先获取目标业务对应的已分配资源量以及当前目标业务运行时的已使用资源量,如果当根据已使用资源量与已分配资源量计算得到资源占用率小于或等于第一占用率阈值,且大于或等于第二占用率阈值,可以理解为已分配资源量充足,无需继续分配内存资源给该目标业务,也不需要对内存资源进行释放,以提供给其他业务进行使用,即无需进行扩张或紧缩操作,则从已分配资源量所对应的内存资源中获取第四内存资源,具体可以是根据业务运行所需的资源量,从已分配资源量所对应的内存资源中获取与该资源量相对应的第四内存资源,提供给目标业务进行使用。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.4G,第二堆空间为BackupHeapSize=0.6G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.3G,以及已分配资源量为0.4G,则可以计算得到该外卖点餐业务的资源占用率为0.75,假设第一占用率阈值为0.8,第二占用率阈值为0.5,可知,该资源占用率小于第一占用率阈值且大于第二占用率阈值,则可以从已分配资源量所对应的内存资源中获取第四内存资源来分配给外卖点餐业务进行使用。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,确定扩张资源量包括:
从第一堆空间在当前时刻的剩余资源量,将与已分配资源量的大小相同的资源量确定为扩张资源量。
在本实施例中,当需要将内存资源扩张分配给目标业务时,可以将与已分配资源量的大小相同的资源量作为扩张变量,即目标业务的扩张资源量,使得后续可以根据扩张变量来确定与目标业务适配的内存资源以及该适配的内存资源的来源,从而能够避免分配给目标业务的内存资源不合理的情况,降低内存资源的使用成本,从而提高内存资源的分配合理性。
具体地,当资源占用率大于第一占用率阈值时,可以向第一堆空间发送扩张操作指令,使得当第一堆空间接收到扩张操作指令后,具体可以根据预先配置的变量扩张的方式,如按照2x的分配原则,其中,x为已分配资源量,可以将与已分配资源量的大小相同的资源量作为扩张变量,即目标业务的扩张资源量,使得后续可以根据扩张资源量判断第一堆空间在当前时刻的剩余资源量是否足够分配给目标业务进行使用。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.6G,第二堆空间为BackupHeapSize=0.4G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.36G,以及已分配资源量为0.4G,则可以计算得到该外卖点餐业务的资源占用率为0.9,假设第一占用率阈值为0.8,可知,该资源占用率大于第一占用率阈值,则需要将内存资源扩张分配给该外卖点餐业务,按照2x的分配原则,可以将与已分配资源量的大小相同的资源量作为扩张资源量0.4G。
可选地,在上述图2对应的实施例的基础上,本申请实施例提供的内存资源的分配方法另一个可选实施例中,确定扩张资源量包括:
从第一堆空间在当前时刻的剩余资源量,将与初始资源量的大小相同的资源量确定为扩张资源量,其中,初始资源量为根据目标业务的业务场景所确定的。
在本实施例中,当需要将内存资源扩张分配给目标业务时,可以将与初始资源量的大小相同的资源量作为扩张定量,即目标业务的扩张资源量,使得后续可以根据扩张变量来确定与目标业务适配的内存资源以及该适配的内存资源的来源,从而能够避免分配给目标业务的内存资源不合理的情况,降低内存资源的使用成本,从而提高内存资源的分配合理性,其中,初始资源量为根据目标业务的业务场景所确定的,具体可以表现为历史资源使用数据中的最小资源使用量,初始资源量的具体获取方式与获取第一堆空间的方式相似,此处不再赘述。
具体地,当资源占用率大于第一占用率阈值时,可以向第一堆空间发送扩张操作指令,使得当第一堆空间接收到扩张操作指令后,具体可以根据预先配置的定量扩张的方式,如按照x+n*y的分配原则,其中,y为初始资源量,n为分配次数,可以将与初始资源量的大小相同的资源量作为扩张定量,即目标业务的扩张资源量,使得后续可以根据扩张资源量判断第一堆空间在当前时刻的剩余资源量是否足够分配给目标业务进行使用。
例如,假设有一个外卖点餐业务场景对应的第一堆空间为MaxHeapSize=0.6G,第二堆空间为BackupHeapSize=0.4G,当一个外卖点餐业务运行时,该外卖点餐业务已使用资源量为0.36G,已分配资源量为0.4G,以及初始资源量为InitialHeapSize=0.2G,则可以计算得到该外卖点餐业务的资源占用率为0.9,假设第一占用率阈值为0.8,可知,该资源占用率大于第一占用率阈值,则需要将内存资源扩张分配给该外卖点餐业务,按照x+n*y的分配原则,可以将与初始资源量的大小相同的资源量作为扩张资源量0.2G。
下面对本申请中的内存资源的分配装置进行详细描述,请参阅图14,图14为本申请实施例中内存资源的分配装置的一个实施例示意图,内存资源的分配装置20包括:
获取单元201,用于获取目标业务在当前时刻的资源占用率,其中,资源占用率为目标业务的已使用资源量与已分配资源量之间的比值;
确定单元202,用于若资源占用率大于第一占用率阈值,则确定扩张资源量;
处理单元203,用于若扩张资源量大于第一堆空间在当前时刻的剩余资源量,则计算扩张资源量与剩余资源量之间的第一资源差值,其中,第一堆空间为根据目标业务的业务场景所确定的;
处理单元203,还用于从第二堆空间中划分出与第一资源差值对应的第一内存资源,其中,第二堆空间为根据目标业务在历史时段内的资源分配情况所确定的;
处理单元203,还用于为目标业务分配第一内存资源以及第一堆空间中剩余资源量所对应的内存资源。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,
获取单元201,还用于获取目标业务所对应的历史资源使用数据;
确定单元202,还用于根据历史资源使用数据中的最大资源使用量与第一堆空间所对应的内存资源量之间的差值,确定第二堆空间。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,
获取单元201,还用于根据目标业务的业务场景和历史资源堆空间之间的对应的关系,获取历史第一资源堆空间;
确定单元202,还用于根据历史第一堆空间确定第一堆空间。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,
处理单元203,还用于若扩张资源量小于或等于第一堆空间在当前时刻的剩余资源量,则从第一堆空间中剩余资源量所对应的内存资源中划分出与扩张资源量的大小相对应的第二内存资源;
处理单元203,还用于为目标业务分配第二内存资源。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,处理单元203具体可以用于:
若第一资源差值大于第二堆空间中内存资源量,则计算扩张资源量与预设缩减系数之间的第一乘积,其中,预设缩减系数大于0且小于1;
若第一乘积小于或等于资源限制阈值,则从第二堆空间中划分出与第一乘积相对应的第一内存资源。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,
处理单元203,还用于若第一乘积大于资源限制阈值,则将目标业务的业务标识添加至待重新分配内存资源的消息队列;
处理单元203,还用于当经过预设时长时,按照消息队列中业务标识的排序,对业务标识对应的目标业务重新进行资源分配。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,
处理单元203,还用于若资源占用率小于第二占用率阈值,且已分配资源量大于第一堆空间中内存资源量,则对已分配资源量所对应的内存资源进行资源释放,其中,第二占用率阈值大于0且小于第一占用率阈值。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,处理单元203具体可以用于:
计算已分配资源量与第一堆空间中的内存资源量之间的第二差值;
从已分配资源量所对应的内存资源中释放与第二差值相对应的第三内存资源。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,处理单元203具体可以用于:
计算已分配资源量和已使用资源量之间的差值与紧缩比例系数的第二乘积,其中,紧缩比例系数大于0且小于1;
若第二乘积小于第二差值,则从已分配资源量所对应的内存资源中释放与第二乘积相对应的第三内存资源。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,
处理单元203,还用于若资源占用率小于或等于第一占用率阈值,且大于或等于第二占用率阈值,则从已分配资源量所对应的内存资源中获取第四内存资源;
处理单元203,还用于为目标业务分配第四内存资源。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,确定单元202具体可以用于:
从第一堆空间在当前时刻的剩余资源量,将与已分配资源量的大小相同的资源量确定为扩张资源量。
可选地,在上述图14对应的实施例的基础上,本申请实施例提供的内存资源的分配装置的另一实施例中,确定单元202具体可以用于:
从第一堆空间在当前时刻的剩余资源量,将与初始资源量的大小相同的资源量确定为扩张资源量,其中,初始资源量为根据目标业务的业务场景所确定的。
本申请另一方面提供了另一种计算机设备示意图,如图15所示,图15是本申请实施例提供的一种计算机设备结构示意图,该计算机设备300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)310(例如,一个或一个以上处理器)和存储器320,一个或一个以上存储应用程序331或数据332的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器320和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算机设备300中的一系列指令操作。更进一步地,中央处理器310可以设置为与存储介质330通信,在计算机设备300上执行存储介质330中的一系列指令操作。
计算机设备300还可以包括一个或一个以上电源340,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口360,和/或,一个或一个以上操作系统333,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述计算机设备300还用于执行如图2至图11对应的实施例中的步骤。
本申请的另一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如图2至图11所示实施例描述的方法中的步骤。
本申请的另一方面提供了一种包含指令的计算机程序产品当其在计算机或处理器上运行时,使得所述计算机或处理器执行如图2至图11所示实施例描述的方法中的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (16)
1.一种内存资源的分配方法,其特征在于,包括:
获取目标业务在当前时刻的资源占用率,其中,所述资源占用率为所述目标业务的已使用资源量与已分配资源量之间的比值;
若所述资源占用率大于第一占用率阈值,则确定扩张资源量;
若所述扩张资源量大于第一堆空间在所述当前时刻的剩余资源量,则计算所述扩张资源量与所述剩余资源量之间的第一资源差值,其中,所述第一堆空间为根据所述目标业务的业务场景所确定的;
从第二堆空间中划分出与所述第一资源差值对应的第一内存资源,其中,所述第二堆空间为根据所述目标业务在历史时段内的资源分配情况所确定的;
为所述目标业务分配所述第一内存资源以及所述第一堆空间中所述剩余资源量所对应的内存资源。
2.根据权利要求1所述的方法,其特征在于,所述从第二堆空间中划分出与所述第一资源差值对应的第一内存资源之前,所述方法还包括:
获取所述目标业务所对应的历史资源使用数据;
根据所述历史资源使用数据中的最大资源使用量与所述第一堆空间所对应的内存资源量之间的差值,确定所述第二堆空间。
3.根据权利要求1所述的方法,其特征在于,所述若所述扩张资源量大于第一堆空间在所述当前时刻的剩余资源量,则计算所述扩张资源量与所述剩余资源量之间的第一资源差值之前,所述方法还包括:
根据所述目标业务的业务场景和历史资源堆空间之间的对应的关系,获取历史第一资源堆空间;
根据所述历史第一堆空间确定所述第一堆空间。
4.根据权利要求1所述的方法,其特征在于,所述若所述资源占用率大于第一占用率阈值,则确定扩张资源量之后,所述方法还包括:
若所述扩张资源量小于或等于第一堆空间在所述当前时刻的剩余资源量,则从所述第一堆空间中所述剩余资源量所对应的内存资源中划分出与所述扩张资源量的大小相对应的第二内存资源;
为所述目标业务分配所述第二内存资源。
5.根据权利要求1所述的方法,其特征在于,所述从第二堆空间中划分出与所述第一资源差值对应的第一内存资源,包括:
若所述第一资源差值大于所述第二堆空间中内存资源量,则计算所述扩张资源量与预设缩减系数之间的第一乘积,其中,所述预设缩减系数大于0且小于1;
若所述第一乘积小于或等于资源限制阈值,则从所述第二堆空间中划分出与所述第一乘积相对应的所述第一内存资源。
6.根据权利要求5所述的方法,其特征在于,所述若所述第一资源差值大于所述第二堆空间中内存资源量,则计算所述扩张资源量与预设缩减系数之间的第一乘积之后,所述方法还包括:
若所述第一乘积大于所述资源限制阈值,则将所述目标业务的业务标识添加至待重新分配内存资源的消息队列;
当经过预设时长时,按照所述消息队列中业务标识的排序,对所述业务标识对应的目标业务重新进行资源分配。
7.根据权利要求1所述的方法,其特征在于,所述从第二堆空间中划分出与所述第一资源差值对应的第一内存资源之后,所述方法还包括:
若所述资源占用率小于第二占用率阈值,且所述已分配资源量大于所述第一堆空间中内存资源量,则对所述已分配资源量所对应的内存资源进行资源释放,其中,所述第二占用率阈值大于0且小于所述第一占用率阈值。
8.根据权利要求7所述的方法,其特征在于,所述对所述已分配资源量所对应的内存资源进行资源释放,包括:
计算所述已分配资源量与所述第一堆空间中的内存资源量之间的第二差值;
从所述已分配资源量所对应的内存资源中释放与所述第二差值相对应的第三内存资源。
9.根据权利要求8所述的方法,其特征在于,所述从所述已分配资源量所对应的内存资源中释放与所述第二差值相对应的第三内存资源,包括:
计算所述已分配资源量和所述已使用资源量之间的差值与紧缩比例系数的第二乘积,其中,所述紧缩比例系数大于0且小于1;
若所述第二乘积小于所述第二差值,则从所述已分配资源量所对应的内存资源中释放与所述第二乘积相对应的第三内存资源。
10.根据权利要求7所述的方法,其特征在于,所述获取目标业务在当前时刻的资源占用率之后,所述方法还包括:
若所述资源占用率小于或等于所述第一占用率阈值,且大于或等于所述第二占用率阈值,则从所述已分配资源量所对应的内存资源中获取第四内存资源;
为所述目标业务分配所述第四内存资源。
11.根据权利要求1所述的方法,其特征在于,所述确定扩张资源量,包括:
从所述第一堆空间在所述当前时刻的剩余资源量,将与所述已分配资源量的大小相同的资源量确定为所述扩张资源量。
12.根据权利要求1所述的方法,其特征在于,所述第一堆空间还包括初始资源量,所述确定扩张资源量,包括:
从所述第一堆空间在所述当前时刻的剩余资源量,将与所述初始资源量的大小相同的资源量确定为所述扩张资源量,其中,所述初始资源量为根据所述目标业务的业务场景所确定的。
13.一种内存资源的分配装置,其特征在于,包括:
获取单元,用于获取目标业务在当前时刻的资源占用率,其中,所述资源占用率为所述目标业务的已使用资源量与已分配资源量之间的比值;
确定单元,用于若所述资源占用率大于第一占用率阈值,则确定扩张资源量;
处理单元,用于若所述扩张资源量大于第一堆空间在所述当前时刻的剩余资源量,则计算所述扩张资源量与所述剩余资源量之间的第一资源差值,其中,所述第一堆空间为根据所述目标业务的业务场景所确定的;
所述处理单元,还用于从第二堆空间中划分出与所述第一资源差值对应的第一内存资源,其中,所述第二堆空间为根据所述目标业务在历史时段内的资源分配情况所确定的;
所述处理单元,还用于为所述目标业务分配所述第一内存资源以及所述第一堆空间中所述剩余资源量所对应的内存资源。
14.一种计算机设备,其特征在于,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序时实现如权利要求1至12中任一项所述的方法;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
15.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至12中任一项所述的方法。
16.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至12中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111237497.5A CN116010019A (zh) | 2021-10-22 | 2021-10-22 | 一种内存资源的分配方法、相关装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111237497.5A CN116010019A (zh) | 2021-10-22 | 2021-10-22 | 一种内存资源的分配方法、相关装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010019A true CN116010019A (zh) | 2023-04-25 |
Family
ID=86025415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111237497.5A Pending CN116010019A (zh) | 2021-10-22 | 2021-10-22 | 一种内存资源的分配方法、相关装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010019A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435440A (zh) * | 2023-12-20 | 2024-01-23 | 麒麟软件有限公司 | 一种程序堆空间的动态分析方法及系统 |
-
2021
- 2021-10-22 CN CN202111237497.5A patent/CN116010019A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117435440A (zh) * | 2023-12-20 | 2024-01-23 | 麒麟软件有限公司 | 一种程序堆空间的动态分析方法及系统 |
CN117435440B (zh) * | 2023-12-20 | 2024-04-05 | 麒麟软件有限公司 | 一种程序堆空间的动态分析方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2545507A1 (en) | Apparatus, system, and method for on-demand control of grid system resources | |
CN103067293A (zh) | 负载均衡设备的连接管理和复用的方法和系统 | |
CN105868004B (zh) | 一种基于云计算的业务系统的调度方法及调度装置 | |
CN116662020B (zh) | 应用服务动态管理方法、系统、电子设备及存储介质 | |
CN108684075B (zh) | 集中式基站架构下的处理资源分配方法 | |
CN110647392A (zh) | 一种基于容器集群的智能弹性伸缩方法 | |
CN111309440B (zh) | 一种多类型gpu的管理调度的方法和设备 | |
CN112231108A (zh) | 任务处理方法、装置、计算机可读存储介质及服务器 | |
CN101938516B (zh) | 一种面向用户的动态分配存储资源的方法 | |
CN112925607A (zh) | 一种系统扩缩容方法及装置、电子设备 | |
CN112449005A (zh) | 请求分配方法、装置、电子设备及可读存储介质 | |
CN112817753A (zh) | 任务的处理方法及装置、存储介质、电子装置 | |
CN116010019A (zh) | 一种内存资源的分配方法、相关装置及设备 | |
CN111796933A (zh) | 资源调度方法、装置、存储介质和电子设备 | |
CN213876703U (zh) | 一种资源池管理系统 | |
CN114327884A (zh) | 自动扩缩容方法、装置、设备及可读存储介质 | |
CN113626145A (zh) | 业务虚拟机数量动态扩容方法及系统 | |
CN108563504A (zh) | 一种资源管控方法和装置 | |
CN115174406B (zh) | 容器应用的扩缩容方法、装置、计算机设备及存储介质 | |
CN110399216B (zh) | 一种整机箱功耗的分配方法、系统、装置及可读存储介质 | |
CN114860449A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN114090256A (zh) | 一种基于云计算的应用交付负载管理方法及其系统 | |
KR20150070930A (ko) | 최적 비용을 고려한 마이그레이션 자원 할당 시스템 및 할당 방법 | |
CN114253663A (zh) | 一种虚拟机资源的调度方法和装置 | |
CN109614242B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40084304 Country of ref document: HK |