CN113504994B - 一种内存池性能弹性伸缩的实现方法及系统 - Google Patents

一种内存池性能弹性伸缩的实现方法及系统 Download PDF

Info

Publication number
CN113504994B
CN113504994B CN202110846621.1A CN202110846621A CN113504994B CN 113504994 B CN113504994 B CN 113504994B CN 202110846621 A CN202110846621 A CN 202110846621A CN 113504994 B CN113504994 B CN 113504994B
Authority
CN
China
Prior art keywords
memory
memory blocks
memory block
pool
blocks
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.)
Active
Application number
CN202110846621.1A
Other languages
English (en)
Other versions
CN113504994A (zh
Inventor
杨成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Dunyi Information Technology Co ltd
Original Assignee
Shanghai Dunyi Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Dunyi Information Technology Co ltd filed Critical Shanghai Dunyi Information Technology Co ltd
Priority to CN202110846621.1A priority Critical patent/CN113504994B/zh
Publication of CN113504994A publication Critical patent/CN113504994A/zh
Application granted granted Critical
Publication of CN113504994B publication Critical patent/CN113504994B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本发明公开一种内存池性能弹性伸缩的实现方法及系统。所述实现方法包括:获取内存使用者的内存块申请信息和内存块归还信息;根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势;根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理,所述控制为控制所述内存池向操作系统归还内存块或者控制所述内存池向所述操作系统申请内存块。所述实现系统包括对应实现上述步骤的内存池性能监控模块和内存池性能调整模块。根据本发明,能够有效地解决现有的内存池因保有的内存固定而容易导致相应服务器和操作系统的性能降低或者无法完全支撑业务服务程序的内存需求的问题。

Description

一种内存池性能弹性伸缩的实现方法及系统
技术领域
本发明属于计算机软件性能管理领域,更具体地,涉及一种内存池性能弹性伸缩的实现方法及系统。
背景技术
当计算机程序运行时,需要从操作系统申请内存,然而对于操作系统内核而言,物理内存的管理和分配是一项非常复杂的技术与实现。由于受限于架构和物理极限,相较于CPU和高速缓存,物理内存的分配是非常缓慢的,尤其是在系统繁忙期间,可用内存的查找和分配的操作会导致操作系统的性能较闲时显著下降。除此之外,当操作系统内因内存管理不善而存在内存碎片时,很可能导致内存使用者向操作系统申请连续的物理内存的请求的失败。这一问题具有一般性,尤其是在服务器环境下,服务端程序需要大量、快速和稳定的内存申请、分配和释放的支持时,如何保证服务端程序拥有可靠且性能稳定的内存可以随时使用,是计算机科学领域的一个普遍问题。
为了解决这一问题,大多数优秀的软件在服务端程序中都会选择使用内存池技术,具体为:内存池预先从操作系统中申请内存到内存池中,计算机软件再从内存池中申请内存,供业务服务程序使用,以尽量避免每次申请内存时都需要从操作系统内核中分配可用内存地址和大小的运算开销,从而有效地降低内存请求执行的耗时。软件所申请的内存使用完毕后,又将内存归还给内存池而不是操作系统。
由此可见,内存池作为操作系统与业务服务程序之间的中间层,保有能够保证业务服务程序可以大量、快速和稳定使用的内存。然而,现有的内存池技术并未完全解决问题,这是由于内存池中保有的内存大小通常无法完全匹配业务服务程序的需求。具体地,如果内存池按照业务服务程序的最大需求保有内存,则会导致大量的内存闲置,进而降低服务器和操作系统的性能;如果内存池按照业务服务程序的最小需求保有内存,当业务服务繁忙时,内存池的内存又不足以完全支撑业务服务程序的内存需求,进一步地,当内存池因业务服务程序的内存需求增大而临时向操作系统申请内存时,不仅操作耗时长而且容易出现内存申请失败的现象,由此导致使用这一部分内存的业务请求处理超时或者原本应该使用这一部分内存的业务请求处理出错,进而影响业务服务程序的性能,而对于对业务处理耗时要求较高的业务服务程序而言,上述问题对其性能的影响尤其严重。
发明内容
本发明的目的在于解决现有的内存池因保有的内存固定而容易导致相应服务器和操作系统的性能降低或者无法完全支撑业务服务程序的内存需求的问题。
为了实现上述目的,本发明提供一种内存池性能弹性伸缩的实现方法及系统。
根据本发明的第一方面,提供了一种内存池性能弹性伸缩的实现方法,该方法包括以下步骤:
获取内存使用者的内存块申请信息和内存块归还信息;
根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势;
根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理,所述控制为控制所述内存池向操作系统归还内存块或者控制所述内存池向所述操作系统申请内存块。
作为优选的是,所述获取内存使用者的内存块申请信息和内存块归还信息具体为:
获取预定的信息获取时段内的内存使用者的内存块申请信息和内存块归还信息;
所述内存块申请信息包括内存块申请数量、所申请内存块的总大小和内存块申请频率;
所述内存块归还信息包括内存块归还数量、所归还内存块的总大小和内存块归还频率。
作为优选的是,所述根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势包括:
当所述内存块申请数量小于所述内存块归还数量且二者差值的绝对值大于预定的第一参考值,或者,所述所申请内存块的总大小小于所述所归还内存块的总大小且二者差值的绝对值大于预定的第二参考值,或者,所述内存块申请频率小于所述内存块归还频率且二者差值的绝对值大于预定的第三参考值时,判断所述内存池的内存块消耗趋势为正向;
当所述内存块申请数量大于所述内存块归还数量且二者差值的绝对值大于所述第一参考值,或者,所述所申请内存块的总大小大于所述所归还内存块的总大小且二者差值的绝对值大于所述第二参考值,或者,所述内存块申请频率大于所述内存块归还频率且二者差值的绝对值大于所述第三参考值时,判断所述内存池的内存块消耗趋势为负向;
当所述内存块申请数量与所述内存块归还数量的差值的绝对值小于所述第一参考值,或者,所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值小于所述第二参考值,或者,所述内存块申请频率与所述内存块归还频率的差值的绝对值小于所述第三参考值时,判断所述内存池的内存块消耗趋势为平衡。
作为优选的是,所述根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理包括:
当所述内存块消耗趋势为平衡时,对所述内存池不做处理。
作为优选的是,所述根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理还包括:
当所述内存块消耗趋势为正向时,获取所述内存池的内存块正向消耗速率;
根据所述内存块正向消耗速率和预获取的所述内存池的当前剩余可用内存块信息对所述内存池的未来剩余可用内存块信息进行预测,所述未来剩余可用内存块信息包括未来剩余可用内存块的数量和总大小;
判断未来剩余可用内存块数量小于预定的内存块数量上限阈值且未来剩余可用内存块总大小小于预定的内存块总大小上限阈值的条件是否成立;
若否,控制所述内存池向所述操作系统归还内存块。
作为优选的是,所述控制所述内存池向所述操作系统归还内存块包括:
获取内存块归还因子;
根据所述内存块归还因子确定内存块归还数量;
控制所述内存池向所述操作系统归还相应数量的内存块。
作为优选的是,所述根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理还包括:
当所述内存块消耗趋势为负向时,获取所述内存池的内存块负向消耗速率;
根据所述内存块负向消耗速率和预获取的所述内存池的当前剩余可用内存块信息对所述内存池的未来剩余可用内存块信息进行预测,所述未来剩余可用内存块信息包括未来剩余可用内存块的数量和总大小;
判断未来剩余可用内存块数量大于预定的内存块数量下限阈值且未来剩余可用内存块总大小大于预定的内存块总大小下限阈值的条件是否成立;
若否,控制所述内存池向所述操作系统申请内存块。
作为优选的是,所述控制所述内存池向所述操作系统申请内存块包括:
获取内存块申请因子;
根据所述内存块申请因子确定内存块申请数量;
控制所述内存池向所述操作系统申请相应数量的内存块。
作为优选的是,所述内存块正向消耗速率为连续两个信息获取时段内的正向消耗的变化量或者多个信息获取时段内的正向消耗的平均变化量,所述正向消耗的变化量为所述内存块申请数量与所述内存块归还数量的差值的绝对值、所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值或者所述内存块申请频率与所述内存块归还频率的差值的绝对值;
所述内存块负向消耗速率为连续两个信息获取时段内的负向消耗的变化量或者多个信息获取时段内的负向消耗的平均变化量,所述负向消耗的变化量为所述内存块申请数量与所述内存块归还数量的差值的绝对值、所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值或者所述内存块申请频率与所述内存块归还频率的差值的绝对值;
当所述内存块消耗趋势为正向或者负向时,所述未来剩余可用内存块信息为预定未来时段内的未来剩余可用内存块信息,所述预定未来时段的时长为所述信息获取时段的整数倍或者预定的时间长度。
根据本发明的第二方面,提供了一种内存池性能弹性伸缩的实现系统,该系统包括以下功能模块:
内存池性能监控模块,用于获取内存使用者的内存块申请信息和内存块归还信息;
内存池性能调整模块,用于根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势,以及根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理,所述控制为控制所述内存池向操作系统归还内存块或者控制所述内存池向所述操作系统申请内存块。
本发明的有益效果在于:
本发明的内存池性能弹性伸缩的实现方法,首先获取内存使用者的内存块申请信息和内存块归还信息,其次根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势,最后根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略控制内存池向操作系统归还内存块、控制内存池向操作系统申请内存块或者不对内存池做处理,以实现基于内存池的内存块消耗趋势提前对内存池保有的内存进行动态调整,进而在一定程度上降低了对相应服务器和操作系统的性能的影响以及使内存池保有的内存与业务服务程序的内存需求相匹配,从而有效地解决现有的内存池因保有的内存固定而容易导致相应服务器和操作系统的性能降低或者无法完全支撑业务服务程序的内存需求的问题。
本发明的内存池性能弹性伸缩的实现系统与上述内存池性能弹性伸缩的实现方法属于一个总的发明构思,故与上述内存池性能弹性伸缩的实现方法具有相同的有益效果,在此不再赘述。
本发明的其它特征和优点将在随后具体实施方式部分予以详细说明。
附图说明
通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显,其中,在本发明示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了根据本发明的实施例的内存池性能弹性伸缩的实现方法的实现流程图;
图2示出了根据本发明的实施例的内存池性能弹性伸缩的实现系统的原理框图。
具体实施方式
下面将更详细地描述本发明的优选实施方式。虽然以下描述了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
实施例:图1示出了本发明实施例的内存池性能弹性伸缩的实现方法的实现流程图。参照图1,本发明实施例的内存池性能弹性伸缩的实现方法包括以下步骤:
S100、获取内存使用者的内存块申请信息和内存块归还信息;
S200、根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势;
S300、根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理,所述控制为控制所述内存池向操作系统归还内存块或者控制所述内存池向所述操作系统申请内存块。
进一步地,本发明实施例的步骤S100所述的获取内存使用者的内存块申请信息和内存块归还信息具体为:
获取预定的信息获取时段内的内存使用者的内存块申请信息和内存块归还信息;
所述内存块申请信息包括内存块申请数量、所申请内存块的总大小和内存块申请频率;
所述内存块归还信息包括内存块归还数量、所归还内存块的总大小和内存块归还频率。
再进一步地,本发明实施例中,步骤S200所述的根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势包括:
当所述内存块申请数量小于所述内存块归还数量且二者差值的绝对值大于预定的第一参考值,或者,所述所申请内存块的总大小小于所述所归还内存块的总大小且二者差值的绝对值大于预定的第二参考值,或者,所述内存块申请频率小于所述内存块归还频率且二者差值的绝对值大于预定的第三参考值时,判断所述内存池的内存块消耗趋势为正向;
当所述内存块申请数量大于所述内存块归还数量且二者差值的绝对值大于所述第一参考值,或者,所述所申请内存块的总大小大于所述所归还内存块的总大小且二者差值的绝对值大于所述第二参考值,或者,所述内存块申请频率大于所述内存块归还频率且二者差值的绝对值大于所述第三参考值时,判断所述内存池的内存块消耗趋势为负向;
当所述内存块申请数量与所述内存块归还数量的差值的绝对值小于所述第一参考值,或者,所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值小于所述第二参考值,或者,所述内存块申请频率与所述内存块归还频率的差值的绝对值小于所述第三参考值时,判断所述内存池的内存块消耗趋势为平衡。
具体地,本发明实施例中,当所述内存块申请数量大于所述内存块归还数量且二者差值的绝对值大于所述第一参考值,或者,所述所申请内存块的总大小大于所述所归还内存块的总大小且二者差值的绝对值大于所述第二参考值,或者,所述内存块申请频率大于所述内存块归还频率且二者差值的绝对值大于所述第三参考值时,所述内存池的剩余可用内存块数量或者剩余可用内存块总大小处于正向增长的状态,即所述内存池的内存块消耗趋势为正向。
具体地,本发明实施例中,当所述内存块申请数量大于所述内存块归还数量且二者差值的绝对值大于所述第一参考值,或者,所述所申请内存块的总大小大于所述所归还内存块的总大小且二者差值的绝对值大于所述第二参考值,或者,所述内存块申请频率大于所述内存块归还频率且二者差值的绝对值大于所述第三参考值时,所述内存池的剩余可用内存块数量或者剩余可用内存块总大小处于负向增长的状态,即所述内存池的内存块消耗趋势为负向。
具体地,本发明实施例中,当所述内存块申请数量与所述内存块归还数量的差值的绝对值小于所述第一参考值,或者,所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值小于所述第二参考值,或者,所述内存块申请频率与所述内存块归还频率的差值的绝对值小于所述第三参考值时,所述内存池的剩余可用内存块数量或者剩余可用内存块总大小处于平衡波动的状态,即所述内存池的内存块消耗趋势为平衡。
再进一步地,本发明实施例中,步骤S300所述的根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理包括:
当所述内存块消耗趋势为平衡时,对所述内存池不做处理。
再进一步地,本发明实施例中,步骤S300所述的根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理还包括:
当所述内存块消耗趋势为正向时,获取所述内存池的内存块正向消耗速率;
根据所述内存块正向消耗速率和预获取的所述内存池的当前剩余可用内存块信息对所述内存池的未来剩余可用内存块信息进行线性预测,所述未来剩余可用内存块信息包括未来剩余可用内存块的数量和总大小;
判断未来剩余可用内存块数量小于预定的内存块数量上限阈值且未来剩余可用内存块总大小小于预定的内存块总大小上限阈值的条件是否成立;
若否,控制所述内存池向所述操作系统归还内存块。
具体地,本发明实施例中,所述内存块正向消耗速率为最近5个信息获取时段内的正向消耗的平均变化量,所述正向消耗的变化量为所述内存块申请数量与所述内存块归还数量的差值的绝对值、所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值或者所述内存块申请频率与所述内存块归还频率的差值的绝对值;
所述未来剩余可用内存块信息为预定未来时段内的未来剩余可用内存块信息,所述预定未来时段的时长为所述信息获取时段的5倍。
再进一步地,本发明实施例中,所述控制所述内存池向所述操作系统归还内存块包括:
获取内存块归还因子;
根据所述内存块归还因子确定内存块归还数量;
控制所述内存池向所述操作系统归还相应数量的内存块。
可选地,本发明实施例中,所述内存块归还因子为常数。
可选地,本发明实施例中,所述内存块归还因子的获取方法包括:
获取最近5个信息获取时段中的最近1个信息获取时段内的正向消耗变化量的波动情况;
根据所述内存块正向消耗速率和所述正向消耗变化量的波动情况,并基于预获取的内存块正向消耗速率和正向消耗变化量波动情况与内存块归还因子的映射表获取所述内存块归还因子。
其中,所述内存块归还因子与所述内存块正向消耗速率和所述正向消耗变化量的波动情况呈正相关。当所述内存块正向消耗速率越大时,所述内存块归还因子越大。当所述正向消耗变化量存在突变时,所述内存块归还因子越大。
具体地,本发明实施例中,所述内存块归还数量不超出所述当前剩余可用内存块数量与所述内存块数量下限阈值的差值或者不超出所述当前剩余可用内存块数量与内存块数量下限阈值的差值所对应的内存块数量。
再进一步地,本发明实施例中,步骤S300所述的根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理还包括:
当所述内存块消耗趋势为负向时,获取所述内存池的内存块负向消耗速率;
根据所述内存块负向消耗速率和预获取的所述内存池的当前剩余可用内存块信息对所述内存池的未来剩余可用内存块信息进行线性预测,所述未来剩余可用内存块信息包括未来剩余可用内存块的数量和总大小;
判断未来剩余可用内存块数量大于预定的内存块数量下限阈值且未来剩余可用内存块总大小大于预定的内存块总大小下限阈值的条件是否成立;
若否,控制所述内存池向所述操作系统申请内存块。
具体地,本发明实施例中,所述内存块负向消耗速率为最近5个信息获取时段内的负向消耗的平均变化量,所述负向消耗的变化量为所述内存块申请数量与所述内存块归还数量的差值的绝对值、所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值或者所述内存块申请频率与所述内存块归还频率的差值的绝对值;
所述未来剩余可用内存块信息为预定未来时段内的未来剩余可用内存块信息,所述预定未来时段的时长为所述信息获取时段的5倍。
再进一步地,本发明实施例中,所述控制所述内存池向所述操作系统申请内存块包括:
获取内存块申请因子;
根据所述内存块申请因子确定内存块申请数量;
控制所述内存池向所述操作系统申请相应数量的内存块。
可选地,本发明实施例中,所述内存块申请因子为常数。
可选地,本发明实施例中,所述内存块申请因子的获取方法包括:
获取最近5个信息获取时段中的最近1个信息获取时段内的负向消耗变化量的波动情况;
根据所述内存块负向消耗速率和所述负向消耗变化量的波动情况,并基于预获取的内存块负向消耗速率和负向消耗变化量波动情况与内存块申请因子的映射表获取所述内存块申请因子。
其中,所述内存块申请因子与所述内存块负向消耗速率和所述负向消耗变化量的波动情况呈正相关。当所述内存块负向消耗速率越大时,所述内存块申请因子越大。当所述负向消耗变化量存在突变时,所述内存块申请因子越大。
具体地,本发明实施例中,所述内存块申请数量不超出所述当前剩余可用内存块数量与所述内存块数量上限阈值的差值或者不超出所述当前剩余可用内存块总大小与内存块总大小上限阈值的差值所对应的内存块数量。
本发明实施例的内存池性能弹性伸缩的实现方法,先基于获取的内存块申请信息和内存块归还信息对内存池的内存块消耗趋势进行分析,再根据分析出的内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略控制内存池向操作系统归还内存块、控制内存池向操作系统申请内存块或者不对内存池做处理,以实现基于内存池的内存块消耗趋势提前对内存池保有的内存进行动态调整。由此带来的有益效果主要包括以下两点:
一、当预定未来时段内的未来剩余可用内存块较多时:内存池在保证业务服务程序的内存需求的基础上,将适量的多余的内存块归还给操作系统,以提升操作系统及服务器的性能。
二、当预定未来时段内的未来剩余可用内存块较少时:提前向操作系统申请适量的内存块以迎接后续的内存需求高峰,进而保证业务服务程序的性能和请求处理时延的平滑稳定。
相应地,本发明实施例还提出了一种内存池性能弹性伸缩的实现系统。图2示出了本发明实施例的内存池性能弹性伸缩的实现系统的原理框图。参照图2,本发明实施例的内存池性能弹性伸缩的实现系统包括以下功能模块:
内存池性能监控模块,用于获取内存使用者的内存块申请信息和内存块归还信息;
内存池性能调整模块,用于根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势,以及根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理,所述控制为控制所述内存池向操作系统归还内存块或者控制所述内存池向所述操作系统申请内存块。
进一步地,本发明实施例中,内存池性能监控模块是内存池的一个旁路模块,该模块不干扰内存池的内存管理操作和性能,其功能为通过监控内存池的方式获取内存使用者的内存块申请信息和内存块归还信息,以及获取内存池的当前剩余可用内存块信息。
再进一步地,本发明实施例中,内存池性能监控模块和内存池性能调整模块为内存池的一个旁路线程所执行的两个紧耦合的功能模块。如此设置,使得内存池性能监控模块和内存池性能调整模块的工作不干扰内存池的内存管理操作和性能,进而不干扰业务服务程序的正常运行,以保证业务服务程序的性能和请求处理时延的平滑稳定。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。

Claims (7)

1.一种内存池性能弹性伸缩的实现方法,其特征在于,包括:
获取内存使用者的内存块申请信息和内存块归还信息;
根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势;
根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理,所述控制为控制所述内存池向操作系统归还内存块或者控制所述内存池向所述操作系统申请内存块;
所述根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势包括:
当内存块申请数量小于内存块归还数量且二者差值的绝对值大于预定的第一参考值,或者,所申请内存块的总大小小于所归还内存块的总大小且二者差值的绝对值大于预定的第二参考值,或者,内存块申请频率小于内存块归还频率且二者差值的绝对值大于预定的第三参考值时,判断所述内存池的内存块消耗趋势为正向;
当所述内存块申请数量大于所述内存块归还数量且二者差值的绝对值大于所述第一参考值,或者,所述所申请内存块的总大小大于所述所归还内存块的总大小且二者差值的绝对值大于所述第二参考值,或者,所述内存块申请频率大于所述内存块归还频率且二者差值的绝对值大于所述第三参考值时,判断所述内存池的内存块消耗趋势为负向;
当所述内存块申请数量与所述内存块归还数量的差值的绝对值小于所述第一参考值,或者,所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值小于所述第二参考值,或者,所述内存块申请频率与所述内存块归还频率的差值的绝对值小于所述第三参考值时,判断所述内存池的内存块消耗趋势为平衡;
所述根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理还包括:
当所述内存块消耗趋势为正向时,获取所述内存池的内存块正向消耗速率;
根据所述内存块正向消耗速率和预获取的所述内存池的当前剩余可用内存块信息对所述内存池的未来剩余可用内存块信息进行预测,所述未来剩余可用内存块信息包括未来剩余可用内存块的数量和总大小;
判断未来剩余可用内存块数量小于预定的内存块数量上限阈值且未来剩余可用内存块总大小小于预定的内存块总大小上限阈值的条件是否成立;
若否,控制所述内存池向所述操作系统归还内存块。
2.根据权利要求1所述的内存池性能弹性伸缩的实现方法,其特征在于,所述根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理包括:
当所述内存块消耗趋势为平衡时,对所述内存池不做处理。
3.根据权利要求1所述的内存池性能弹性伸缩的实现方法,其特征在于,所述控制所述内存池向所述操作系统归还内存块包括:
获取内存块归还因子;
根据所述内存块归还因子确定内存块归还数量;
控制所述内存池向所述操作系统归还相应数量的内存块;
所述内存块归还因子的获取方法包括:
获取最近5个信息获取时段中的最近1个信息获取时段内的正向消耗变化量的波动情况;
根据所述内存块正向消耗速率和所述正向消耗变化量的波动情况,并基于预获取的内存块正向消耗速率和正向消耗变化量波动情况与内存块归还因子的映射表获取所述内存块归还因子。
4.根据权利要求3所述的内存池性能弹性伸缩的实现方法,其特征在于,所述根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理还包括:
当所述内存块消耗趋势为负向时,获取所述内存池的内存块负向消耗速率;
根据所述内存块负向消耗速率和预获取的所述内存池的当前剩余可用内存块信息对所述内存池的未来剩余可用内存块信息进行预测,所述未来剩余可用内存块信息包括未来剩余可用内存块的数量和总大小;
判断未来剩余可用内存块数量大于预定的内存块数量下限阈值且未来剩余可用内存块总大小大于预定的内存块总大小下限阈值的条件是否成立;
若否,控制所述内存池向所述操作系统申请内存块。
5.根据权利要求4所述的内存池性能弹性伸缩的实现方法,其特征在于,所述控制所述内存池向所述操作系统申请内存块包括:
获取内存块申请因子;
根据所述内存块申请因子确定内存块申请数量;
控制所述内存池向所述操作系统申请相应数量的内存块;
所述内存块申请因子的获取方法包括:
获取所述最近5个信息获取时段中的最近1个信息获取时段内的负向消耗变化量的波动情况;
根据所述内存块负向消耗速率和所述负向消耗变化量的波动情况,并基于预获取的内存块负向消耗速率和负向消耗变化量波动情况与内存块申请因子的映射表获取所述内存块申请因子。
6.根据权利要求5所述的内存池性能弹性伸缩的实现方法,其特征在于,所述内存块正向消耗速率为连续两个信息获取时段内的正向消耗的变化量或者多个信息获取时段内的正向消耗的平均变化量,所述正向消耗的变化量为所述内存块申请数量与所述内存块归还数量的差值的绝对值、所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值或者所述内存块申请频率与所述内存块归还频率的差值的绝对值;
所述内存块负向消耗速率为连续两个信息获取时段内的负向消耗的变化量或者多个信息获取时段内的负向消耗的平均变化量,所述负向消耗的变化量为所述内存块申请数量与所述内存块归还数量的差值的绝对值、所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值或者所述内存块申请频率与所述内存块归还频率的差值的绝对值;
当所述内存块消耗趋势为正向或者负向时,所述未来剩余可用内存块信息为预定未来时段内的未来剩余可用内存块信息,所述预定未来时段为所述信息获取时段的整数倍或者预定的时间长度。
7.一种内存池性能弹性伸缩的实现系统,其特征在于,包括:
内存池性能监控模块,用于获取内存使用者的内存块申请信息和内存块归还信息;
内存池性能调整模块,用于根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势,以及根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理,所述控制为控制所述内存池向操作系统归还内存块或者控制所述内存池向所述操作系统申请内存块;
所述根据所述内存块申请信息和所述内存块归还信息获取内存池的内存块消耗趋势包括:
当内存块申请数量小于内存块归还数量且二者差值的绝对值大于预定的第一参考值,或者,所申请内存块的总大小小于所归还内存块的总大小且二者差值的绝对值大于预定的第二参考值,或者,内存块申请频率小于内存块归还频率且二者差值的绝对值大于预定的第三参考值时,判断所述内存池的内存块消耗趋势为正向;
当所述内存块申请数量大于所述内存块归还数量且二者差值的绝对值大于所述第一参考值,或者,所述所申请内存块的总大小大于所述所归还内存块的总大小且二者差值的绝对值大于所述第二参考值,或者,所述内存块申请频率大于所述内存块归还频率且二者差值的绝对值大于所述第三参考值时,判断所述内存池的内存块消耗趋势为负向;
当所述内存块申请数量与所述内存块归还数量的差值的绝对值小于所述第一参考值,或者,所述所申请内存块的总大小与所述所归还内存块的总大小的差值的绝对值小于所述第二参考值,或者,所述内存块申请频率与所述内存块归还频率的差值的绝对值小于所述第三参考值时,判断所述内存池的内存块消耗趋势为平衡;
所述根据所述内存块消耗趋势,基于预定的内存池性能弹性伸缩实现策略对所述内存池进行相应的控制或者不做处理还包括:
当所述内存块消耗趋势为正向时,获取所述内存池的内存块正向消耗速率;
根据所述内存块正向消耗速率和预获取的所述内存池的当前剩余可用内存块信息对所述内存池的未来剩余可用内存块信息进行预测,所述未来剩余可用内存块信息包括未来剩余可用内存块的数量和总大小;
判断未来剩余可用内存块数量小于预定的内存块数量上限阈值且未来剩余可用内存块总大小小于预定的内存块总大小上限阈值的条件是否成立;
若否,控制所述内存池向所述操作系统归还内存块。
CN202110846621.1A 2021-07-26 2021-07-26 一种内存池性能弹性伸缩的实现方法及系统 Active CN113504994B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110846621.1A CN113504994B (zh) 2021-07-26 2021-07-26 一种内存池性能弹性伸缩的实现方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110846621.1A CN113504994B (zh) 2021-07-26 2021-07-26 一种内存池性能弹性伸缩的实现方法及系统

Publications (2)

Publication Number Publication Date
CN113504994A CN113504994A (zh) 2021-10-15
CN113504994B true CN113504994B (zh) 2022-05-10

Family

ID=78014591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110846621.1A Active CN113504994B (zh) 2021-07-26 2021-07-26 一种内存池性能弹性伸缩的实现方法及系统

Country Status (1)

Country Link
CN (1) CN113504994B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118747125A (zh) * 2024-08-21 2024-10-08 荣耀终端有限公司 一种内存管理方法、电子设备及计算机可读介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286878A (zh) * 2008-04-22 2008-10-15 中兴通讯股份有限公司 一种终端的内存池的管理方法
CN102880555A (zh) * 2012-07-28 2013-01-16 福州大学 面向实时系统的内存算法
CN106095693A (zh) * 2016-05-31 2016-11-09 国家计算机网络与信息安全管理中心 一种面向非固定包长的无锁化多链内存管理方法
CN110245091A (zh) * 2018-10-29 2019-09-17 浙江大华技术股份有限公司 一种内存管理的方法、装置及计算机存储介质
CN111580980A (zh) * 2020-05-15 2020-08-25 北京小米松果电子有限公司 内存管理方法和装置
CN111708641A (zh) * 2020-07-14 2020-09-25 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN112214329A (zh) * 2020-11-04 2021-01-12 腾讯科技(深圳)有限公司 内存管理方法、装置、设备及计算机可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6968016B2 (ja) * 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101286878A (zh) * 2008-04-22 2008-10-15 中兴通讯股份有限公司 一种终端的内存池的管理方法
CN102880555A (zh) * 2012-07-28 2013-01-16 福州大学 面向实时系统的内存算法
CN106095693A (zh) * 2016-05-31 2016-11-09 国家计算机网络与信息安全管理中心 一种面向非固定包长的无锁化多链内存管理方法
CN110245091A (zh) * 2018-10-29 2019-09-17 浙江大华技术股份有限公司 一种内存管理的方法、装置及计算机存储介质
CN111580980A (zh) * 2020-05-15 2020-08-25 北京小米松果电子有限公司 内存管理方法和装置
CN111708641A (zh) * 2020-07-14 2020-09-25 腾讯科技(深圳)有限公司 一种内存管理方法、装置、设备及计算机可读存储介质
CN112214329A (zh) * 2020-11-04 2021-01-12 腾讯科技(深圳)有限公司 内存管理方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN113504994A (zh) 2021-10-15

Similar Documents

Publication Publication Date Title
CN107066332B (zh) 分布式系统及其调度方法和调度装置
US7788671B2 (en) On-demand application resource allocation through dynamic reconfiguration of application cluster size and placement
CN109451051B (zh) 服务请求处理方法、装置、电子设备及存储介质
US8495646B2 (en) Resource allocation system, resource allocation method and program which flexibly introduces a service
US7975123B2 (en) Computer system, management computer and storage system, and storage area allocation amount controlling method
CN103365704B (zh) 虚拟机迁移中的内存预拷贝方法及执行该方法的装置和系统
US20010010052A1 (en) Method for controlling multithreading
WO2012103231A1 (en) Computing platform with resource constraint negotiation
US20120216054A1 (en) Method and apparatus for controlling power in low-power multi-core system
CN113504994B (zh) 一种内存池性能弹性伸缩的实现方法及系统
US20130268779A1 (en) Systems and methods for dynamic power management in a blade server
CN109726007B (zh) 一种容器编排配额管理方法和装置、及容器编排系统
CN111104208A (zh) 进程调度管理方法、装置、计算机设备及存储介质
JPH10289116A (ja) プロセッサ・リソース管理装置
US10514848B2 (en) Data storage method for selectively storing data in a buffer preset in a memory of an electronic device or an inherent buffer in an SSD
CN109597674B (zh) 一种共享虚拟资源池份额调度方法及系统
US6631446B1 (en) Self-tuning buffer management
CN109144664B (zh) 一种基于用户服务质量需求差异的虚拟机动态迁移方法
CN114860449B (zh) 数据处理方法、装置、设备和存储介质
CN111399995A (zh) 保证延迟敏感程序服务质量的调节方法及系统
CN114490030A (zh) 自适应动态redis连接池的实现方法及装置
US9367439B2 (en) Physical memory usage prediction
KR20150070930A (ko) 최적 비용을 고려한 마이그레이션 자원 할당 시스템 및 할당 방법
KR101932523B1 (ko) 가상 머신에 할당된 가상 gpu 메모리의 슬롯을 동적으로 증감시키는 방법 및 이를 구현하는 컴퓨팅 장치
CN111813209A (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
GR01 Patent grant
GR01 Patent grant