掌桥专利:专业的专利平台
掌桥专利
首页

一种资源分配方法、装置、设备及介质

文献发布时间:2023-06-19 19:28:50


一种资源分配方法、装置、设备及介质

技术领域

本申请涉及计算机存储技术领域,特别是涉及一种资源分配方法、装置、设备及介质。

背景技术

在存储系统中,远程复制实现了异地的不同的存储系统中的灾备机制。异地的两个存储卷组成一个关系对(pair),以便于实现数据同步行为。在具体的实施中,每个pair需要一种任务机制来保证pair中主备端的周期同步,现有的方法为:系统为每一个pair任务初始化一个定时器,以触发每一个pair任务对应的定时任务,并在初始化时分配对应的线程资源,使用完毕后再进行释放。但需要说明的是,由于系统中的线程资源是有限的,且对每个定时任务进行定时的定时器都会占用一个线程资源,在定时任务执行完毕时销毁线程资源,因此,在任务比较多的场景下,频繁的分配和释放线程资源会造成系统较大的消耗;另外若无限制对每个pair任务创建一个线程资源,会进一步消耗系统的线程资源,并降低系统的稳定性。

鉴于上述存在的问题,寻求如何降低系统的线程资源的消耗并提升系统稳定性是本领域技术人员竭力解决的问题。

发明内容

本申请的目的是提供一种资源分配方法、装置、设备及介质,用于降低系统的线程资源的消耗并提升系统稳定性。

为解决上述技术问题,本申请提供一种资源分配方法,应用于计算机存储系统,包括:

获取全部pair对象并生成与pair对象对应的定时任务;

将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中;

当开始执行定时任务时,从线程池获取空闲的线程资源,并将表征引用线程资源的引用次数按照步进值正向计数;

当定时任务执行完毕时,将引用次数按照步进值负向计数直至引用次数为0时,释放线程资源。

优选地,在获取全部pair对象并生成与pair对象对应的定时任务之前还包括:

根据远程复制任务确定全部任务的负载数;

根据负载数确定线程数;

根据线程数创建线程池,其中线程池中存储有线程资源。

优选地,在开始执行定时任务时,从线程池获取线程资源之前,在将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中之后,还包括:

当检测到出现pair对象时,从线程池中获取线程资源执行pair对象对应的定时任务。

优选地,将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中包括:

将定时任务按照各执行时间间隔插入至以时间单位划分的时间轮定时器中。

优选地,以时间单位划分的时间轮定时器的时间单位为s。

优选地,将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中之后,在开始执行定时任务时,从线程池获取空闲的线程资源之前,还包括:

保存定时任务至以时间单位为s划分的时间轮定时器中。

优选地,在释放线程资源之后,还包括:

输出表征释放线程资源的提示信息。

为解决上述技术问题,本申请还提供了一种资源分配装置,应用于计算机存储系统,包括:

第一获取模块,用于获取全部pair对象并生成与pair对象对应的定时任务;

第一插入模块,用于将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中;

获取并计数模块,用于当开始执行定时任务时,从线程池获取空闲的线程资源,并将表征引用线程资源的引用次数按照步进值正向计数;

计数并释放模块,用于当定时任务执行完毕时,将引用次数按照步进值负向计数直至引用次数为0时,释放线程资源。

此外,该装置还包括以下模块:

优选地,在获取全部pair对象并生成与pair对象对应的定时任务之前还包括:

第一确定模块,用于根据远程复制任务确定全部任务的负载数;

第二确定模块,用于根据负载数确定线程数;

创建模块,用于根据线程数创建线程池,其中线程池中存储有线程资源。

优选地,在开始执行定时任务时,从线程池获取线程资源之前,在将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中之后,还包括:

第二获取模块,用于当检测到出现pair对象时,从线程池中获取线程资源执行pair对象对应的定时任务。

优选地,将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中包括:

第二插入模块,用于将定时任务按照各执行时间间隔插入至以时间单位划分的时间轮定时器中;以时间单位划分的时间轮定时器的时间单位为s。

优选地,将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中之后,在开始执行定时任务时,从线程池获取空闲的线程资源之前,还包括:

保存模块,用于保存定时任务至以时间单位为s划分的时间轮定时器中。

优选地,在释放线程资源之后,还包括:

输出模块,用于输出表征释放线程资源的提示信息。

为解决上述技术问题,本申请还提供了一种资源分配设备,包括:

存储器,用于存储计算机程序;

处理器,用于指向计算机程序,实现资源分配方法的步骤。

为解决上述技术问题,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现上述全部资源分配方法的步骤。

本申请所提供的一种资源分配方法,应用于计算机存储系统,包括:获取全部pair对象并生成与pair对象对应的定时任务;将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中;当开始执行定时任务时,从线程池获取空闲的线程资源,并将表征引用线程资源的引用次数按照步进值正向计数;当定时任务执行完毕时,将引用次数按照步进值负向计数直至引用次数为0时,释放线程资源。由此可知,通过线程池中空闲的线程资源执行定时任务,此时避免了无限创建线程资源,保持系统稳定性;同时,每使用一次线程资源执行定时任务其引用次数以步进值正向计数,执行完定时任务其引用次数以步进值负向计数,避免了频繁的分配和释放线程资源造成系统较大的消耗。

本申请还提供了一种资源分配装置、设备及介质,效果同上。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种资源分配方法流程图;

图2为本申请实施例所提供的一种资源分配过程示意图;

图3为本申请实施例所提供的一种资源分配装置结构图;

图4为本申请实施例所提供的一种资源分配设备结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。

本申请的核心是提供一种资源分配方法、装置、设备及介质,其能够降低系统的线程资源的消耗并提升系统稳定性。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。

在存储系统中,为了实现处于异地的不同的存储系统中(可以理解为主机端和备份端)的灾备机制,一般通过远程复制任务实现两端的存储系统的数据同步。其中,实现远程复制任务需要pair对象以及定时任务。基于此,本申请提供了一种资源分配方法,具体说明如下:

图1为本申请实施例所提供的一种资源分配方法流程图。如图1所示,该资源分配方法,应用于计算机存储系统,包括:

S10:获取全部pair对象并生成与pair对象对应的定时任务。

S11:将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中。

其中,时间轮定时器为以秒(s)的时间单位划分的定时器。

S12:当开始执行定时任务时,从线程池获取空闲的线程资源,并将表征引用线程资源的引用次数按照步进值正向计数。

线程池从自己的空闲线程资源里随机选择或按照任务优先级选择一个线程资源来执行当前的任务,任务执行完毕后线程池将线程资源进行回收。通过重复利用已创建的线程资源降低线程创建和销毁造成的消耗,线程池的优点是可以提前配置任务得而最大线程数,避免影响到系统内的其他任务,从而实现系统的负载可控。同时线程池里可以对当前任务进行更好的管理和监控,方便遇到问题时进行定位。图2为本申请实施例所提供的一种资源分配过程示意图,如图2所示,其中将引用次数记为N,将步进值设置为1,则初始的引用次数应为0,此时正向计数为N=0+1=1,自此以后每一次应用该线程资源时,在现有的引用次数的基础上以步进值1作加法计算,得到新的引用次数。且在本实施例中,对于正向计数的引用次数的最大值不作限定,可以为任意大小的自然数。此时可以将利用引用次数进行正向计数和负向计数的方式理解为共享指针。

S13:当定时任务执行完毕时,将引用次数按照步进值负向计数直至引用次数为0时,释放线程资源。

为了便于说明,将正向计数的引用次数举例为5,则初始的负向计数的引用次数应为5,此时负向计数为N=5-1=4,自此以后每一次释放该线程资源时,在现有的引用次数的基础上以步进值1作减法计算,得到新的引用次数。

该资源分配方法应用于计算机存储系统,包括:获取全部pair对象并生成与pair对象对应的定时任务;将定时任务按照各执行时间间隔插入至时间轮定时器中;当开始执行定时任务时,从线程池获取空闲的线程资源,避免了无限创建线程资源,保持系统稳定性;同时,将表征引用线程资源的引用次数按照步进值正向计数;当定时任务执行完毕时,将引用次数按照步进值负向计数直至引用次数为0时,释放线程资源,避免频繁的分配和释放线程资源造成系统较大消耗。

在上述实施例的基础上,作为一种更优选的实施例,在获取全部pair对象并生成与pair对象对应的定时任务之前还包括:

根据远程复制任务确定全部任务的负载数;

根据负载数确定线程数;

根据线程数创建线程池,其中线程池中存储有线程资源。

其中,远程复制任务包括pair对象和定时任务,可以得知的是,在远程复制任务下存储的pair对象有多个,同时pair对象和定时任务为一一对应关系,因此,定时任务也有多个。将远程复制任务下的全部任务均用于确定负载数,此时负载数应为远程复制任务能负载任务的最大数目。由于每个任务都应有一个线程资源供其使用,因此,根据负载数确定线程数并建立线程池。当检测到出现新的pair对象时,从线程池中获取线程资源执行pair对象对应的定时任务。此时的线程池将原有的任务固定为系统初始化时分配的若干个线程资源,从而达到线程资源的最小化利用。当定时任务到达时,可以不需要等待线程资源的创建就能立即执行,从而优化影响速度和响应能力。

在上述实施例的基础上,作为一种更优选的实施例,在将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中之后,在开始执行定时任务时,从线程池获取空闲的线程资源之前,还包括:

保存定时任务至以时间单位为s划分的时间轮定时器中。

其中,需要说明的是,时间轮定时器能够保存未来60s内的定时任务,以实现定时。时间轮是一种实现定时器的巧妙算法,把时间规划成刻度,在需要生成定时任务的时候,根据定时任务的执行时间间隔插入到相应的刻度上,逻辑形状类似一个轮子。所以叫时间轮。时间轮消耗较少的线程资源,从整个定时器上看是由多个轮组成,每一个轮表示不同的层级(就像手表是由时分秒)。秒这个轮满了之后会推动分这个轮前进一格,分满了之后会推动时这个轮前进一格,以此来实现定时的功能。如图2所示,图中所示出的是时间轮定时器的最内部实现,根据实现场景,可以自定义最内层轮,这里的实施方式与实际时钟一致,最小单位为秒,系统只需要在最内层轮上保存当前1分钟内的定时任务。

在上述实施例的基础上,作为一种更优选的实施例,在释放线程资源之后,还包括:输出表征释放线程资源的提示信息。

需要说明的是,提示信息可以使用文字形式或数据串形式进行表述。当用文字形式表示提示信息时,该提示信息可以表示为“已释放”或“完成释放”等;当用数据串形式表示提示信息时,该数据串可以为1位、2位、4位、8位等等,按照上述提及的次序可以依次表示为“1”、“10”、“1100”、“00100111”,需要说明的是,上述提及的对于提示信息的表示方法仅为众多实施例中的几种,并不对提示信息的表示方法做出限定,此外,还可以通过数据串转换为十进制的数值,判断该数值是否超出预设值,当超出预设值时,输出该提示信息;还可以通过统计数据串中0和1的个数,当1的个数多于0的个数时,则输出该提示信息;还可以判断数据串中0或1的个数是否超出预设个数,若超出预设个数,则输出该提示信息。上述所提及的实施方式并不对本申请中的提示信息做出任何限定,可根据实施场景确定其实施方式。

需要额外说明的是,共享指针能够达到线程资源的一次分配,一次释放,以用于提高系统性能。共享指针具体名称为资源共享型智能指针,该指针有两种实现方式:一种是侵入式;一种是非侵入式。比较常见的是非侵入式的,它的实现完全放在智能指针模板类内;模板类有一个用于保存资源类对象的指针变量和一个用于记录资源对象引用计数的指针变量;两者是所有的智能指针对象共享的,所以通过指针保存。侵入式则不同,它的实现分散在智能指针模板和使用资源对象类中:模板类只有一个用于保存资源对象的指针变量,资源对象的引用计数却放在资源对象类中;非侵入式智能指针,它的引用计数变量为了保证所有对象共享,需要用堆里的内存;因此需要用new,其实这点两者都一样,不一样的是使用new的次数。侵入式智能指针的引用计数变量保存在资源对象内,因为对象是唯一的,所以引用计数也是唯一的。相比非侵入式智能指针,侵入式智能指针的利弊:其优点为,一个资源对象无论被多少个侵入式智能指针包含,从始至终只有一个引用计数变量;且不需要在每一个使用智能指针对象的地方都new一个计数对象,这样子效率比较高,使用内存也比较少,且比较安全;同时,因为引用计数存储在资源对象本身,所以在函数调用的时候可以直接传递资源对象地址,而不用担心引用计数值丢失。需要说明的是,非侵入式智能指针对象的拷贝,必须带着智能指针模板,否则就会出现对象引用计数丢失。相对来说,该智能指针也存在着缺点,具体为:资源对象类必须有引用计数变量,并且该变量的增减允许被侵入式智能指针模板类操作;如果该资源类对象并不没有必要使用智能指针时,它还是会带着引用计数变量。

对于共享指针的程序实现方式,本申请仅给出一种实施方式,其可根据具体实施场景修改其中部分程序语句。其程序如下所示:

/>

/>

/>

/>

在上述实施例中,对于资源分配方法进行了详细描述,本申请还提供资源分配装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。

图3为本申请实施例所提供的一种资源分配装置结构图。如图3所示,本申请还提供了一种资源分配装置,应用于计算机存储系统,包括:

第一获取模块30,用于获取全部pair对象并生成与pair对象对应的定时任务;

第一插入模块31,用于将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中;

获取并计数模块32,用于当开始执行定时任务时,从线程池获取空闲的线程资源,并将表征引用线程资源的引用次数按照步进值正向计数;

计数并释放模块33,用于当定时任务执行完毕时,将引用次数按照步进值负向计数直至引用次数为0时,释放线程资源。

此外,该装置还包括以下模块:

优选地,在获取全部pair对象并生成与pair对象对应的定时任务之前还包括:

第一确定模块,用于根据远程复制任务确定全部任务的负载数;

第二确定模块,用于根据负载数确定线程数;

创建模块,用于根据线程数创建线程池,其中线程池中存储有线程资源。

优选地,在开始执行定时任务时,从线程池获取线程资源之前,在将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中之后,还包括:

第二获取模块,用于当检测到出现pair对象时,从线程池中获取线程资源执行pair对象对应的定时任务。

优选地,将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中包括:

第二插入模块,用于将定时任务按照各执行时间间隔插入至以时间单位划分的时间轮定时器中;以时间单位划分的时间轮定时器的时间单位为s。

优选地,将定时任务按照各定时任务的执行时间间隔插入至时间轮定时器中之后,在开始执行定时任务时,从线程池获取空闲的线程资源之前,还包括:

保存模块,用于保存定时任务至以时间单位为s划分的时间轮定时器中。

优选地,在释放线程资源之后,还包括:

输出模块,用于输出表征释放线程资源的提示信息。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。且装置部分的效果与方法部分的有益效果相同,具体为:通过获取全部pair对象并生成与pair对象对应的定时任务;将定时任务按照各执行时间间隔插入至时间轮定时器中;当开始执行定时任务时,从线程池获取空闲的线程资源,避免了无限创建线程资源,保持系统稳定性;同时,将表征引用线程资源的引用次数按照步进值正向计数;当定时任务执行完毕时,将引用次数按照步进值负向计数直至引用次数为0时,释放线程资源,避免频繁的分配和释放线程资源造成系统较大消耗。

图4为本申请实施例所提供的一种资源分配设备结构图,如图4所示,资源分配设备包括:

存储器40,用于存储计算机程序;

处理器41,用于执行计算机程序时实现如上述实施例中所提到的资源分配方法的步骤。

本实施例提供的资源分配设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

其中,处理器41可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器41可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器41也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器41可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器41还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器40可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器40还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器40至少用于存储以下计算机程序,其中,该计算机程序被处理器41加载并执行之后,能够实现前述任意一个实施例公开的资源分配方法的相关步骤。另外,存储器40所存储的资源还可以包括操作系统和数据等,存储方式可以是短暂存储或者永久存储。其中,操作系统可以包括Windows、Unix、Linux等。数据可以包括但不限于资源分配方法等。

在一些实施例中,资源分配设备还可包括有显示屏、输入输出接口、通信接口、电源以及通信总线。

本领域技术人员可以理解,图4中示出的结构并不构成对资源分配设备的限定,可以包括比图示更多或更少的组件。

本申请实施例提供的资源分配设备,包括存储器40和处理器41,处理器41在执行存储器40存储的程序时,能够实现资源分配方法。

最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。

可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory),ROM、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本申请所提供的一种资源分配方法、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 资源分配方法、装置、计算机设备及计算机可读存储介质
  • 计算资源分配方法、装置、电子设备、存储介质
  • 资源分配方法及装置、用户设备、基站、可读存储介质
  • 服务资源分配方法、装置、计算机设备和存储介质
  • 一种资源分配方法、装置及计算机可读存储介质
  • 资源分配方法、资源分配装置、电子设备和可读存储介质
  • 资源分配方法、资源分配装置、存储介质和电子设备
技术分类

06120115923766