CN113296883A - 应用管理方法和装置 - Google Patents
应用管理方法和装置 Download PDFInfo
- Publication number
- CN113296883A CN113296883A CN202110197564.9A CN202110197564A CN113296883A CN 113296883 A CN113296883 A CN 113296883A CN 202110197564 A CN202110197564 A CN 202110197564A CN 113296883 A CN113296883 A CN 113296883A
- Authority
- CN
- China
- Prior art keywords
- memory
- application
- instances
- application instances
- objects
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 28
- 230000015654 memory Effects 0.000 claims abstract description 203
- 238000000034 method Methods 0.000 claims abstract description 88
- 230000008707 rearrangement Effects 0.000 claims abstract description 31
- 238000003860 storage Methods 0.000 claims description 21
- 238000004064 recycling Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 34
- 238000010586 diagram Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000005056 memory consolidation Effects 0.000 description 8
- 230000009467 reduction Effects 0.000 description 8
- 239000010410 layer Substances 0.000 description 7
- 238000007596 consolidation process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000008602 contraction Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000004083 survival effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
-
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
公开了一种改进的应用管理方法和装置。所述方法,包括:收集用于无服务器计算的应用实例中的对象并按对象引用层级关系生成参照树;根据所述参照树对多个应用实例进行内存对象重排;以及对经重排的所述多个应用实例进行内存合并,以使得所述相似应用实例进入低功耗状态。本发明通过针对应用实例,尤其是针对堆内存区的重排和合并,能够使多个相似运行实例之间实现最大程度的内存共享,减少待命状态实例对系统资源的占用,提高资源的平均利用率。由此,可以在相同的系统资源下,启动更多的运行实例处于待命状态,以应对快速弹性扩容场景。
Description
技术领域
本公开涉及无服务器计算领域,尤其涉及一种应用管理方法和装置。
背景技术
无服务器计算(Serverless),又被称为功能即服务,是云计算的一种模型。以平台即服务为基础,无服务器运算提供一个微型架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。在当前云计算分布式环境下,无服务器计算由于能使应用开发人员能专注于产品,无需关心应用程序在本地或云端的服务器运行状态而受到欢迎。
为了应对服务请求流量的变化,应用运行实例需要从一个实例增加到多个实例,或者从多个副本减少为较少的副本,可以把增加和减少的过程分别称为扩容和缩容,扩容和缩容的能力统称为弹性。
在无服务器计算弹性场景下,应用冷启动耗时较长,无法满足快速扩容要求。为了给用户提供更高的服务质量,通常需要预先启动一定数量的实例(例如,Java服务实例),使这些实例处于待命状态,来应对流量变化下的快速扩容需求。这些处于待命状态的实例平时不接受外部请求连接,不参与对外服务,但却占用大量的系统资源,造成了严重的系统资源浪费。
为此,需要一种改进的应用管理方案。
发明内容
本公开要解决的一个技术问题是提供一种用于无服务器计算的改进的应用管理方案。考虑到预先启动的实例通常具有相似的运行上下文,本发明通过针对应用实例,尤其是针对实例堆内存区的重排和合并,能够使多个相似运行实例之间实现最大程度的内存共享,减少待命状态实例对系统资源的占用,提高资源的平均利用率。由此可以在相同的系统资源下,启动更多的运行实例处于待命状态或者启动其它应用的运行实例,以应对快速弹性扩容场景。
根据本公开的第一个方面,提供了一种应用管理方法,包括:收集用于无服务器计算的应用实例中的对象并按对象引用层级关系生成参照树;根据所述参照树对多个应用实例进行内存对象重排;以及对经重排的所述多个应用实例的相同部分进行内存合并。
根据本公开的第二个方面,提供了一种内存整理方法,包括:对用于无服务器计算的应用实例执行垃圾回收操作;对经垃圾回收的应用实例,执行基于参照树的内存对象重排操作,其中所述参照树是收集当前应用实例或当前应用实例的相似应用实例中的对象并按对象引用层级关系生成的;以及对经内存对象重排的应用实例进行内存合并操作。
根据本公开的第三个方面,提供了一种应用管理装置,包括:参照树生成单元,用于收集用于无服务器计算的应用实例中的对象并按对象引用层级关系生成参照树;内存重排单元,用于根据所述参照树对多个应用实例进行内存对象重排;以及内存合并单元,用于对经重排的所述多个应用实例的相同部分进行内存合并。
根据本公开的第四个方面,提供了一种内存整理装置,包括:垃圾回收单元,用于对无服务器计算的应用实例执行垃圾回收操作;内存重排单元,用于对经垃圾回收的应用实例,执行基于参照树的内存对象重排操作,其中所述参照树是收集当前应用实例或当前应用实例的相似应用实例中的对象并按对象引用层级关系生成的;以及内存合并单元,用于对经内存对象重排的应用实例进行内存合并操作。
根据本公开的第五个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一和第二方面所述的方法。
根据本公开的第六个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一和第二方面所述的方法。
由此,本发明通过设计一整套的基于多进程内存共享的毫秒级应用弹性方案,利用JVM CDS技术,内存堆对齐算法,线程栈回收,借助KSM内存合并技术能够使同一应用的多个存活实例占用极少的系统资源,并且能够以较低的资源成本实现应用实例的毫秒级弹性扩容。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了根据本发明一个实施例的用于无服务器计算的应用管理方法的示意性流程图。
图2示出了冷启动多个应用实例后JVM内存示意图。
图3示出了经过FGC操作后的JVM内存示意图。
图4示出了重排元区域后跨JVM共享的内存示意图。
图5示出了根据本发明的堆对齐操作的执行步骤。
图6示出了本发明进行栈帧回收的一个例子。
图7示出了根据本发明降低应用实例内存消耗的一个例子。
图8示出了基于应用分组进行内存合并的一个例子。
图9示出了本发明不同类型的应用实例直接状态转换的例子。
图10示出了根据本发明一个实施例的应用管理装置的组成示意图。
图11示出了根据本发明一个实施例可用于实现上述应用管理和/或内存整理方法的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
如前所述,无服务器计算由于能使应用开发人员能专注于产品,无需关心应用程序在本地或云端的服务器运行状态而受到欢迎。而在无服务器计算弹性场景下,应用冷启动耗时较长,无法满足快速扩容要求。为了给用户提供更高的服务质量,通常需要预先启动一定数量的实例(例如,Java服务实例),使这些实例处于待命(standby)状态,来应对流量变化下的快速扩容需求。这些处于待命状态的实例平时不接受外部请求连接,不参与提供服务,但却占用大量的系统资源,造成了严重的系统资源浪费。
目前部分系统或者环境下为了实现Java实例的快速启动和最大程度的资源共享,底层通常使用Fork或者Clone技术来创建新的进程创建。例如,在安卓系统中普遍使用的Zygote框架,其它运行实例的创建均是通过Zygote主进程Fork而来,最终达到运行实例的快速启动和资源共享目的。
然而针对传统Java应用,利用Fork/Clone新创建的运行实例可能存在状态问题,尤其是对于一些Java后台服务程序,多个实例可能会存在相同的IP或者UUID等信息,在真实的生产环境中,这是不可接受的。同时这种方法在程序运行内存被污染后,无法重新回到之前的共享状态。另外,利用Fork/Clone需要将存在共享部分尽可能放到Fork/Clone调用之前完成,这样新Fork的运行实例才能最大可能的和父进程共享资源。对于传统Java应用,一方面这部分资源占比较小,另一方面,需要对程序的逻辑和代码进程重构,把一些共性的逻辑前置,对于存量应用,代码重构和改造的难度较大。
为此,考虑到预先启动的实例通常具有相似的运行上下文(例如,JVM运行上下文),本发明通过针对应用实例,尤其是针对实例堆内存区(例如,JavaHeap)的整理和重排,能够使多个相似运行实例之间实现最大程度的内存共享,减少待命状态实例对系统资源的占用,提高资源的平均利用率。同时者也意味着在相同的系统资源下,可以启动更多的运行实例处于待命状态或者其它应用的运行实例,应对快速弹性扩容场景。
图1示出了根据本发明一个实施例的用于无服务器计算的应用管理方法的示意性流程图。上述管理方法尤其适于实现为一种基于多进程内存共享的毫秒级应用弹性方法。在此,“弹性”指应用程序的扩缩容,其中,扩容可以指应用程序从一种低功耗状态变为可接受全量流量状态的过程,缩容则可指从接受流量变为一个待命(Standby)运行实例的过程。弹性可以分为垂直弹性和水平弹性,垂直弹性指扩缩容行为发生在同一个主机上,水平弹性指跨主机的扩缩容行为;为了实现无服务器计算弹性快速扩缩容,缩短服务响应时间,一些情况下,需要预先准备多个应用程序的运行实例并处于待命状态。本发明的应用管理方法尤其关注所述无服务器计算弹性场景。
在步骤S110,收集应用实例中的对象并按对象引用层级关系生成参照树。在步骤S120,根据所述参照树对多个应用实例进行内存对象重排。即,按照参照树中对象的次序和层级结构,对应用实例对应内存内的数据(所述数据可以表征应用实例中的对象)进行重新排列。在步骤S130,对经重排的所述多个应用实例的相同部分进行内存合并,进而使得所述多个应用实例进入低功耗状态。
由于多个应用实例的相似性(例如,针对同一应用启动的多个应用实例),因此这多个应用实例虽然可能在启动过程中因为种种原因而具有不同的对象次序,但所包含对象(例如,顶层的根对象)以及对象的引用关系是高度相似或是相同的。为此,可以在步骤S120基于同一个参照树,对各个应用实例中的对象(及其引用关系)进行重排,由此实现内存物理页的高度相同。继而能够在步骤S130,对各个应用实例间的相同数据部分进行合并,例如,仅保留一个副本,并使得其他应用实例能够在扩容时直接复制这个保留副本的内容。
由此,通过相似的多个应用实例中针对对象的层级整理和内存合并,实现无服务器计算的缩容状态。
在无服务器计算场景中,应用实例通常可以实现为JVM(Java虚拟机)应用实例。每一个实例最初可被冷启动并对应于一个进程。在此,“冷启动”指一个应用程序的进程从初始状态开始,分配进程运行资源,包括计算机加载程序代码,启动进程,完整经历代码加载,程序初始化等环节的应用启动过程。
“多个应用实例”则包括步骤S110中收集对象并产生参照树的一个应用实例,以及与所述应用实例相似的多个其他应用实例(即,“相似应用实例”)。由于这些应用实例都包括类似的对象以及对象引用关系,因此才可以基于参照树中的对象次序和引用层级关系,进行步骤S120中的内存重排以及步骤S130中的内存合并。
“相似应用实例”尤其可以是针对同一个应用的应用实例,例如,同一个购物应用A的100个应用实例(进程)。在一个实施例中,相似应用实例可以是相似JVM运行实例。可以针对同一个JAVA应用程序,经过多次启动生成具有相同配置、相同运行时参数的多个运行实例,或者只有少数的运行参数不同,例如应用的IP,端口等信息不同的多个运行实例。本文中,可以把这样的多个JVM实例称为多个相似的JVM运行实例。这些实例运行在独立的进程上下文中,拥有独立的虚拟地址空间。由于这些实例的启动时间不同,启动过程中系统的运行时环境,系统资源不同,代码逻辑运行时异步操作的不确定性,例如网络连接,远程过程调用,以及JAVA程序运行过程中,JVM GC(Garbage Collection,垃圾收集)收集时机等运行时状态的不确定性,导致多个JVM运行实例运行时上下文不一致,但它们运行的代码,运行时的参数,代码运行逻辑几乎都是相同的,本文称这些实例为相似的JVM运行实例,并且可以利用这些运行实例的相似性来实现占用极少内存资源的缩容状态并毫秒级扩容至服务用户全流量请求的线上状态。
在启动的应用实例中存在大量对象,考虑到相似应用实例的运行代码,运行时参数,代码运行逻辑几乎相同,因此本发明通过收集应用实例中对象并按层级关系生成参照树,就可以基于该参照树对所有相似应用实例进行内存整理,并据此进行内存合并,从而使得这些应用实例在待命状态(即,低功耗状态)下占据极小的内存资源,并能够快速弹性扩容至线上状态。
应用实例需要启动过程。为此,可以在步骤S110之前,冷启动所述多个应用实例。例如,针对同一个应用程序,启动多个运行实例。图2示出了冷启动多个应用实例后JVM内存示意图。
如图所示,同一个应用冷启动三个运行实例A1、A2和A3。在如图所示的原始状态中,针对每个运行实例,都包括一个JAVAHeap(JAVA堆)。每个堆内都包括年轻代(Young)、老年代(Old)和元区域(MetaArea)。
在冷启动之后,可以对多个应用实例进行堆内垃圾回收操作并释放临时对象。可以对JAVAHeap进行GC处理,尤其是针对整个堆的完全GC(FullGC,FGC)处理。图3示出了经过FGC操作后的JVM内存示意图。如图所示,在FGC预处理之后,可以回收掉新生代(Eden区域)中的大部分临时对象。此时,年轻代中还包括survivors(存留区,在某些情况下存留区可被进一步分割成S0和S1区)。
针对图2和图3中的元区域,则可以进行类数据共享操作,以实现跨实例的内存共享。例如,对于热备状态的JVM实例,可以在启动时启用App CDS(Class Data Sharing,类数据共享)技术,以便对JVM实例的Meta Area区域进行内存共享。
对Meta Area区域,可以按照类进行重排,并在重排后实现跨JVM共享。由此在此阶段Meta Area发生了变化,因此需要对Old区域对象头中的Kclass字段做修改,从而实现利用CDS技术的元区域内存共享操作。图4示出了重排元区域后跨JVM共享的内存示意图。
本领域技术人员应该理解的是,虽然在图2-4中未示出,但JVM内存中,除了堆内区域之外,还可以堆外区域,例如包括寄存器、JVM栈和本地方法栈的线程区域等。
优选在进行FGC预处理之后,并且可选地在MetaArea重排共享之后,进行如步骤S110-S130的参照树构建、内存对象重排和合并操作。上述步骤S110-S130的参照树构建、内存对象重排和合并操作尤其适于对survivors区域和Old区域进行。
具体地,可以在处理完Young区和Meta Area区域后,对JVM实例的Survive区域和Old区域(这部分区域也是JVM Heap中内存占比最大的一部分)进行处理。选定一组相似JVM实例中的一个JVM实例,对于这部分内存使用一种本发明创新的堆对齐操作(对应于步骤S110和S120)进行整理,然后将整理出的元信息导出(例如,以参照树的形式),使其作为参考信息来整理其它的相似JVM内存实例的相同内存区域。
本发明的堆对齐操作可以看作是一种GC增强的算法,可以在GC过程中透明地完成堆对象的整理,尽可能使多个相似JVM实例堆区内存数据一致。堆对齐操作主要目的是通过对堆内对象进行整理,屏蔽或缩小上述多个JVM内存不一致的范围。当然本发明上述操作的前提是同一个应用的不同JVM进程的内存数据基本一致,如果两个堆差距较大,对齐操作的效果会变差。
由于堆对齐操作优选在FGC之后进行,而FGC已经率先回收掉了Eden区的大部分临时对象。为此,收集应用实例中的对象并按对象引用层级关系生成参照树包括:收集释放临时对象后堆内的存活对象,并按层级关系生成参照树。可以收集堆内存活的顶层对象作为所述参照树的第一层;收集第一层对象直接引用的对象作为所述参照树的第二层;以及以此类推至最终层。在此,顶层对象通常是JVM中的root objects(根对象)定义,一般是系统对象,或者永久代中的对象。
具体地,在堆对齐操作执行过程中,可以首先按照BFS(Breadth First Search,广度优先)算法收集JVM Heap中所有存活的顶层对象,包括堆内GC Root(根)或者堆外GCRoot直接引用的对象。第2层收集的对象为第1层对象直接引用的对象,第3层收集的对象为第2层直接引用的对象,以此类推。最终,对于Survive和Old区域中的对象收集形成按照引用层级的存储对象。完成存活对象收集后,可以将所有对象的地址聚集在树中并获取层次关系,但对象的内容还散乱在整个堆中,接下来会通过运行堆整理算法来重排堆内的对象,同时将用于指导重排的层级数据导出用于根据该信息对其它相似JVM实例进行内存整理。
图5示出了根据本发明的堆对齐操作的执行步骤。如图所示,上半部主要用于收集参考进程的存活对象布局信息,并产生BFS树,随后导出该数据结构(OopBfsTree),得到参照树(base_tree)。所述参照树可以如前所述包括对象的地址和层次关系。作为替换,参照树可以仅包含每层每个类区域的元数据,例如对象数量、大小等,而不包含对象地址。
在下半部过程中可以利用堆对齐操作依靠在上半部得到的参照树对其它进程进行内存整理(即,基于参照树的内存对象重排及合并)。如图所示,在下半部,多个进程实例可以根据同一棵参照树进行JVM堆整理(堆整理算法),整理过后便冻结进程,随后进行内存扫描合并,例如通过触发KSM。
如前所述,JVM内存中,除了堆内区域之外,还可以堆外区域。堆外区域包括线程区域。每一个线程都可以包括:
PC Register:也称为程序寄存器,记录每个线程当前执行的指令信。由此可以获知该线程当前执行到哪一条指令,下一条该取哪条指令。
JVM Stack:也称为虚拟机栈,记录每个栈帧(Frame)中的局部变量、方法返回地址等。线程中每次有方法调用时,会创建Frame,方法调用结束时Frame销毁。
Native Method Stack:本地(原生)方法栈,顾名思义就是调用操作系统原生本地方法时,所需要的内存区域。
上述3类区域,生命周期与线程相同。在线程创建时,相应的区域分配内存,线程销毁时,释放相应内存。
用于执行本发明堆对齐操作的堆(Heap)内存区由所有线程共享。堆内存区,也是GC垃圾回收的主站场,用于存放类的实例对象及数组实例等。
所有线程共享的区域除了堆内存区之外,还包括方法区等。方法区(MethodArea),主要存放类结构、类成员定义,静态成员等。方法区中包括运行时常量池(RuntimeConstant Pool),通常用于存放字符串,int-128~127范围的值等。根据规范,方法区的具体实现可基于JVM实现决定。因此从逻辑上讲,也可以将方法区视为堆区的一部分。堆区和方法区都是在虚拟机启动时创建,虚拟机退出时释放。
由上可知,JVM内存区域中包括线程区域,各线程区域共享的堆区。为此,本发明的应用管理方案(的缩容部分)还可以包括对相似应用实例的线程进行栈帧回收。
可以在处理完待命状态的JVM的堆区内存之后,对其内部线程栈帧做进一步内存回收。例如,可以通过实现扩展的JCMD命令,导出了JVM待命实例内部线程相关的栈信息,并利用Ptrace系统调用获取线程上下文的寄存器信息,对线程的栈进行回收。在本发明的无服务器计算场景中,对于一些电商领域大型的应用,Java进程内部会有多达400数量的线程,进过栈帧回收通常可以节省50M左右的内存空间。
图6示出了本发明进行栈帧回收的一个例子。如图所示,每个栈帧包括操作数栈、栈帧信息和局部变量区。线程中每次有方法调用时,会创建栈帧,方法调用结束时栈帧销毁。为此,在冷启动过程中,每个线程的栈帧会如图左侧所示有所增长。通过栈帧回收,则可以在进程启动完毕后实现大部分线程的退栈,由此实现如图右侧所示的栈帧退出销毁,释放退出部分的内存。
对于如上经历了整理的内存,可以进行内存合并。为此,步骤S130可以包括:对指定堆区域经内存对象重排的所述相似应用实例进行内存标记;以及启用内核内存共享(KSM),触发所述相似应用实例间的内存共享。
在计算中,内核同页合并(KSM)(也称为内核共享内存,内存合并,内存重复数据删除和页面重复数据删除)是一项内核功能,它使虚拟机管理程序系统可以在多个内存之间共享具有相同内容的内存页面流程和/或虚拟访客。虽然不直接链接,但基于内核的虚拟机(KVM)可以使用KSM合并虚拟机占用的内存页面。
KSM通过在主内存中扫描具有相同内容的物理页面来执行内存重复数据删除,并标识映射到这些物理页面的虚拟页面。它保留一页不变,并重新映射每个重复的页面以指向同一物理页面,然后释放多余的物理页面以供重复使用。它还将两个虚拟页面都标记为“写时复制”(COW),以便内核将在任何进程开始向其自动写入后自动将虚拟页面重新映射回具有其自己的单独物理页面。
在本发明中,在完成如上所述的FGC、堆对齐、栈帧释放等步骤之后,可以通过扩展的JCMD命令,或是借用Ptrace方式,对指定的JVM堆栈区域发起Madvice内存标记,然后启用KSM合并内核工作线程,触发指定的JVM内存区域进行内存合并,实现多个待命JVM实例内存共享。
经过上述多个内存整理步骤之后,我们能够以极低的系统资源缓存一个待命状态的JVM实例,这可以保证我们以相同的资源可以缓存更多的Java实例用于极速扩容。
图7示出了根据本发明降低应用实例内存消耗的一个例子。如图7所示,一个冷启动的Java运行实例例如需要占据4G的内存。随后,对JVM内存区域进行完全GC(FullGC),将有物理页且有对象的部分区域回收为有物理页但无对象的区域(通常位于JavaHeap区,尤其是Eden区域),并经由释放处理进行内存释放。
在经过FGC和释放之后,Java运行实例占据的内存变为1G。随后,可以针对Code(代码)区、Meta区、Heap区和Stack(栈)区中的一个或多个区域进行内存共享和/或释放。由于这些区域映射在内存的不同区域,因此上述处理可以如图所示相对独立的进行。
例如,可以对约50M的Code区进行AOT导出,并进行PageCache(页高速缓存)共享;可以对约20M的Meta区进行AppCDS导出,并进行PageCache(页高速缓存)共享,以实现约75%的内存空虚;可以对约450M的Heap区执行如上所述的堆对齐操作,以进行基于对象的整理,并整理后的堆区进行KSM内存合并,以合并50%-80%的内存空间;另外,可以基于栈帧回收,对Stack(栈)区进行内存回收,以释放约90%的内存。
由于约150M的其他内存空间的存在,因此经如上压缩后的一个应用实例可以占据400M的空间。
为此,本发明还可以实现为一种内存整理方法,包括:对用于无服务器计算的应用实例执行垃圾回收操作;对经垃圾回收的应用实例,执行基于参照树的内存对象重排操作,其中所述参照树是收集当前应用实例或当前应用实例的相似应用实例中的对象并按层级关系生成的;以及对经内存对象重排的应用实例进行内存合并操作。除了基于堆对齐操作和KSM的内存合并操作之后,该内存整理方法还可以包括图7所示的如下操作:利用类数据共享进行元区域内存共享;通过栈帧回收释放栈区域内存;和/或导出代码进行页缓存共享。
由此,可以实现应用实例的缩容。随后,在扩容阶段,可以利用如上所述的KSM的COW功能,将合并的虚拟页面重新映射为自己单独的物理页面,以恢复所述应用实例的线上状态,也可以称为可接收全流量状态。
如上结合图1-7描述了针对同一应用的相似应用实例进行的内存整理和压缩方案。进一步地,本发明的应用管理方法还可以针对不同应用各自的多个彼此相似应用实例进行操作。为此,该方法还可以包括:将不同应用各自的应用实例作为所述相似应用实例加入一个应用分组;以及对多个应用分组中的每个分组(即,每个分组内的多个应用实例)执行内存合并操作。
在实际使用中,可以引入一种按照进程分组的KSM内存合并算法,通过把同一应用的多个应用实例加入到一个应用分组中进行内存合并。具体地,可以将每个分组中选定JVM实例的Survive区域和Old区域整理之后,利用上述堆对齐算法收集的对象层级元数据信息导出。利用导出的对象分层数据对本组内其它处于代码状态的JVM运行实例进行对象重排,并按分组进行内存合并。
图8示出了基于应用分组进行内存合并的一个例子。如图所示,待定队列中包括来自Madvise的事件,这些事件可经由Madvise进行内存标记,并且具有相同颜色/图案的矩形表示来自同一个应用进程的事件。
随后,在扫描队列,可以将来自不同应用的事件分入不同的应用分组。如图8下部所示,分组0可以是默认分组,包括来自多个应用的不同进程(实例)。分组1、2、3…N则可以是分别对应于一种应用的不同进程。换句话说,分组1内的六个方块可以代表应用1的六个彼此相似的应用实例,可以针对1个实例(方块)进行参照树提取,并将提取的参照树应用于这六个方块中每一个方块各自的内存整理,并且随后对这六个方块进行KSM内存合并。类似地,可以对分组2、3…N执行如分组1中类似的操作。
利用上述一整套内存整理策略,可以使多个冷启动存活的JVM实例尽可能共享最大的内存,降低存活缓存实例的资源成本。在一个优选实施例中,还可以进一步利用1:1的快照技术方案提供一套多级缓存的弹性方案。图9示出了本发明不同类型的应用实例直接状态转换的例子。
在此,L2、L1和L0表示同一实例的不同类型状态。L0是正常接受流量的应用实例集,即线上状态的、可以接收全流量的实例的集合。L1是基于本发明的内存整理和合并操作后的待命状态的实例集。L2是例如利用Checkpoint/Restore(检查点/恢复)技术把待命状态的实例做成快照的实例集合。
另外,线上实例(全流量状态)L0所占用的资源为“4c、4g”,即4核(CPU)及4g内存,所需额外成本为0。低功耗实例(低功耗状态)L1所占用的资源为“0c、400M”,即0核(不占据CPU)及400M内存,并且所需额外成本为CPU:0c*实例数,内存:400M*实例数。快照实例L2所占用的资源为“400M”,即400M内存,并且所需额外成本为存储:400M*实例数,带宽:400M*实例数。
如图所示,在结合快照能力的情况下,可以先启动一批进程(例如,同一应用的多个彼此相似的应用实例),执行上述的内存合并整理操作(例如,图7所示的一系列操作),在利用诸如Checkpoint/Restore技术,对这些内存合并之后的待命存活实例进行快照操作(1:1快照,即一个实例,一个快照)。由此得到L2状态的快照实例集(例如,生成快照集,并模拟KSM在磁盘层面降低快照大小)。随后,可以利用本地恢复(LocalRestore)技术,并利用KSM合并,达到L1状态。随后,通过重绑CPU实现L0线上状态的毫秒级恢复。
而在首次启动时,可以直接通过对冷启动的进程执行上述的内存合并整理操作(例如,图7所示的一系列操作),达到L1状态。随后,通过重绑CPU实现L0线上状态的毫秒级恢复。
换句话说,在冷启动一批相似应用实例时,可以直接对其执行如图7所示的操作,以将占用“4G”内存的冷启动实例转换为占用“400M”内存的待命状态(即,L1状态)。随后,可以基于扩容指令,恢复所述相似应用实例的可接收全流量状态,即直接从L1状态恢复到“4c4g”的线上状态L0。
在需要从全流量状态恢复到低功率状态时(即,扩容后的再缩容),可以对线上状态的实例进行内存整理,将经内存合并的多个应用实例制作成快照,由此得到L2状态,并可经由快照启动以恢复至所述多个应用实例的可接收全流量状态。换句话说,引入快照技术可以对基于本发明的内存整理结果进行二次利用,以避免对实例的不断冷启动。由于冷启动比快照启动时间更长(例如,30svs10s),因此再缩容时制作成快照能够缩短启动时间。进一步地,对经由本发明内存整理操作的实例制作成的快照,本身实例间内存排列一直,因此可以省略基于参照树的整理操作,直接进行KSM内存合并,提升后续缩容、扩容效率。
另外,在引入快照技术之前,本发明应用于垂直扩容,即对同一机器生成的多个应用实例进行缩容以及后续的扩容操作。在引入快照技术之后,则可以跨机器分发所述快照,以实现所述多个应用实例的水平扩容。
如上结合附图1-9描述了根据本发明的应用管理方法,以及相应的内存整理方法。进一步地,本发明还可以实现为一种对应的应用管理装置,和/或内存整理装置。
图10示出了根据本发明一个实施例的应用管理装置的组成示意图。
如图所示,装置1000包括参照树生成单元1010、内存重排单元1020和内存合并单元1030。
参照树生成单元1010用于收集用于无服务器计算的应用实例中的对象并按对象引用层级关系生成参照树。内存重排单元1020用于根据所述参照树对相似应用实例进行内存对象重排。内存合并单元1030用于对经重排的相似应用实例进行内存合并。由此使得多个应用实例进入低功耗状态。
进一步地,该装置还可以包括:启动单元,用于冷启动所述相似应用实例;以及垃圾回收单元,用于对多个应用实例进行堆内垃圾回收操作并释放临时对象。
进一步地,该装置还可以包括:扩容单元,用于基于扩容指令,恢复多个应用实例的可接收全流量状态。
进一步地,该装置还可以包括:快照制作单元,用于将经内存合并的多个应用实例制作成快照,其中,所述扩容单元可以用于经由所述快照启动以恢复至所述多个应用实例的可接收全流量状态。
类似地,本发明还可以实现为一种内存整理装置,包括:垃圾回收单元,用于对无服务器计算的应用实例执行垃圾回收操作;内存重排单元,用于对经垃圾回收的应用实例,执行基于参照树的内存对象重排操作,其中所述参照树是收集当前应用实例或当前应用实例的相似应用实例中的对象并按对象引用层级关系生成的;以及内存合并单元,用于对经内存对象重排的应用实例进行内存合并操作。
图11示出了根据本发明一个实施例可用于实现上述应用管理和/或内存整理方法的计算设备的结构示意图。
参见图11,计算设备1100包括存储器1110和处理器1120。
处理器1120可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器1120可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器1120可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器1110可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器1120或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器1110可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1110可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器1110上存储有可执行代码,当可执行代码被处理器1120处理时,可以使处理器1120执行上文述及的应用管理和/或内存整理方法。
上文中已经参考附图详细描述了根据本发明的基于多进程内存共享的毫秒级应用弹性方案。本发明通过设计一整套方案,利用JVM CDS技术,内存堆对其算法,线程栈回收,借助KSM内存合并技术能够使同一应用的多个存活使实例占用极少的系统资源,并且能够以较低的资源成本实现应用实例的毫秒级弹性扩容。
进一步地,该方法可完全在用户态完成,相比冷启动动辄需要十分钟级的扩容时间,毫秒级方案可极大降低成本,提高调度系统的灵活性,实现应用的无服务器化。
在没有服务流量时,通过该技术方案能够以较低的资源成本缓存应用多个存活实例;相同的资源,在公有云资源池中部署着数万个应用,在无流量时可极大地节约资源和降低成本,利用存活对象特性,当流量来时能够在毫秒级提供服务,真正做到按需分配。
进一步地,本发明还可以在利用内存共享技术在实现多个存活实例内存共享的基础上,结合Checkpoint/Restore快照技术,构造一套多级缓存的低成本毫秒级弹性方案,大幅降低构造存活缓存实例的时间和成本,实现水平扩容,使规模化成为可能。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (24)
1.一种应用管理方法,包括:
收集用于无服务器计算的应用实例中的对象并按对象引用层级关系生成参照树;
根据所述参照树对多个应用实例进行内存对象重排;以及
对经重排的所述多个应用实例的相同部分进行内存合并。
2.如权利要求1所述的方法,还包括:
冷启动所述相似应用实例;以及
对所述多个应用实例进行堆内垃圾回收操作并释放临时对象。
3.如权利要求2所述的方法,其中,收集应用实例中的对象并对象引用的按层级关系生成参照树包括:
收集释放临时对象后堆内的存活对象,并按所述存活对象的引用层级关系生成参照树。
4.如权利要求3所述的方法,其中,收集释放临时对象后堆内的存活对象,并所述存活对象的引用按层级关系生成参照树包括:
收集堆内存活的顶层对象作为所述参照树的第一层;
收集第一层对象直接引用的对象作为所述参照树的第二层;以及
以此类推至最终层。
5.如权利要求4所述的方法,其中,
所述参照树中包括对象的地址和层次关系;和/或
所述参照树中包括每层每个类区域的对象元数据。
6.如权利要求1所述的方法,其中,所述多个应用实例包括收集对象并产生参照树的一个应用实例,以及与所述应用实例相似的多个其他应用实例,并且
根据所述参照树对多个应用实例进行内存对象重排包括:
根据所述参照树,对所述多个应用实例中的每一个应用实例对应内存中的数据进行重新排列。
7.如权利要求6所述的方法,其中,对经重排的所述多个应用实例进行内存合并包括:
对指定堆区域经内存对象重排的所述多个应用实例进行内存标记;
启用内核内存共享,触发所述多个应用实例间的内存共享。
8.如权利要求1所述的方法,还包括:
对所述多个应用实例的元区域进行类数据共享操作,以进行跨实例的内存共享。
9.如权利要求1所述的方法,还包括:
对所述多个应用实例的线程进行栈帧回收。
10.如权利要求1所述的方法,还包括:
将不同应用各种的应用实例作为所述多个应用实例加入一个应用分组;以及
对多个应用分组各自执行每个分组内的所述多个应用实例的所述内存对象重排和内存合并操作。
11.如权利要求1所述的方法,还包括:
基于扩容指令,恢复所述多个应用实例的可接收全流量状态。
12.如权利要求11所述的方法,其中,所述多个应用实例是用于垂直扩容的应用实例。
13.如权利要求11所述的方法,还包括:
将经内存合并的所述多个应用实例制作成快照;以及
经由所述快照启动以恢复至所述多个应用实例的可接收全流量状态。
14.如权利要求13所述的方法,还包括:
跨机器分发所述快照,以实现所述多个应用实例的水平扩容。
15.一种内存整理方法,包括:
对用于无服务器计算的应用实例执行垃圾回收操作;
对经垃圾回收的应用实例,执行基于参照树的内存对象重排操作,其中所述参照树是收集当前应用实例或当前应用实例的相似应用实例中的对象并按对象引用层级关系生成的;以及
对经内存对象重排的应用实例进行内存合并操作。
16.如权利要求15所述的方法,还包括:
利用类数据共享进行元区域内存共享;
通过栈帧回收释放栈区域内存;和/或
导出代码进行页缓存共享。
17.如权利要求15所述的方法,还包括:
将合并的虚拟页面重新映射为自己单独的物理页面,以恢复所述应用实例的线上状态。
18.一种应用管理装置,包括:
参照树生成单元,用于收集用于无服务器计算的应用实例中的对象并按对象引用层级关系生成参照树;
内存重排单元,用于根据所述参照树对多个应用实例进行内存对象重排;以及
内存合并单元,用于对经重排的所述多个应用实例的相同部分进行内存合并。
19.如权利要求18所述的装置,还包括:
启动单元,用于冷启动所述相似应用实例;以及
垃圾回收单元,用于对所述多个应用实例进行堆内垃圾回收操作并释放临时对象。
20.如权利要求18所述的装置,还包括:
扩容单元,用于基于扩容指令,恢复所述多个应用实例的可接收全流量状态。
21.如权利要求20所述的装置,还包括:
快照制作单元,用于将经内存合并的所述多个应用实例制作成快照,
其中,所述扩容单元用于经由所述快照启动以恢复至所述多个应用实例的可接收全流量状态。
22.一种内存整理装置,包括:
垃圾回收单元,用于对无服务器计算的应用实例执行垃圾回收操作;
内存重排单元,用于对经垃圾回收的应用实例,执行基于参照树的内存对象重排操作,其中所述参照树是收集当前应用实例或当前应用实例的相似应用实例中的对象并按对象引用层级关系生成的;以及
内存合并单元,用于对经内存对象重排的应用实例进行内存合并操作。
23.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-17任一项所述的方法。
24.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-17任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197564.9A CN113296883B (zh) | 2021-02-22 | 2021-02-22 | 应用管理方法和装置 |
PCT/CN2022/076414 WO2022174767A1 (zh) | 2021-02-22 | 2022-02-16 | 应用管理方法和装置 |
EP22755540.6A EP4296854A4 (en) | 2021-02-22 | 2022-02-16 | APPLICATION MANAGEMENT METHOD AND DEVICE |
US18/453,638 US20230394020A1 (en) | 2021-02-22 | 2023-08-22 | Application management method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197564.9A CN113296883B (zh) | 2021-02-22 | 2021-02-22 | 应用管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113296883A true CN113296883A (zh) | 2021-08-24 |
CN113296883B CN113296883B (zh) | 2023-08-04 |
Family
ID=77319035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110197564.9A Active CN113296883B (zh) | 2021-02-22 | 2021-02-22 | 应用管理方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230394020A1 (zh) |
EP (1) | EP4296854A4 (zh) |
CN (1) | CN113296883B (zh) |
WO (1) | WO2022174767A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114265670A (zh) * | 2022-03-02 | 2022-04-01 | 阿里云计算有限公司 | 一种内存块整理方法、介质及计算设备 |
WO2022174767A1 (zh) * | 2021-02-22 | 2022-08-25 | 阿里巴巴集团控股有限公司 | 应用管理方法和装置 |
CN117312109A (zh) * | 2023-11-28 | 2023-12-29 | 本溪钢铁(集团)信息自动化有限责任公司 | 一种用于java动态数组的内存预警方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001095231A2 (fr) * | 2000-06-06 | 2001-12-13 | Maim Enrico | Systeme de traitement de donnees oriente objet a chargement progressif |
CN101361041A (zh) * | 2006-02-01 | 2009-02-04 | 富士通株式会社 | 对象关系显示程序以及对象关系显示方法 |
US20100223429A1 (en) * | 2009-03-02 | 2010-09-02 | International Business Machines Corporation | Hybrid Caching Techniques and Garbage Collection Using Hybrid Caching Techniques |
CN104809237A (zh) * | 2015-05-12 | 2015-07-29 | 百度在线网络技术(北京)有限公司 | LSM-tree索引的优化方法和装置 |
CN104915151A (zh) * | 2015-06-02 | 2015-09-16 | 杭州电子科技大学 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
US20180254998A1 (en) * | 2017-03-02 | 2018-09-06 | Alcatel Lucent | Resource allocation in a cloud environment |
CN109086135A (zh) * | 2018-07-26 | 2018-12-25 | 北京百度网讯科技有限公司 | 资源伸缩方法、装置、计算机设备及存储介质 |
CN110100228A (zh) * | 2017-01-06 | 2019-08-06 | 甲骨文国际公司 | 利用云对象存储的文件系统层次结构的高效增量备份和恢复 |
US20200034288A1 (en) * | 2018-07-27 | 2020-01-30 | Red Hat, Inc. | Concurrent garbage collection with minimal graph traversal |
US20200081745A1 (en) * | 2018-09-10 | 2020-03-12 | Nuweba Labs Ltd. | System and method for reducing cold start latency of serverless functions |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904493B2 (en) * | 2007-03-30 | 2011-03-08 | Sap Ag | Method and system for object age detection in garbage collection heaps |
CN102722415B (zh) * | 2012-05-22 | 2014-11-05 | 广州晶锐信息技术有限公司 | 基于堆栈体系结构Java SoC系统的垃圾收集方法 |
CN108845864B (zh) * | 2018-06-27 | 2020-11-03 | 北京京东尚科信息技术有限公司 | 一种基于spring框架的JVM垃圾回收方法和装置 |
CN113296923B (zh) * | 2020-04-17 | 2023-12-19 | 阿里巴巴集团控股有限公司 | 内存合并方法、设备以及计算机可读介质 |
CN113296883B (zh) * | 2021-02-22 | 2023-08-04 | 阿里巴巴集团控股有限公司 | 应用管理方法和装置 |
-
2021
- 2021-02-22 CN CN202110197564.9A patent/CN113296883B/zh active Active
-
2022
- 2022-02-16 WO PCT/CN2022/076414 patent/WO2022174767A1/zh active Application Filing
- 2022-02-16 EP EP22755540.6A patent/EP4296854A4/en active Pending
-
2023
- 2023-08-22 US US18/453,638 patent/US20230394020A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001095231A2 (fr) * | 2000-06-06 | 2001-12-13 | Maim Enrico | Systeme de traitement de donnees oriente objet a chargement progressif |
CN101361041A (zh) * | 2006-02-01 | 2009-02-04 | 富士通株式会社 | 对象关系显示程序以及对象关系显示方法 |
US20100223429A1 (en) * | 2009-03-02 | 2010-09-02 | International Business Machines Corporation | Hybrid Caching Techniques and Garbage Collection Using Hybrid Caching Techniques |
CN104809237A (zh) * | 2015-05-12 | 2015-07-29 | 百度在线网络技术(北京)有限公司 | LSM-tree索引的优化方法和装置 |
CN104915151A (zh) * | 2015-06-02 | 2015-09-16 | 杭州电子科技大学 | 多虚拟机系统中一种主动共享的内存超量分配方法 |
CN110100228A (zh) * | 2017-01-06 | 2019-08-06 | 甲骨文国际公司 | 利用云对象存储的文件系统层次结构的高效增量备份和恢复 |
US20180254998A1 (en) * | 2017-03-02 | 2018-09-06 | Alcatel Lucent | Resource allocation in a cloud environment |
CN109086135A (zh) * | 2018-07-26 | 2018-12-25 | 北京百度网讯科技有限公司 | 资源伸缩方法、装置、计算机设备及存储介质 |
US20200034288A1 (en) * | 2018-07-27 | 2020-01-30 | Red Hat, Inc. | Concurrent garbage collection with minimal graph traversal |
US20200081745A1 (en) * | 2018-09-10 | 2020-03-12 | Nuweba Labs Ltd. | System and method for reducing cold start latency of serverless functions |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022174767A1 (zh) * | 2021-02-22 | 2022-08-25 | 阿里巴巴集团控股有限公司 | 应用管理方法和装置 |
CN114265670A (zh) * | 2022-03-02 | 2022-04-01 | 阿里云计算有限公司 | 一种内存块整理方法、介质及计算设备 |
CN117312109A (zh) * | 2023-11-28 | 2023-12-29 | 本溪钢铁(集团)信息自动化有限责任公司 | 一种用于java动态数组的内存预警方法 |
CN117312109B (zh) * | 2023-11-28 | 2024-02-09 | 本溪钢铁(集团)信息自动化有限责任公司 | 一种用于java动态数组的内存预警方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4296854A4 (en) | 2024-08-07 |
CN113296883B (zh) | 2023-08-04 |
EP4296854A1 (en) | 2023-12-27 |
WO2022174767A1 (zh) | 2022-08-25 |
US20230394020A1 (en) | 2023-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113296883B (zh) | 应用管理方法和装置 | |
US11055181B2 (en) | Unique identifiers for data replication, migration, failover operations and failback operations | |
Nicolae et al. | BlobCR: Efficient checkpoint-restart for HPC applications on IaaS clouds using virtual disk image snapshots | |
CN107608757B (zh) | 一种基于容器的隔离处理方法及相关设备 | |
CN109324893B (zh) | 分配内存的方法和装置 | |
Wang et al. | Hybrid checkpointing for MPI jobs in HPC environments | |
US20130227194A1 (en) | Active non-volatile memory post-processing | |
CN110704161B (zh) | 虚拟机创建方法、装置及计算机设备 | |
CN110457261B (zh) | 数据访问方法、装置及服务器 | |
CN109683983B (zh) | 一种镜像文件的生成及加载方法、设备 | |
CN104412240A (zh) | 用于存储器管理的系统和方法 | |
Wang et al. | Rethink the virtual machine template | |
CN106354548A (zh) | 分布式数据库系统中虚拟集群创建、管理方法及装置 | |
CN113791934A (zh) | 数据的恢复方法、计算设备及存储介质 | |
CN104216771A (zh) | 软件程序的重启方法及装置 | |
Veiga et al. | Enhancing in-memory efficiency for MapReduce-based data processing | |
CN112988884B (zh) | 大数据平台数据存储方法及装置 | |
Shi et al. | Hybrid CPU/GPU checkpoint for GPU-based heterogeneous systems | |
CN111435302A (zh) | 一种应用程序的处理方法及装置 | |
Gamell et al. | Specification of Fenix MPI Fault Tolerance library version 0.9. | |
CN113568581A (zh) | 一种嵌入式设备的多应用资源回收方法及系统 | |
US20060179428A1 (en) | Method and system for efficiently starting a JAVA application | |
CN111435299A (zh) | 一种应用程序的处理方法及装置 | |
Tavares et al. | An efficient and reliable scientific workflow system | |
CN117251292B (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: 40057551 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |