首页> 中国专利> 微服务运行优化方法、微服务运行系统和服务器系统

微服务运行优化方法、微服务运行系统和服务器系统

摘要

本公开实施例提供微服务运行优化方法、微服务运行系统和服务器系统。微服务运行优化方法包括:建立运行有微服务进程的本地资源空间与内存池之间的连接;将本地资源空间中运行的指定微服务进程的内存页面从本地资源空间中的本地内存迁出至内存池,其中,指定微服务进程在内存页面被迁出至内存池的情况下保持运行状态;响应于内存页面被迁出至内存池的指定微服务进程在本地资源空间中无法访问到内存页面,从内存池将内存页面迁回到本地资源空间中的本地内存,通过利用内存池,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

著录项

  • 公开/公告号CN113296935A

    专利类型发明专利

  • 公开/公告日2021-08-24

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN202011354599.0

  • 申请日2020-11-27

  • 分类号G06F9/50(20060101);

  • 代理机构11519 北京智信四方知识产权代理有限公司;

  • 代理人宋海龙

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 12:19:35

说明书

技术领域

本公开实施例涉及计算机技术领域,尤其涉及微服务运行优化方法、微服务运行系统和服务器系统。

背景技术

微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API(应用程序接口)进行通信的小型独立服务组成。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。

微服务在现实场景中往往通过资源调度及管理机制进行微服务实例部署,通常会考虑微服务实例需要的服务器的CPU(中央处理器)/内存/存储等资源情况。和常见的调度方式类似,在微服务实例开始之前,逻辑资源会被分配,微服务进程会在对应物理机上启动,消耗本地CPU/内存资源。服务周期结束后,对应的微服务进程会被系统要求主动退出,从而完全释放对应CPU/内存资源。

在微服务架构中,由于服务之间的松耦合,微服务进程都是可以相对独立调度的。另外,微服务进程提供的往往是无状态服务(stateless service),从而任何微服务进程可以根据需求随时上线/下线。这些设计使得整个系统可以随时进行动态伸缩以适应服务需求的变化。

从服务器资源角度,微服务的动态管理主要考虑CPU和内存资源。对于常见的资源调度算法,当前服务窗口结束之后,相应的微服务进程会被系统终止,从而释放相应的内存资源(空闲进程占用CPU的资源量可忽略不计)。在下一个周期服务需求到来的时候,调度算法在系统中进行资源分配,并重新启动相应微服务进程。这样的方案充分利用了服务器本地资源。

但是,从微服务进程的角度来看,频繁进行服务上线/下线不利于保证微服务性能。每一次上线,微服务进程使用的资源都需要初始化,而且某些运行时(runtime)技术会导致特定的性能问题,例如Java虚拟机(Java Virtual Machine,JMV)在启动过程中会经历类加载,JIT(Just-In-Time)即时编译等过程,从而使微服务性能受到较大影响。因此,在服务周期短/动态性大的微服务应用场景,微服务进程的生存周期难以跨多个服务周期,面临重复初始化带来的性能下降问题。

发明内容

有鉴于此,本公开实施例提供了微服务运行优化方法、设备、可读存储介质、微服务运行系统和服务器系统,以解决相关技术中存在的问题。

本公开第一方面提供了一种微服务运行优化方法,包括:

建立运行有微服务进程的本地资源空间与内存池之间的连接;

将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态;

响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第一方面,本公开在第一方面的第一种实现方式中,所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:

拦截对所述指定微服务进程的下线指令;

根据拦截到的对所述指定微服务进程的下线指令,将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

结合第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:

拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令;

根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第一方面、第一方面的第一种实现方式和第二种实现方式任一项,本公开在第一方面的第三种实现方式中,所述建立运行有微服务进程的本地资源空间与内存池之间的连接,包括:

通过内存扩展装置建立运行有微服务进程的本地资源空间与内存池之间的连接。

结合第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:

通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

结合第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,还包括:

通过所述内存扩展装置监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源;

其中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:

响应于所述内存扩展装置监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,通过所述内存扩展装置从所述内存池将所述内存页面预先迁回到所述内存扩展装置中的高速缓冲存储器;

从所述内存扩展装置中的高速缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第一方面、第一方面的第一种实现方式和第二种实现方式任一项,本公开在第一方面的第六种实现方式中,在所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,还包括:

解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系。

结合第一方面的第六种实现方式,本公开在第一方面的第七种实现方式中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:

响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,触发缺页异常;

响应于监测到所述缺页异常,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存;

建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常。

本公开第二方面提供了一种微服务运行系统,包括相互之间连接的本地服务器和内存池,

其中,所述本地服务器具有运行有微服务进程的本地资源空间,

其中,所述本地服务器将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态,

其中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第二方面,本公开在第二方面的第一种实现方式中,所述本地服务器拦截对所述指定微服务进程的下线指令,

其中,根据拦截到的对所述指定微服务进程的下线指令,所述本地服务器将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

结合第二方面的第一种实现方式,本公开在第二方面的第二种实现方式中,所述本地服务器拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,

其中,根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,所述本地服务器响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第二方面、第一方面的第一种实现方式和第二种实现方式任一项,本公开在第二方面的第三种实现方式中,还包括:

内存扩展装置,其设置于所述本地服务器和所述内存池之间,所述内存扩展装置包括缓冲存储器,用于缓存在运行有微服务进程的本地资源空间与内存池之间传输的数据。

结合第二方面的第三种实现方式,本公开在第二方面的第四种实现方式中,通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

结合第二方面的第四种实现方式,本公开在第二方面的第五种实现方式中,所述内存扩展装置还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源,

其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池将所述内存页面预先迁回到所述的缓冲存储器,

其中,所述本地服务器从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第二方面、第一方面的第一种实现方式和第二种实现方式任一项,本公开在第二方面的第六种实现方式中,所述本地服务器在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系。

结合第二方面的第六种实现方式,本公开在第二方面的第七种实现方式中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器中触发缺页异常,

其中,响应于监测到所述缺页异常,所述本地服务器从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常。

结合第二方面的第三种实现方式,本公开在第二方面的第八种实现方式中,所述内存扩展装置通过现场可编程门阵列实现,所述内存扩展装置具有高速缓冲存储器作为所述缓冲存储器。

本公开第三方面提供了一种服务器系统,包括本地服务器、内存扩展装置和内存池,

其中,所述本地服务器与所述内存池通过所述内存扩展装置连接,

其中,所述本地服务器具有运行有微服务进程的本地资源空间,所述内存扩展装置包括缓冲存储器,所述缓冲存储器用于缓存在运行有微服务进程的本地资源空间与内存池之间传输的数据,

其中,所述本地服务器将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态,

其中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器经所述内存扩展装置从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第三方面,本公开在第三方面的第一种实现方式中,所述本地服务器包括主动页面回收模块,用于拦截对所述指定微服务进程的下线指令,

其中,根据拦截到的对所述指定微服务进程的下线指令,所述主动页面回收模块将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置迁出至所述内存池。

结合第三方面的第一种实现方式,本公开在第三方面的第二种实现方式中,所述主动页面回收模块拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,

其中,根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,所述主动页面回收模块监测所述指定微服务进程在所述本地资源空间中是否访问所述内存页面,

其中,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述主动页面回收模块从所述内存池将所述内存页面经所述内存扩展装置迁回到所述本地资源空间中的本地内存。

结合第三方面的第一种实现方式或第二种实现方式,本公开在第三方面的第三种实现方式中,所述内存扩展装置还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源,

其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池将所述内存页面预先迁回到所述的缓冲存储器,

其中,所述主动页面回收模块从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存。

结合第三方面的第一种实现方式或第二种实现方式,本公开在第三方面的第四种实现方式中,所述主动页面回收模块在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系。

结合第三方面的第四种实现方式,本公开在第三方面的第五种实现方式中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器中触发缺页异常,

其中,所述主动页面回收模块监测是否出现所述缺页异常,

其中,响应于监测到所述缺页异常,所述主动页面回收模块从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常。

结合第三方面、第一方面的第一种实现方式和第二种实现方式任一项,本公开在第三方面的第六种实现方式中,所述内存扩展装置通过现场可编程门阵列实现,所述内存扩展装置具有高速缓冲存储器作为所述缓冲存储器。

本公开第四方面提供了一种电子设备,其特征在于,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如本公开第一方面、第一方面的第一种实现方式至第七种实现方式任一项所述的方法。

本公开第五方面一种可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现如本公开第一方面、第一方面的第一种实现方式至第七种实现方式任一项所述的方法。

本公开实施例提供的技术方案可以包括以下有益效果:

根据本公开实施例提供的技术方案,通过建立运行有微服务进程的本地资源空间与内存池之间的连接;将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态;响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,针对服务周期短/动态性大的微服务,通过利用内存池,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:拦截对所述指定微服务进程的下线指令;根据拦截到的对所述指定微服务进程的下线指令,将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,可以使微服务进程不用根据下线指令在本地完全退出,而是可以通过利用内存池使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令;根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,使微服务不用根据上线指令而在本地进行较为复杂的初始化过程,而是可以通过利用内存池将内存数据迁回本地,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述建立运行有微服务进程的本地资源空间与内存池之间的连接,包括:通过内存扩展装置建立运行有微服务进程的本地资源空间与内存池之间的连接,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述内存扩展装置监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源;其中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:响应于所述内存扩展装置监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,通过所述内存扩展装置从所述内存池将所述内存页面预先迁回到所述内存扩展装置中的高速缓冲存储器;从所述内存扩展装置中的高速缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过在所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,还包括:解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系,可以释放微服务在本地资源空间中占用的内存,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,触发缺页异常;响应于监测到所述缺页异常,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存;建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常,可以无需对微服务重新初始化,而是直接向本地资源空间中的内存迁回微服务进程的数据,使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过相互之间连接的本地服务器和内存池,其中,所述本地服务器具有运行有微服务进程的本地资源空间,其中,所述本地服务器将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态,其中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,针对服务周期短/动态性大的微服务,通过利用内存池,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述本地服务器拦截对所述指定微服务进程的下线指令,其中,根据拦截到的对所述指定微服务进程的下线指令,所述本地服务器将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,可以使微服务进程不用根据下线指令在本地完全退出,而是可以通过利用内存池使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述本地服务器拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,其中,根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,所述本地服务器响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,使微服务不用根据上线指令而在本地进行较为复杂的初始化过程,而是可以通过利用内存池将内存数据迁回本地,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过内存扩展装置,其设置于所述本地服务器和所述内存池之间,所述内存扩展装置包括缓冲存储器,用于缓存在运行有微服务进程的本地资源空间与内存池之间传输的数据,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述内存扩展装置还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源,其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池将所述内存页面预先迁回到所述的缓冲存储器,其中,所述本地服务器从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述本地服务器在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系,可以释放微服务在本地资源空间中占用的内存,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器中触发缺页异常,其中,响应于监测到所述缺页异常,所述本地服务器从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常,可以无需对微服务重新初始化,而是直接向本地资源空间中的内存迁回微服务进程的数据,使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述内存扩展装置通过现场可编程门阵列实现,所述内存扩展装置具有高速缓冲存储器作为所述缓冲存储器,使得内存扩展装置易于实施,并且通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过本地服务器、内存扩展装置和内存池,其中,所述本地服务器与所述内存池通过所述内存扩展装置连接,其中,所述本地服务器具有运行有微服务进程的本地资源空间,所述内存扩展装置包括缓冲存储器,所述缓冲存储器用于缓存在运行有微服务进程的本地资源空间与内存池之间传输的数据,其中,所述本地服务器将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态,其中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器经所述内存扩展装置从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述本地服务器包括主动页面回收模块,用于拦截对所述指定微服务进程的下线指令,其中,根据拦截到的对所述指定微服务进程的下线指令,所述主动页面回收模块将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置迁出至所述内存池,可以使微服务进程不用根据下线指令在本地完全退出,而是可以通过利用内存池使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述主动页面回收模块拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,其中,根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,所述主动页面回收模块监测所述指定微服务进程在所述本地资源空间中是否访问所述内存页面,其中,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述主动页面回收模块从所述内存池将所述内存页面经所述内存扩展装置迁回到所述本地资源空间中的本地内存,使微服务不用根据上线指令而在本地进行较为复杂的初始化过程,而是可以通过利用内存池将内存数据迁回本地,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述内存扩展装置还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源,其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池将所述内存页面预先迁回到所述的缓冲存储器,其中,所述主动页面回收模块从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置的缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述主动页面回收模块在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系,可以释放微服务在本地资源空间中占用的内存,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器中触发缺页异常,其中,所述主动页面回收模块监测是否出现所述缺页异常,其中,响应于监测到所述缺页异常,所述主动页面回收模块从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常,可以无需对微服务重新初始化,而是直接向本地资源空间中的内存迁回微服务进程的数据,使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

根据本公开实施例提供的技术方案,通过所述内存扩展装置通过现场可编程门阵列实现,所述内存扩展装置具有高速缓冲存储器作为所述缓冲存储器,使得内存扩展装置易于实施,并且通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

本公开的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:

图1示出执行根据本公开实施例的微服务运行优化方法的流程图;

图2示出根据本公开实施例微服务运行优化方法的应用场中的景示例中内存页面迁移流程的示意图;

图3示出通过对比相关技术的微服务运行场景的系统资源使用情况与应用根据本公开实施例的微服务运行优化方法的应用场景的系统资源使用情况的示意图;

图4示出根据本公开一实施方式的微服务运行系统的结构框图;

图5示出根据本公开一实施方式的服务器系统的结构框图;

图6示出根据图5所示的服务器系统的实施场景的示例性结构示意图;

图7示出根据本公开一实施方式的电子设备的结构框图;

图8是适于用来实现根据本公开实施方式的微服务运行优化方法的计算机系统的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开示例性实施例中的附图,对本公开示例性实施例中的技术方案进行清楚、完整地描述。

在本公开的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

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

为了解决相关技术中的问题,发明人设想过各种解决方案。以基于JVM的微服务为例,一种方案是通过JVM重用机制避免初始化JVM开销。该方案的缺点是需要对JVM内部机制进行修改,有较大风险不利于产线部署,而且空闲JVM占用本地内存资源。另一种方案是可以将JVM即时编译生成的机器指令序列化并导出,后续JVM可以直接加载机器指令从而避免即时编译的开销。该方案的缺点是,Java代码逻辑可能存在和执行环境相关的依赖关系,例如:随机数和执行上下文相关的指令地址。这些依赖关系会引入安全性问题,而且很难完全正确解析。

为了克服前述方案中的缺点,本公开提出了一种基于内存池的微服务运行优化(调度)方案,本方案通过将内存池资源接入微服务调度系统,并且采用灵活的内存资源管理机制,在不影响本地内存资源使用的前提条件下,达到对微服务性能进一步优化的目的。本方案适合任何可运行微服务的服务器架构,而且,本方案也适合应用于云服务领域、IOT(物联网)领域、边缘设备领域等各种领域。

在相关技术的云服务领域,例如,基于虚拟化技术的公有云服务领域,比较关键的是CPU(中央处理器)资源和内存资源。不同用户对这两种资源配比有着不同的需求。传统的服务器架构将资源的共享维度限制在单台物理机之内,从而导致基于传统架构的云服务往往会有CPU/内存资源浪费现象。

内存资源池化技术通过将服务机架的一定范围内各物理机的部分内存资源进行集中式的管理和分配使用,可以有效提高资源利用率,并且为用户提供范围更广的CPU/内存资源配置选项。内存资源池化可能有多种形态。在本公开的实施例中,一种使用内存池的具体方式是机架内各物理机通过低延迟网络连接机架内的内存盒,另一种使用内存池的具体方式可以是物理机通过物理接口直连扩展内存卡。

图1示出执行根据本公开实施例的微服务运行优化方法的流程图。

如图1所示,根据本公开实施例的微服务运行优化方法包括步骤S110、S120和S130。

在步骤S110中,建立运行有微服务进程的本地资源空间与内存池之间的连接。

在步骤S120中,将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态。

在步骤S130中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

在本公开的一个实施例中,本地资源空间是运行微服务进程(实例)的服务架构(例如,本地服务器)为该微服务进程分配的CPU/内存/存储等资源。在本公开的一个实施例中,运行微服务进程(实例)的服务架构可以指的是JVM。

在本公开的一个实施例中,内存池可以将存在于本地资源空间所在的本地服务机架的一定范围内的各物理机的部分内存资源进行集中式的管理和分配使用。在本公开的一个实施例中,一种使用内存池的具体方式是机架内各物理机通过低延迟网络连接机架内的内存盒。在本公开的一个实施例中,另一种使用内存池的具体方式可以是物理机通过物理接口直连扩展内存卡。

在本公开的一个实施例中,当微服务进程的当前服务周期结束,不会被系统终止运行而释放本地内存资源,而是可以将内存页面迁出(或称为换出)到内存池。此时,微服务进程依然运行,但是,处于空闲状态的微服务进程在本地资源空间中占用CPU的资源量可忽略不计,内存资源完全释放,因此,显著节省了本地资源空间。

在本公开的一个实施例中,当微服务进程从当前空闲状态(占用CPU极少资源,内存页面迁出至内存池)启动,不需要在本地资源空间内进行复杂的初始化过程,响应于该微服务进程在本地资源空间中无法访问到其内存页面,从内存池将内存页面迁回到本地资源空间中的本地内存。

根据本公开实施例提供的技术方案,通过建立运行有微服务进程的本地资源空间与内存池之间的连接;将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态;响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,针对服务周期短/动态性大的微服务,通过利用内存池,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,步骤S120包括:拦截对所述指定微服务进程的下线指令;根据拦截到的对所述指定微服务进程的下线指令,将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

在本公开的一个实施例中,下线指令是指服务器移除微服务进程的相关工作的指令,可以理解为系统针对微服务所下达的终止运行指令,如果接收到下线指令,微服务进程需要释放所占用的本地资源空间中的CPU/内存/存储资源,终止运行。但是,根据本公开实施例的方案,可以对下线指令进行拦截,并且响应于拦截到下线指令,发起对指定微服务的内存迁出至内存池。在内存页面从本地资源空间的本地内存迁出至内存池的情况下,系统可以认为指定微服务进程已经下线。

根据本公开实施例提供的技术方案,通过所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:拦截对所述指定微服务进程的下线指令;根据拦截到的对所述指定微服务进程的下线指令,将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,可以使微服务进程不用根据下线指令在本地完全退出,而是可以通过利用内存池使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,步骤S130包括:拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令;根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

在本公开的一个实施例中,上线指令是指服务器准备部署微服务进程的相关工作的指令,可以理解为系统针对微服务所下达的启动运行指令。如果接收到上线指令,微服务需要使用本地资源空间中的CPU/内存/存储资源,进行初始化,启动运行。但是,根据本公开实施例的方案,由于指定微服务一直保持运行状态,只是当前处于空闲状态(占用CPU极少资源,内存页面迁出至内存池)。因此,可以对上线指令进行拦截,并且响应于拦截到上线指令,发起对指定微服务的内存迁回至本地资源空间中的内存。在内存页面从内存池迁回到本地资源空间的本地内存的情况下,系统可以认为指定微服务进程已经上线。

根据本公开实施例提供的技术方案,通过所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令;根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,使微服务不用根据上线指令而在本地进行较为复杂的初始化过程,而是可以通过利用内存池将内存数据迁回本地,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,步骤S110包括:通过内存扩展装置建立运行有微服务进程的本地资源空间与内存池之间的连接。

在本公开的一个实施例中,内存扩展装置可以指的是前述的扩展内存卡。通过内存扩展装置可以帮助连接本地服务器的本地资源空间(本地内存)与内存池。

根据本公开实施例提供的技术方案,通过所述建立运行有微服务进程的本地资源空间与内存池之间的连接,包括:通过内存扩展装置建立运行有微服务进程的本地资源空间与内存池之间的连接,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,步骤S120包括:通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

在本公开的一个实施例中,本地服务器可以通过内存扩展装置将内存页面迁出至内存池。

根据本公开实施例提供的技术方案,通过所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,微服务运行优化方法还包括:通过所述内存扩展装置监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源。其中,步骤S130包括:响应于所述内存扩展装置监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,通过所述内存扩展装置从所述内存池将所述内存页面预先迁回到所述内存扩展装置中的高速缓冲存储器;从所述内存扩展装置中的高速缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存。

在本公开的一个实施例中,内存扩展装置包括高速缓冲存储器(Cache),例如,DRAM高速缓冲存储器。通过高速缓冲存储器,内存扩展装置可以提高本地资源空间中的本地内存与内存池之间数据传输速度。在本公开的一个实施例中,在内存页面从本地内存经内存扩展装置迁出至内存池的情况下,内存扩展装置可以监测内存页面到被迁出到内存池的微服务进程的内存资源情况,在监测到该微服务进程无法访问到内存页面的情况下,提前从内存池将内存页面复制到内存扩展装置的高速缓冲存储器。

根据本公开实施例提供的技术方案,通过所述内存扩展装置监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源;其中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:响应于所述内存扩展装置监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,通过所述内存扩展装置从所述内存池将所述内存页面预先迁回到所述内存扩展装置中的高速缓冲存储器;从所述内存扩展装置中的高速缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,在所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,还包括:解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系。

在本公开的一个实施例中,虚拟地址指的是在用户进程和实际的物理内存之间加一个中间层,让用户进程只能访问虚拟地址,并且把虚拟地址与物理地址转换的实现交给操作系统。换言之,在微服务进程运行的情况下,在虚拟地址与内存页面之间需要建立映射关系以便通过虚拟地址访问内存页面。

根据本公开实施例提供的技术方案,通过在所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,还包括:解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系,可以释放微服务在本地资源空间中占用的内存,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,步骤S130包括:响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,触发缺页异常;响应于监测到所述缺页异常,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存;建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常。

在本公开的一个实施例中,缺页异常(page fault)也可以被称作缺页中断,指的是根据原有的虚拟地址与内存页面的映射关系,微服务不能在对应的虚拟地址访问到内存页面,由此触发缺页异常。响应于该缺页异常,可以发起从资源池将内存页面迁回本地内存,并且在本地内存中重新建立虚拟地址与内存页面的映射关系,由此解决缺页异常。

根据本公开实施例提供的技术方案,通过所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,触发缺页异常;响应于监测到所述缺页异常,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存;建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常,可以无需对微服务重新初始化,而是直接向本地资源空间中的内存迁回微服务进程的数据,使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

以下参照图2的示例进一步描述以上参照图1描述的微服务运行优化方法。

图2示出根据本公开实施例微服务运行优化方法的应用场景中的示例中内存页面迁移流程的示意图。如图2所示,本地资源与内存池资源之间通过扩展卡资源进行连接,以帮助本地资源的内存数据的迁移(换入或换出)。

如图2所示,本地资源以用户空间和内核空间表示。用户空间中运行有微服务实例(进程)和主动页面回收进程,其中,主动页面回收进程进行迁回(换入)和迁出(换出)页面的控制。

以下参照图2描述内存页面迁出操作。在操作211,主动页面回收进程发起页面迁出。在操作212,在内核空间执行对内核空间中的热页(即,该空闲页仍然在高速缓存中)的迁出。在操作213,将该热页经由表示扩展卡资源的FPGA内存扩展装置中的DRAM高速缓冲存储器迁出至内存池资源中的存储器,存储为冷页数据(即,该空闲页不再在高速缓存中)。

以下参照图2描述内存页面迁回操作。在操作221,用户空间中的微服务实例根据虚拟地址与内存页面的映射关系访问内核空间中的热页,触发缺页异常。在操作222,主动页面回收进程拦截到该缺页异常。在操作223,主动页面回收进程发起对所缺失的页面的迁回操作。在操作224,通过的FPGA内存扩展装置中的DRAM高速缓冲存储器将作为内存池资源的存储器中的冷页数据迁回本地的内核空间。在操作225,建立虚拟地址与迁回的内存页面的映射关系。

在FPGA内存扩展装置中,高速缓冲存储器管理模块用于监测全部被迁出到内存池的内存页面原本所在的微服务进程的内存资源。需在要将内存页面迁回到本地内存时,对内存池中的相应内存页面进行预取,提前从内存池复制到FPGA内存扩展装置中的DRAM高速缓冲存储器。

根据参照图2的以上描述,并且参照以上对图1的描述,可以理解,相较于相关技术中的方案,该示例的微服务运行优化方案有以下改变:

(1)使用与本地服务器的本地资源通过FPGA内存扩展装置建立联系的内存池。

(2)位于本地用户空间的主动页面回收进程是常驻的守护进程,可以将指定微服务进程的内存页面迁移至远端内存池,同时也可以处理对应微服务进程的缺页异常。

(3)调度机制向本机发起的微服务实例上线/下线指令被拦截并重定向至主动页面回收进程,由主动页面回收进程根据拦截到的指令发起相关内存迁移。

(4)FPGA内存扩展装置中的高速缓冲存储器管理模块(包括FPGA高速缓冲存储器管理算法)对每一个内存页面被迁移的微服务进程的内存资源实时跟踪,需要将内存页面迁回本地内存时,对相应页面数据进行预取,提前从内存池复制到到FPGA内存扩展装置中的DRAM高速缓冲存储器。

参照图2,本公开实施例的方案使原本需要下线的微服务实例在本地服务器(本地资源)保持正常运行状态,同时通过主动页面回收进程将内存页面迁移到内存池。由于微服务实例仍保持运行状态,当程序访问已被迁出页面地址时,会触发内核的缺页异常。页面回收进程通过监听得知缺页异常和相关虚拟地址信息,并及时通过FPGA内存扩展装置从内存池取回相应页面数据,建立虚拟地址到页面数据映射关系,从而解决缺页异常。内存迁移以及缺页异常处理都是实时进行的,在一个实施例中,在稳定状态下处于空闲状态的微服务实例在本地仅占用少量内存资源,大部分内存页面数据都被迁移到远端内存池。同时由于微服务进程所有内部状态都得到了保留,在下一个服务周期开始可以通过将内存页面迁回本地内存,从而使微服务进程快速恢复至之前的服务状态。在高速缓冲存储器管理模块的帮助下,内存页面迁回本地内存的操作可以得到加速。

以下参照图3描述相关技术的微服务运行场景的系统资源使用情况与应用根据本公开实施例的微服务运行优化方法的应用场景的系统资源使用情况。

图3示出通过对比相关技术的微服务运行场景的系统资源使用情况与应用根据本公开实施例的微服务运行优化方法的应用场景的系统资源使用情况的示意图。

如图3所示,在相关技术的普通微服务场景中,在微服务上线的情况下,CPU资源、本地内存资源和微服务性能被充分利用。在微服务下线的情况下,CPU资源、本地内存资源和微服务性能被完全释放。在之后微服务再次上线的情况下,由于微服务上线需要重新进行初始化,微服务性能受到较大影响。

在利用根据本公开实施例的微服务运行优化方案的场景下,可以通过内存池提升为服务效率。在微服务上线的情况下,CPU资源、本地内存资源和微服务性能被充分利用。在微服务下线的情况下,由于下线指令被主动页面回收进程拦截,使得微服务运行在空闲状态。其中,CPU资源占用了很少一部分,本地内存资源仅占用近小部分,绝大部分迁出到内存池资源。但是,微服务性能被完全释放。在之后微服务再次上线的情况下,由于微服务上线时直接可以将内存页面从内存池迁回到本地内存,并不需要重新需进行初始化,因此,微服务性能不受影响,可以立即恢复。

因此,根据本公开实施例的微服务运行优化方案能达到的技术效果如图3所示:通过微服务实例下线期间少量CPU/内存资源的使用,可以得到再次上线以后性能的提升。如果微服务实例频繁进行上线/下线切换,则本公开实施例的方案带来的收益更大。

因此,在根据本公开实施例的微服务运行优化方案中,通过引入动态的内存页面管理方式,可以达到本地资源和微服务性能的同时优化。

以上参照图1至3在整体上对本公开实施例的微服务运行优化方案进行了大致描述,以下将对如何在硬件环境下实现前述方案。

图4示出根据本公开一实施方式的微服务运行系统的结构框图。

如图4所示,微服务运行系统400包括本地服务器410和内存池420。其中,所述本地服务器10具有运行有微服务进程的本地资源空间,其中,所述本地服务器410将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池420,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池420的情况下保持运行状态,其中,响应于内存页面被迁出至所述内存池420的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器410从所述内存池420将所述内存页面迁回到所述本地资源空间中的本地内存。

根据本公开实施例提供的技术方案,通过相互之间连接的本地服务器和内存池,其中,所述本地服务器具有运行有微服务进程的本地资源空间,其中,所述本地服务器将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态,其中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器410从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,针对服务周期短/动态性大的微服务,通过利用内存池,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述本地服务器410拦截对所述指定微服务进程的下线指令,其中,根据拦截到的对所述指定微服务进程的下线指令,所述本地服务器410将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池420。

根据本公开实施例提供的技术方案,通过所述本地服务器拦截对所述指定微服务进程的下线指令,其中,根据拦截到的对所述指定微服务进程的下线指令,所述本地服务器将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,可以使微服务进程不用根据下线指令在本地完全退出,而是可以通过利用内存池使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述本地服务器410拦截对内存页面被迁出至所述内存池420的所述指定微服务进程的上线指令,其中,根据拦截到的对内存页面被迁出至所述内存池420的所述指定微服务进程的上线指令,所述本地服务器410响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池420将所述内存页面迁回到所述本地资源空间中的本地内存。

根据本公开实施例提供的技术方案,通过所述本地服务器拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,其中,根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,所述本地服务器响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,使微服务不用根据上线指令而在本地进行较为复杂的初始化过程,而是可以通过利用内存池将内存数据迁回本地,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,微服务运行系统还包括:内存扩展装置,其设置于所述本地服务器410和所述内存池420之间,所述内存扩展装置包括缓冲存储器,用于缓存在运行有微服务进程的本地资源空间与内存池420之间传输的数据。

根据本公开实施例提供的技术方案,通过内存扩展装置,其设置于所述本地服务器和所述内存池之间,所述内存扩展装置包括缓冲存储器,用于缓存在运行有微服务进程的本地资源空间与内存池之间传输的数据,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池420。

根据本公开实施例提供的技术方案,通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述内存扩展装置还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池420的所述指定微服务的进程所使用的内存资源,其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池420的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池420将所述内存页面预先迁回到所述的缓冲存储器,其中,所述本地服务器410从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存。

根据本公开实施例提供的技术方案,通过所述内存扩展装置还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源,其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池将所述内存页面预先迁回到所述的缓冲存储器,其中,所述本地服务器从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述本地服务器410在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池420之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系。

根据本公开实施例提供的技术方案,通过所述本地服务器在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系,可以释放微服务在本地资源空间中占用的内存,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,响应于内存页面被迁出至所述内存池420的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器410中触发缺页异常,其中,响应于监测到所述缺页异常,所述本地服务器410从所述内存池420将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常。

根据本公开实施例提供的技术方案,通过响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器中触发缺页异常,其中,响应于监测到所述缺页异常,所述本地服务器从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常,可以无需对微服务重新初始化,而是直接向本地资源空间中的内存迁回微服务进程的数据,使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述内存扩展装置通过现场可编程门阵列实现,所述内存扩展装置具有高速缓冲存储器作为所述缓冲存储器。

根据本公开实施例提供的技术方案,通过所述内存扩展装置通过现场可编程门阵列实现,所述内存扩展装置具有高速缓冲存储器作为所述缓冲存储器,使得内存扩展装置易于实施,并且通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

本领域技术人员可以理解,参照图4描述的技术方案的可以与参照图1至3描述的实施例结合,从而具备参照图1至图3描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图3进行的描述,其具体内容在此不再赘述。

以下将参照图5描述一种服务器系统。图5示出根据本公开一实施方式的服务器系统500的结构框图。

如图5所示,服务器系统500包括本地服务器510、内存扩展装置520和内存池530。其中,所述本地服务器510与所述内存池530通过所述内存扩展装置520连接,其中,所述本地服务器510具有运行有微服务进程的本地资源空间,所述内存扩展装置520包括缓冲存储器,所述缓冲存储器用于缓存在运行有微服务进程的本地资源空间与内存池530之间传输的数据,其中,所述本地服务器510将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置520迁出至所述内存池530,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池530的情况下保持运行状态,其中,响应于内存页面被迁出至所述内存池530的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器510经所述内存扩展装置520从所述内存池530将所述内存页面迁回到所述本地资源空间中的本地内存。

根据本公开实施例提供的技术方案,通过本地服务器、内存扩展装置和内存池,其中,所述本地服务器与所述内存池通过所述内存扩展装置连接,其中,所述本地服务器具有运行有微服务进程的本地资源空间,所述内存扩展装置包括缓冲存储器,所述缓冲存储器用于缓存在运行有微服务进程的本地资源空间与内存池之间传输的数据,其中,所述本地服务器将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态,其中,响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述本地服务器经所述内存扩展装置从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述本地服务器510包括主动页面回收模块,用于拦截对所述指定微服务进程的下线指令,其中,根据拦截到的对所述指定微服务进程的下线指令,所述主动页面回收模块将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置520迁出至所述内存池530。

根据本公开实施例提供的技术方案,通过所述本地服务器包括主动页面回收模块,用于拦截对所述指定微服务进程的下线指令,其中,根据拦截到的对所述指定微服务进程的下线指令,所述主动页面回收模块将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存经所述内存扩展装置迁出至所述内存池,可以使微服务进程不用根据下线指令在本地完全退出,而是可以通过利用内存池使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述主动页面回收模块拦截对内存页面被迁出至所述内存池530的所述指定微服务进程的上线指令,其中,根据拦截到的对内存页面被迁出至所述内存池530的所述指定微服务进程的上线指令,所述主动页面回收模块监测所述指定微服务进程在所述本地资源空间中是否访问所述内存页面,其中,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述主动页面回收模块从所述内存池530将所述内存页面经所述内存扩展装置520迁回到所述本地资源空间中的本地内存。

根据本公开实施例提供的技术方案,通过所述主动页面回收模块拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,其中,根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,所述主动页面回收模块监测所述指定微服务进程在所述本地资源空间中是否访问所述内存页面,其中,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述主动页面回收模块从所述内存池将所述内存页面经所述内存扩展装置迁回到所述本地资源空间中的本地内存,使微服务不用根据上线指令而在本地进行较为复杂的初始化过程,而是可以通过利用内存池将内存数据迁回本地,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述内存扩展装置520还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池530的所述指定微服务的进程所使用的内存资源,其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池530的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池530将所述内存页面预先迁回到所述的缓冲存储器,其中,所述主动页面回收模块从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存。

根据本公开实施例提供的技术方案,通过所述内存扩展装置还包括缓冲存储管理模块,其用于监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源,其中,响应于所述缓冲存储管理模块监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,所述缓冲存储管理模块从所述内存池将所述内存页面预先迁回到所述的缓冲存储器,其中,所述主动页面回收模块从所述缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存,通过利用内存扩展装置的缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述主动页面回收模块在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池530之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系。

根据本公开实施例提供的技术方案,通过所述主动页面回收模块在将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系,可以释放微服务在本地资源空间中占用的内存,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,响应于内存页面被迁出至所述内存池530的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器510中触发缺页异常,其中,所述主动页面回收模块监测是否出现所述缺页异常,其中,响应于监测到所述缺页异常,所述主动页面回收模块从所述内存池530将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常。

根据本公开实施例提供的技术方案,通过响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,在所述本地服务器中触发缺页异常,其中,所述主动页面回收模块监测是否出现所述缺页异常,其中,响应于监测到所述缺页异常,所述主动页面回收模块从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,并且建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常,可以无需对微服务重新初始化,而是直接向本地资源空间中的内存迁回微服务进程的数据,使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

在本公开的一个实施例中,所述内存扩展装置520通过现场可编程门阵列实现,所述内存扩展装置520具有高速缓冲存储器作为所述缓冲存储器。

根据本公开实施例提供的技术方案,通过所述内存扩展装置通过现场可编程门阵列实现,所述内存扩展装置具有高速缓冲存储器作为所述缓冲存储器,使得内存扩展装置易于实施,并且通过利用内存扩展装置的高速缓冲存储器帮助微服务进程在本地资源空间与内存池之间迁移内存数据,使得微服务进程在本地的资源占用最小化,进而使得微服务进程生存周期跨多个服务周期,从而避免重复初始化带来的性能下降。

图6示出根据图5所示的服务器系统的实施场景的示例性结构示意图。

如图6所示,服务器系统600包括本地服务器610,内存扩展装置620和包括多个存储器631的内存池630。图6所示的服务器系统仅仅是示例,本公开的服务器系统可以不限于以上结构。地服务器610,内存扩展装置620和包括内存池630的数量都可以是多个。

本领域技术人员可以理解,参照图5和6描述的技术方案的可以与参照图1至4描述的实施例结合,从而具备参照图1至图4描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图4进行的描述,其具体内容在此不再赘述。

可以将前述微服务运行优化方法实现为电子设备,如图7中所示,该电子设备700可以包括处理器701以及存储器702。

所述存储器702用于存储支持语电子设备执行上述任一实施例中的微服务运行优化方法的程序,所述处理器701被配置为用于执行所述存储器702中存储的程序。

在本公开的一个实施例中,所述存储器702用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器701执行以实现以下步骤:

建立运行有微服务进程的本地资源空间与内存池之间的连接;

将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,其中,所述指定微服务进程在所述内存页面被迁出至所述内存池的情况下保持运行状态;

响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

在本公开的一个实施例中,所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:

拦截对所述指定微服务进程的下线指令;

根据拦截到的对所述指定微服务进程的下线指令,将所述本地资源空间中运行的所述指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

在本公开的一个实施例中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:

拦截对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令;

根据拦截到的对内存页面被迁出至所述内存池的所述指定微服务进程的上线指令,响应于监测到所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存。

在本公开的一个实施例中,所述建立运行有微服务进程的本地资源空间与内存池之间的连接,包括:

通过内存扩展装置建立运行有微服务进程的本地资源空间与内存池之间的连接。

在本公开的一个实施例中,所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池,包括:

通过所述内存扩展装置将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池。

在本公开的一个实施例中,所述存储器702用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器701执行以实现以下步骤:

通过所述内存扩展装置监测内存页面被迁出至所述内存池的所述指定微服务的进程所使用的内存资源;

其中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:

响应于所述内存扩展装置监测到内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,通过所述内存扩展装置从所述内存池将所述内存页面预先迁回到所述内存扩展装置中的高速缓冲存储器;

从所述内存扩展装置中的高速缓冲存储器将所述内存页面迁回到所述本地资源空间中的本地内存。

在本公开的一个实施例中,在所述将所述本地资源空间中运行的指定微服务进程的内存页面从所述本地资源空间中的本地内存迁出至所述内存池之前,还包括:

解除所述本地资源空间中的虚拟地址到所述内存页面的映射关系。

在本公开的一个实施例中,所述响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中无法访问到所述内存页面,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存,包括:

响应于内存页面被迁出至所述内存池的所述指定微服务进程在所述本地资源空间中的与所述内存页面存在映射关系的虚拟地址无法访问到所述内存页面,触发缺页异常;

响应于监测到所述缺页异常,从所述内存池将所述内存页面迁回到所述本地资源空间中的本地内存;

建立本地资源空间中的虚拟地址到所述内存页面的映射关系,解决所述缺页异常。

本公开示例性实施例还提供了一种计算机存储介质,用于储存微服务运行优化装置所用的计算机软件指令,其包含用于执行上述任一实施例所涉及的程序,从而具备方法所带来的技术效果。

图8是适于用来实现根据本公开一实施方式的数据处理方法和资源提供方法的计算机系统的结构示意图。

如图8所示,计算机系统800包括处理单元(CPU、GPU、NPU、FPGA等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行上述附图所示的实施方式中的各种处理。在RAM803中,还存储有系统800操作所需的各种程序和数据。处理单元801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。

以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。

特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。

附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法,从而具备方法所带来的技术效果。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号