CN116610444A - 流计算系统和用于流计算系统的内存回收方法及计算设备 - Google Patents

流计算系统和用于流计算系统的内存回收方法及计算设备 Download PDF

Info

Publication number
CN116610444A
CN116610444A CN202310451457.3A CN202310451457A CN116610444A CN 116610444 A CN116610444 A CN 116610444A CN 202310451457 A CN202310451457 A CN 202310451457A CN 116610444 A CN116610444 A CN 116610444A
Authority
CN
China
Prior art keywords
memory
stream
page
access
stream computing
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
Application number
CN202310451457.3A
Other languages
English (en)
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.)
Alibaba China Co Ltd
Original Assignee
Alibaba China 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 Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202310451457.3A priority Critical patent/CN116610444A/zh
Publication of CN116610444A publication Critical patent/CN116610444A/zh
Pending legal-status Critical Current

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5022Mechanisms to release resources
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种流计算系统和用于流计算系统的内存回收方法及计算设备。一种流计算系统包括:流计算单元,用于对流数据进行处理;存储引擎,根据所述流计算单元的请求为所述流计算单元分配预定限额的内存空间,所述内存空间用于存储流数据及流数据的处理结果;内存回收单元,所述内存回收单元独立于所述流计算单元和存储引擎,在操作系统内核态对所述内存空间进行冷内存页回收。根据本申请的技术方案将存储引擎自身的惰性回收优化为提前回收,可减少内存的使用率,提供更多的可调度的内存给流计算的调度器使用,从而提高CPU利用率,降低计算成本。

Description

流计算系统和用于流计算系统的内存回收方法及计算设备
技术领域
本发明涉及大数据技术领域,具体涉及一种流计算系统和用于流计算系统的内存回收方法及计算设备。
背景技术
流计算(Stream Computing)是一种实时数据处理模型,用于处理连续的、无限流式的数据。它是一种处理数据的方式,不断从数据源中读取数据,并对其进行实时处理,以提供实时的反馈和响应。与传统的批处理不同,流计算处理的是数据流,可以对其进行实时处理和分析,而不必等待所有数据都被收集完毕。流计算可以应用于各种场景,如金融领域的实时交易风险分析、物联网领域的实时数据检测、智能制造领域的生产流程监测等。与传统的数据处理方法相比,流计算可以提供更快的响应时间和更高的处理效率,同时可以减少数据处理的延迟和数据的存储量。流计算需要实时处理大量数据,因此需要高效的内存管理和分配以优化计算资源的使用。
发明内容
本申请旨在提供一种流计算系统和用于流计算系统的内存回收方法及计算设备,能够提高集群中的流计算作业的密集度。
根据本申请的一方面,提供一种流计算系统,包括:
流计算单元,用于对流数据进行处理;
存储引擎,根据所述流计算单元的请求为所述流计算单元分配预定限额的内存空间,所述内存空间用于存储流数据及流数据的处理结果;
内存回收单元,所述内存回收单元独立于所述流计算单元和所述存储引擎,在操作系统内核态对所述内存空间进行冷内存页回收。
根据一些实施例,所述流计算单元基于虚拟机系统实现,所述虚拟机系统为所述流计算单元提供堆内内存回收,所述存储引擎分配的所述内存空间为独立于所述堆内内存的堆外内存。
根据一些实施例,所述内存回收单元包括:
扫描模块,用于根据扫描周期定期扫描所述内存空间的内存页的访问标识,并根据所述访问标识确定所述内存页的访问冷值累加结果;
回收模块,用于根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页,压缩后的内存页保持在所述内存空间中;
配置模块,用于为所述扫描模块和所述回收模块提供配置参数。
根据一些实施例,所述回收模块还用于:根据对已回收内存页的再次访问请求,对所述压缩后的内存页进行解压缩以进行访问。
根据一些实施例,所述回收模块配置为执行如下操作从而根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页:
将所述访问冷值累加结果与所述扫描周期的乘积结果与超时阈值进行比较;
如果所述乘积结果超过所述超时阈值,则对所述内存页进行压缩及回收所述内存页,压缩后的内存页保持在所述内存空间中。
根据一些实施例,所述回收模块还配置为执行如下操作从而根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页:
如果所述乘积结果超过所述超时阈值,扫描并删除与所述内存页相同的其他所有内存页。
根据本申请的另一方面,提供一种用于流计算系统的内存回收的方法,所述流计算系统包括流计算单元和存储引擎,所述存储引擎根据所述流计算单元的请求为所述流计算单元分配预定限额的内存空间,所述内存空间用于存储流数据及流数据的处理结果,所述方法包括:
根据扫描周期定期扫描所述内存空间的内存页的访问标识,并根据所述访问标识确定所述内存页的访问冷值累加结果;
根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页,压缩后的内存页保持在所述内存空间中;
根据对已回收内存页的再次访问请求,对所述压缩后的内存页进行解压缩以进行访问。
根据一些实施例,所述流计算单元基于虚拟机系统实现,所述虚拟机系统为所述流计算单元提供堆内内存回收,所述存储引擎分配的所述内存空间为独立于所述堆内内存的堆外内存。
根据一些实施例,根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页,包括:
将所述访问冷值累加结果与所述扫描周期的乘积结果与超时阈值进行比较;
如果所述乘积结果超过所述超时阈值,扫描并删除与所述内存页相同的其他所有内存页,对所述内存页进行压缩及回收所述内存页,并将压缩后的内存页保持在所述内存空间中。
根据本申请的另一方面,提供一种计算设备,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本申请的另一方面,提供一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上任一项所述的方法。
根据本申请的另一方面,提供一种计算机程序产品,包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行如上任一项所述的方法。
根据本申请的实施例,通过独立于流计算单元和存储引擎的内存回收单元在操作系统内核态对所述内存空间进行冷内存页回收,将存储引擎自身的惰性回收优化为提前回收,可减少内存的使用率,提供更多的可调度的内存给流计算的调度器使用,从而提高CPU利用率,降低计算成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1示出根据示例实施例包括内存回收单元的流计算系统示意图。
图2示出根据示例实施例的内存回收单元的示意图。
图3示出根据示例实施例的用于流计算系统的内存回收的方法流程图。
图4示出根据示例性实施例的计算设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
对于流计算而言,流计算作业通常是更加偏重内存消耗,通常CPU与内存的使用率比是1:12,远远大于物理机的CPU与内存的配置比1:5。从运行流计算作业的集群也可以看出,内存使用率远远大于CPU使用率。集群的作业调度同时依赖内存使用率和CPU使用率,这会导致流计算系统的作业调度密集度受到内存的限制,导致CPU的使用率偏低,资源浪费严重。以基于JVM的流计算为例,通过流计算作业分析,内存使用主要由两块组成:第一是堆内内存,一般情况下这部分的内存都是由Java的JVM的垃圾回收(gc:garbage collection)负责回收和管理;第二是堆外内存,这部分会根据所使用的存储引擎来进行内存回收,通常是按照内存设置的上限值由存储引擎自身进行惰性回收。根据流计算任务的特性,内存的活跃时间一搬是24小时,超过24小时的内存访问频率非常低。
堆外内存由存储引擎自身进行惰性回收,即内存使用到上限值再回收。例如,假设流计算存储引擎设置1G内存上限值,则需要使用完成1G内存才会触发一次惰性回收,这可能导致堆外内存浪费的情况。
为此,针对当前流计算系统的堆外内存浪费的情况,本申请基于操作系统的内存管理,提出一种内存回收机制,独立于流计算任务,用于协助流计算作业的堆外内存回收。本申请的技术方案将堆外内存由存储引擎自身的惰性回收调整为提前回收,减少内存的使用率,从而提供更多的可调度的内存给流计算的调度器使用,提高集群中的流计算作业的密集度,提高CPU利用率,降低成本。
在描述本申请实施例之前,对本申请实施例涉及到的一些术语进行解释说明。
流计算系统:流计算系统是一个由多个计算节点构成的计算系统,用于处理实时数据流。它可以接收来自多个数据源的实时数据,并对这些数据进行实时处理和分析,从而提供实时的数据反馈和决策支持。
调度器:流计算系统中依赖CPU使用率、内存使用率等要素进行流计算作业资源分配的组件,通过识别集群中的可用资源并将任务分配给这些资源来有效地管理计算节点的分配和释放。
堆内内存:一种在程序运行时分配内存的机制,通常用于管理动态内存分配(例如虚拟机管理内存)。以Java语言为例,堆内内存指的是Java虚拟机(JVM:Java VirtualMachine)管理的内存区域,用于存储Java对象和数组。堆内内存的分配和释放是由JVM自动进行的,它会根据程序的需要扩展或收缩内存区域。
堆外内存:堆外内存是指不受虚拟机(例如JVM)管理的内存。在Java中,所有的对象都被存储在堆中,由JVM进行垃圾回收和内存管理。堆外内存则是在Java虚拟机的堆以外分配的内存空间,通常由本地操作系统或第三方库进行管理。
冷内存页:指在一段时间内未被访问的内存页,通常是指一段时间内没有被读取、写入或执行的内存内存页。
内存回收:内存回收是指计算机系统在程序运行过程中,对于已分配的内存空间中不再被使用的部分进行释放,以便将其用于其他需要使用内存的程序或进程。内存回收可以通过手动释放、自动垃圾回收等方式进行。在程序运行过程中,内存的分配和回收是非常重要的,因为不合理的内存使用会导致程序运行缓慢、崩溃等问题。
以下结合附图对本申请的示例实施例进行说明。
图1示出根据示例实施例包括内存回收单元的流计算系统示意图。
参见图1,流计算系统包括流计算单元110、存储引擎120及内存回收单元130。根据一些实施例,流计算单元110可基于虚拟机系统实现,虚拟机系统为流计算单元110提供堆内内存回收。存储引擎120可为流计算单元110分配预定限额的内存空间,该内存空间为独立于堆内内存的堆外内存。
流计算单元110用于对流数据进行处理,能够实时接收、处理和分析流数据。流计算系统包括多个流计算单元110,每个流计算单元110都可以执行相同或不同的计算任务,而不同的流计算单元110之间是相互独立的。每个流计算单元110都可以接收和处理数据流,并将处理结果传递给其他单元或外部应用程序。流计算单元110可以对数据流进行实时的过滤、转换、聚合和计算等操作,以便尽早地提取数据中的有用信息。与传统批处理相比,流计算能够在数据产生后立即进行处理,因此非常适用于需要实时响应的应用场景,如物联网、金融、电信和物流等领域。
根据一些实施例,流计算单元110可包括数据源、流处理引擎、分布式计算框架等。流计算单元110从不同的数据源中获取数据流,如传感器、设备、应用程序、数据库和Web服务等,通过流处理引擎对数据进行过滤、转换、聚合和计算等操作,以便快速提取数据中的有用信息。另外,流计算单元110可使用分布式计算框架(例如,Flink、Storm等)来分配和管理计算资源,以确保高效的数据处理和计算速度。流计算的相关技术和成熟架构已为本领域技术人员所熟知,此处不再赘述。
存储引擎120根据流计算单元110的请求为其分配预定限额的内存空间,该内存空间用于存储流数据及流数据的处理结果。存储引擎120是流计算系统的重要组成部分,为流计算系统提供有效地存储和管理传入的数据流的手段。存储引擎120能够以允许高效查询和处理的方式持久化数据,为分析历史数据等功能提供支持。在流计算系统中可以使用多种类型的存储引擎,包括传统的关系型数据库、NoSQL(not only Structured QueryLanguage:非结构化查询语言)数据库和专用的流数据处理引擎等。存储引擎120的选择取决于流计算系统的具体需求和正在处理的数据类型。存储引擎120对内存进行惰性回收。假设存储引擎120设置1G内存上限值,则需要使用完成1G内存才会触发一次惰性回收,这可能导致堆外内存浪费的情况。
内存回收单元130独立于流计算单元110和存储引擎120,在操作系统内核态对存储引擎120的内存空间进行冷内存页回收。例如,假设存储引擎120设置1G内存上限值,则在使用达到1G内存时才会触发一次惰性回收。根据实施例的内存回收单元130则将内存回收调整为超过超时阈值(TTL:time to live)就回收掉,这样如果TTL时间设置为24小时,则24小时内内存使用了500M也会提前回收掉访问不频繁的冷内存页。
根据本申请实施例,通过独立于流计算单元和存储引擎的内存回收单元在操作系统内核态对所述内存空间进行冷内存页回收,将堆外内存由存储引擎自身的惰性回收调整为提前回收,可减少内存的使用率,从而提供更多的可调度的内存给流计算的调度器使用。这样,本申请的技术方案可提高集群中的流计算作业的密集度,提高CPU利用率,降低成本。
图2示出根据示例实施例的内存回收单元的示意图。
参见图2,根据示例实施例的内存回收单元包括内核态的扫描模块210和回收模块220以及应用态的配置模块230。配置模块230为扫描模块210和回收模块220提供配置参数,例如压缩方法、压缩率、扫描周期、超时阈值TTL等。
扫描模块210根据扫描周期定期扫描内存空间的内存页的访问标识,并根据访问标识确定内存页的访问冷值累加结果。
以Linux系统为例,内存分配器(如malloc、kmalloc等)会向内核申请物理页框(page frame)用于存储分配的内存。内核会维护一个物理页框池(page frame pool),用于管理物理页框的分配和释放。当内存分配器申请一块内存时,内存分配器会向内核申请一定数量的连续物理页框(通常是4KB或8KB的大小),并将这些物理页框映射到进程的虚拟地址空间中。这个过程中,内核会通过页表(page table)机制将物理页框映射到进程的虚拟地址空间中,从而使进程能够访问这些物理页框。页表是内核用来管理虚拟地址和物理地址映射的数据结构。内核会根据物理页框的地址和虚拟地址的映射关系,更新页表中相应的页表项(PTE:page table entry),从而进程能够通过虚拟地址访问到物理页框。
时间戳访问标识(timestamp或accessed time stamp)是包含在页表项(PTE)数据结构中的数据字段。其他页表属性字段还包括内存页的物理地址、状态(例如,是否存在于内存中或磁盘上)和权限(例如只读、读写、只执行)等。当进程访问一内存页时,操作系统会更新与该内存页关联的时间戳,操作系统可以使用此时间戳来跟踪内存页被访问的频率。
根据实施例,扫描模块210可周期性扫描内存空间的内存页中的时间戳标记。如果内存页在该周期内没有被访问(时间戳没有更新),则记录相应内存页的冷值次数并累加而得到访问冷值累加结果。例如,假设1小时扫描一次,如果1小时内内存页未被访问就生成一个内存访问记录,这个记录是不断累加的。
回收模块220根据访问冷值累加结果对内存页进行压缩及回收内存页,压缩后的内存页保持在内存空间中。
根据实施例,回收模块220会接收配置模块230传递的扫描周期、压缩算法、是否合并相同内存页、超时阈值TTL等参数,并读取扫描模块的访问冷值累加结果。超时阈值TTL一般小于大部分流计算任务的时间。然后,将访问冷值累加结果与扫描周期的乘积结果与超时阈值TTL进行比较。如果乘积结果超过超时阈值TTL,则对内存页进行压缩及回收内存页,压缩后的内存页保持在内存空间中。
由于内存共享、缓存、写时复制等情形的存在,内存中可能存在多个相同的内存页。为此,根据一些实施例,在乘积结果超过超时阈值时,回收模块230还可扫描并删除与内存页相同的其他所有内存页,从而可大大降低需要压缩的内存总量和压缩过程的消耗。
通常情况下,操作系统会识别最近未访问的内存页并将它们交换到磁盘中,从而使得其他进程或应用程序可以使用释放的内存。当一个内存页被交换到磁盘上时,该页中的数据被存储在一个磁盘文件中,该页占用的物理内存将变得可用,可用于存储其他数据。当该内存页再次被需要时,操作系统从磁盘文件中检索页数据并将其存储在一个新的物理内存页中。这个新的物理页可能是原来用于存储页数据的页,也可能不是。当内存页被交换到磁盘上时,页表中相应的项将被更新为反映页不再存在于物理内存中。为了跟踪页数据在物理内存中的存储位置,页表包含有关每个页的虚拟地址到物理地址映射的信息。当页被交换回来时,页表被更新以反映页数据的新物理地址。当一个内存页被交换到磁盘上时,该页的页表项不会被删除,而是被更新以反映该页当前不在物理内存中。页表项中的信息包括页的虚拟地址、指示页已被交换出的标志和页在磁盘上的位置。这些信息允许操作系统跟踪页的位置并在需要时从磁盘中检索它。当一进程尝试访问一个已被交换出的页时,会发生页错误(page fault),进而操作系统从磁盘中检索页并更新页表项以指示该页现在已经存在于物理内存中。
根据示例实施例,根据对已回收内存页的再次访问请求,回收模块230还可对压缩后的内存页进行解压缩以进行访问。由于不必从磁盘中进行内存换入,从而可实现数据高效访问且不会丢失。
这样,根据实施例的内存回收单元可对堆外内存的使用进一步优化,在回收的过程中不会影响流计算作业的其他部分内存,并且通过回收模块只回收冷内存页的方法来保障不影响流计算作业本身性能。同时,内存回收单元工作于操作系统核心态,可独立于流计算任务本身,适应性和扩展性更强。
图3示出根据示例实施例的用于流计算系统的内存回收的方法流程图。
流计算系统可包括流计算单元和存储引擎,存储引擎根据流计算单元的请求为流计算单元分配预定限额的内存空间,内存空间用于存储流数据及流数据的处理结果,存储引擎对内存空间进行内存惰性回收。根据一些实施例,流计算单元基于虚拟机系统实现,虚拟机系统为流计算单元提供堆内内存回收,存储引擎分配的内存空间为独立于堆内内存的堆外内存。图3所示的方法可工作于操作系统内核态,从而可独立于流计算单元和存储引擎对冷内存页进行回收管理。
参见图3,在S301,根据扫描周期定期扫描内存空间的内存页的访问标识,并根据访问标识确定内存页的访问冷值累加结果。
以Linux系统为例,内存分配器(如malloc、kmalloc等)会向内核申请物理页框(page frame)用于存储分配的内存。内核会维护一个物理页框池(page frame pool),用于管理物理页框的分配和释放。当内存分配器申请一块内存时,内存分配器会向内核申请一定数量的连续物理页框(通常是4KB或8KB的大小),并将这些物理页框映射到进程的虚拟地址空间中。这个过程中,内核会通过页表(page table)机制将物理页框映射到进程的虚拟地址空间中,从而使进程能够访问这些物理页框。页表是内核用来管理虚拟地址和物理地址映射的数据结构。内核会根据物理页框的地址和虚拟地址的映射关系,更新页表中相应的页表项(PTE:page table entry),从而进程能够通过虚拟地址访问到物理页框。
时间戳访问标识(timestamp或accessed time stamp)是包含在页表项(PTE)数据结构中的数据字段。其他页表属性字段还包括内存页的物理地址、状态(例如,是否存在于内存中或磁盘上)和权限(例如只读、读写、只执行)等。当进程访问一内存页时,操作系统会更新与该内存页关联的时间戳,操作系统可以使用此时间戳来跟踪内存页被访问的频率。
根据实施例,可周期性扫描内存空间的内存页中的时间戳标记,如果内存页在该周期内没有被访问(时间戳没有更新),则记录相应内存页的冷值次数并累加而得到访问冷值累加结果。例如,假设1小时扫描一次,如果1小时内内存页未被访问就生成一个内存访问记录,这个记录是不断累加的。时间戳访问标识(timestamp或accessed time stamp)是包含在页表项(PTE)数据结构中的数据字段。其他页表属性字段还包括内存页的物理地址、状态(例如,是否存在于内存中或磁盘上)和权限(例如只读、读写、只执行)等。当进程访问一内存页时,操作系统会更新与该内存页关联的时间戳,操作系统可以使用此时间戳来跟踪内存页被访问的频率。
在S303,根据访问冷值累加结果对内存页进行压缩及回收内存页,压缩后的内存页保持在内存空间中。
根据实施例,可根据扫描周期、压缩算法、是否合并相同内存页、超时阈值TTL等参数,确定回收内存页的操作。超时阈值TTL一般小于大部分流计算任务的时间。例如,假设存储引擎120设置1G内存上限值,则在使用达到1G内存时才会触发一次惰性回收。根据实施例的方法则将内存回收调整为超过超时阈值(TTL:time to live)就回收掉,这样如果TTL时间设置为24小时,则24小时内内存使用了500M也会提前回收掉访问不频繁的冷内存页。
根据一些实施例,将访问冷值累加结果与扫描周期的乘积结果与超时阈值进行比较。如果乘积结果超过超时阈值,扫描并删除与内存页相同的其他所有内存页,对内存页进行压缩(例如,通过lzo或snappy等压缩算法)及回收内存页,并将压缩后的内存页保持在内存空间中。
由于内存共享、缓存、写时复制等情形的存在,内存中可能存在多个相同的内存页。为此,根据一些实施例,在乘积结果超过超时阈值时,回收模块230还可扫描并删除与内存页相同的其他所有内存页,从而可大大降低需要压缩的内存总量和压缩过程的消耗。
在S305,根据对已回收内存页的再次访问请求,对压缩后的内存页进行解压缩以进行访问。
通常情况下,操作系统会识别最近未访问的内存页并将它们交换到磁盘中,从而使得其他进程或应用程序可以使用释放的内存。当一个内存页被交换到磁盘上时,该页中的数据被存储在一个磁盘文件中,该页占用的物理内存将变得可用。当内存页被交换到磁盘上时,页表中相应的项将被更新为反映页不再存在于物理内存中。为了跟踪页数据在物理内存中的存储位置,页表包含有关每个页的虚拟地址到物理地址映射的信息。当一进程尝试访问一个已被交换出的页时,会发生页错误(page fault),进而操作系统从磁盘中检索页并更新页表项以指示该页现在已经存在于物理内存中。
根据示例实施例,响应对已回收内存页的再次访问请求,可对压缩后的内存页进行解压缩以进行访问。由于不必从磁盘中进行内存换入,从而可实现数据高效访问且不会丢失。
这样,根据实施例的方法可对堆外内存的使用进一步优化,在回收的过程中不会影响流计算作业的其他部分内存,并且通过回收模块只回收冷内存页的方法来保障不影响流计算作业本身性能。
通过对示例实施例的描述,本领域技术人员易于理解,根据本申请实施例的技术方案至少具有以下优点中的一个或多个。
根据实施例,提供提前回收流计算任务的内存,使得有更多的内存可以给调度器用来调度流计算作业,从而提高流计算集群系统中计算作业的密集度,提高资源利用率,降低流计算成本。
根据实施例,对内存的访问冷值计算判断内存的冷热程度,如果是冷内存就进行压缩和回收,可以大幅降低实际占用的物理内存空间。
根据实施例,通过降低整体流计算实际的内存,流计算集群系统的调度器感知到更多的未使用的内存,从而调度更多的流计算任务,提高作业密度,降低成本。
图4示出根据本申请示例实施例的计算设备的框图。
如图4所示,计算设备30包括处理器12和存储器14。计算设备30还可以包括总线22、网络接口16以及I/O接口18。处理器12、存储器14、网络接口16以及I/O接口18可以通过总线22相互通信。
处理器12可以包括一个或多个通用CPU(Central Processing Unit,处理器)、微处理器、或专用集成电路等,用于执行相关程序指令。根据一些实施例,计算设备30还可包括为处理器12进行加速的高性能显示适配器(GPU)20。
存储器14可以包括易失性存储器形式的机器系统可读介质,例如随机存取存储器(RAM)、只读存储器(ROM)和/或高速缓存存储器。存储器14用于存储包含指令的一个或多个程序以及数据。处理器12可读取存储在存储器14中的指令以执行上述根据本申请实施例的方法。
计算设备30也可以通过网络接口16与一个或者多个网络通信。该网络接口16可以是无线网络接口。
总线22可以为包括地址总线、数据总线、控制总线等。总线22提供了各组件之间交换信息的通路。
需要说明的是,在具体实施过程中,计算设备30还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC)、网络存储设备、云存储设备,或适合于存储指令和/或数据的任何类型的媒介或设备。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤。
本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列、集成电路等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上具体地展示和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置。

Claims (10)

1.一种流计算系统,其特征在于,包括:
流计算单元,用于对流数据进行处理;
存储引擎,根据所述流计算单元的请求为所述流计算单元分配预定限额的内存空间,所述内存空间用于存储流数据及流数据的处理结果;
内存回收单元,所述内存回收单元独立于所述流计算单元和所述存储引擎,在操作系统内核态对所述内存空间进行冷内存页回收。
2.根据权利要求1所述的流计算系统,其特征在于,所述流计算单元基于虚拟机系统实现,所述虚拟机系统为所述流计算单元提供堆内内存回收,所述存储引擎分配的所述内存空间为独立于所述堆内内存的堆外内存。
3.根据权利要求1所述的流计算系统,其特征在于,所述内存回收单元包括:
扫描模块,用于根据扫描周期定期扫描所述内存空间的内存页的访问标识,并根据所述访问标识确定所述内存页的访问冷值累加结果;
回收模块,用于根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页,压缩后的内存页保持在所述内存空间中;
配置模块,用于为所述扫描模块和所述回收模块提供配置参数。
4.根据权利要求3所述的流计算系统,其特征在于,所述回收模块还用于:根据对已回收内存页的再次访问请求,对所述压缩后的内存页进行解压缩以进行访问。
5.根据权利要求3所述的流计算系统,其特征在于,所述回收模块配置为执行如下操作从而根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页:
将所述访问冷值累加结果与所述扫描周期的乘积结果与超时阈值进行比较;
如果所述乘积结果超过所述超时阈值,则对所述内存页进行压缩及回收所述内存页,压缩后的内存页保持在所述内存空间中。
6.根据权利要求5所述的流计算系统,其特征在于,所述回收模块还配置为执行如下操作从而根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页:
如果所述乘积结果超过所述超时阈值,扫描并删除与所述内存页相同的其他所有内存页。
7.一种用于流计算系统的内存回收的方法,所述流计算系统包括流计算单元和存储引擎,所述存储引擎根据所述流计算单元的请求为所述流计算单元分配预定限额的内存空间,所述内存空间用于存储流数据及流数据的处理结果,其特征在于,所述方法包括:
根据扫描周期定期扫描所述内存空间的内存页的访问标识,并根据所述访问标识确定所述内存页的访问冷值累加结果;
根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页,压缩后的内案号:230177CI
存页保持在所述内存空间中;
根据对已回收内存页的再次访问请求,对所述压缩后的内存页进行解压缩以进行访问。
8.根据权利要求7所述的方法,其特征在于,所述流计算单元基于虚拟机系统实现,所述虚拟机系统为所述流计算单元提供堆内内存回收,所述存储引擎分配的所述内存空间为独立于所述堆内内存的堆外内存。
9.根据权利要求7所述的方法,其特征在于,根据所述访问冷值累加结果对所述内存页进行压缩及回收所述内存页,包括:
将所述访问冷值累加结果与所述扫描周期的乘积结果与超时阈值进行比较;
如果所述乘积结果超过所述超时阈值,扫描并删除与所述内存页相同的其他所有内存页,对所述内存页进行压缩及回收所述内存页,并将压缩后的内存页保持在所述内存空间中。
10.一种计算设备,其特征在于,包括:
处理器;以及
存储器,存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求7-9中任一项所述的方法。
CN202310451457.3A 2023-04-21 2023-04-21 流计算系统和用于流计算系统的内存回收方法及计算设备 Pending CN116610444A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310451457.3A CN116610444A (zh) 2023-04-21 2023-04-21 流计算系统和用于流计算系统的内存回收方法及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310451457.3A CN116610444A (zh) 2023-04-21 2023-04-21 流计算系统和用于流计算系统的内存回收方法及计算设备

Publications (1)

Publication Number Publication Date
CN116610444A true CN116610444A (zh) 2023-08-18

Family

ID=87680872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310451457.3A Pending CN116610444A (zh) 2023-04-21 2023-04-21 流计算系统和用于流计算系统的内存回收方法及计算设备

Country Status (1)

Country Link
CN (1) CN116610444A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116795298A (zh) * 2023-08-28 2023-09-22 麒麟软件有限公司 一种Linux下NVME存储器的IO优化方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116795298A (zh) * 2023-08-28 2023-09-22 麒麟软件有限公司 一种Linux下NVME存储器的IO优化方法及系统
CN116795298B (zh) * 2023-08-28 2023-11-24 麒麟软件有限公司 一种Linux下NVME存储器的IO优化方法及系统

Similar Documents

Publication Publication Date Title
US11960726B2 (en) Method and apparatus for SSD storage access
US10990540B2 (en) Memory management method and apparatus
US11403321B2 (en) System and method for improved performance in a multidimensional database environment
CN109271355B (zh) 一种清理日志文件缓存的方法及装置
US6453403B1 (en) System and method for memory management using contiguous fixed-size blocks
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
CN111061752B (zh) 数据处理方法、装置及电子设备
WO2001090899A2 (en) System and method for memory management using fixed-size blocks
CN103677759A (zh) 一种用于信息系统性能提升的对象化并行计算方法及系统
CN116610444A (zh) 流计算系统和用于流计算系统的内存回收方法及计算设备
CN109885642B (zh) 面向全文检索的分级存储方法及装置
CN112262379A (zh) 存储数据项并且标识存储的数据项
US7395386B2 (en) Method and apparatus for data versioning and recovery using delta content save and restore management
CN114207571A (zh) 计算装置及其操作方法
US20050097130A1 (en) Tracking space usage in a database
GB2497172A (en) Reserving space on a storage device for new data based on predicted changes in access frequencies of storage devices
US5678024A (en) Method and system for dynamic performance resource management within a computer based system
CN103020077A (zh) 一种电力系统实时数据库内存管理方法
US20090228537A1 (en) Object Allocation System and Method
CA2415018C (en) Adaptive parallel data clustering when loading a data structure containing data clustered along one or more dimensions
CN111858393A (zh) 内存页面管理方法、内存页面管理装置、介质与电子设备
CN115328656A (zh) 动态内存智能化扩展方法、装置、设备及存储介质
Inoue et al. A study of memory management for web-based applications on multicore processors
CN115543859A (zh) 多分区ssd的磨损均衡优化方法、装置、设备及介质
CN110262758B (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