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

一种内存共享方法、装置、设备及存储介质

文献发布时间:2023-06-19 12:00:51


一种内存共享方法、装置、设备及存储介质

技术领域

本申请涉及云计算领域,特别是涉及一种内存共享方法、装置、设备及存储介质。

背景技术

在当前的云计算场景的服务器设备中往往运行有一定数量的应用程序,应用程序的运行往往需要在一定程度上占用服务器设备内存资源。

在高负载运算场景下,多个应用程序之间对于服务器设备中的内存资源竞争激烈,可能会导致服务器设备中空闲的内存资源不足,进而无法对应用程序运行时产生的数据进行缓存,导致系统性能下降,难以确保服务器设备中的应用程序运行的稳定性。

由此可见,提供一种内存共享方法,以相对确保服务器设备中的应用程序运行的稳定性,是本领域技术人员需要解决的问题。

发明内容

本申请的目的是提供一种内存共享方法、装置、设备及存储介质,以相对确保服务器设备中的应用程序运行的稳定性。

为解决上述技术问题,本申请提供一种内存共享方法,包括:

收集应用程序的内存访问数据;

根据内存访问数据在内存中确定满足预设标准的内存共享区域;其中,预设标准至少包括内存页的读写类型为只读类型;

扫描内存共享区域中数据内容相同的目标内存页;

对目标内存页进行合并。

优选地,扫描内存共享区域中数据内容相同的目标内存页,包括:

依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页。

优选地,在依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页之前,方法还包括:

获取运算资源占用量;

根据运算资源占用量确定预设扫描频率。

优选地,根据运算资源占用量确定预设扫描频率,包括:

根据运算资源占用量实时调整预设扫描频率;其中,运算资源占用量与预设扫描频率存在负相关性。

优选地,预设标准还包括内存页的写入频率低于预设写入频率。

优选地,在根据内存访问数据在内存中确定满足预设标准的内存共享区域之后,还包括:

在内存共享区域中确定内存页的写入频率达到预设写入频率的目标内存区域;

去除内存共享区域中的目标内存区域,以基于更新后的内存共享区域进行对目标内存页的合并。

优选地,在对目标内存页进行合并之后,还包括:

在内存共享区域中确定内存页的合并频率低于预设合并频率的目标内存区域;

去除内存共享区域中的目标内存区域,以基于更新后的内存共享区域进行对目标内存页的合并。

此外,本申请还提供一种内存共享装置,包括:

访问收集模块,用于收集应用程序的内存访问数据;

共享区域确定模块,用于根据内存访问数据在内存中确定满足预设标准的内存共享区域;其中,预设标准至少包括内存页的读写类型为只读类型;

内存页扫描模块,用于扫描内存共享区域中数据内容相同的目标内存页;

内存页合并模块,用于对目标内存页进行合并。

此外,本申请还提供一种内存共享设备,包括:

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

处理器,用于执行计算机程序时实现如上述的内存共享方法的步骤。

此外,本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的内存共享方法的步骤。

本申请所提供的内存共享方法,首先收集应用程序的内存访问数据,进而根据内存访问数据在内存中确定满足预设标准的内存共享区域,预设标准至少包括内存页的读写类型为只读类型,并在此基础上进一步扫描内存共享区域中数据内容相同的目标内存页,进而对目标内存页进行合并。本申请通过收集应用程序访问内存时产生的内存访问数据,获悉内存中能够用于数据共享的内存共享区域,并在此基础上,将内存共享区域中数据相同的目标内存页进行合并,以此节省了内存资源,相对避免了内存资源不足的情况产生,进而相对确保了服务器设备中的应用程序运行的稳定性。此外,本申请还提供一种内存共享装置、设备及存储介质,有益效果同上所述。

附图说明

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

图1为本申请实施例公开的一种云计算系统中内存共享的应用场景示意图;

图2为本申请实施例公开的一种内存共享方法的流程图;

图3为本申请实施例公开的一种内存共享方法的流程图;

图4为本申请实施例公开的一种内存共享方法的流程图;

图5为本申请实施例公开的一种内存共享方法的流程图;

图6为本申请实施例公开的一种内存共享方法的流程图;

图7为本申请实施例公开的一种场景实施例下内存共享的流程示意图;

图8为本申请实施例公开的一种内存共享装置的结构示意图;

图9为本申请实施例公开的一种内存共享设备的硬件组成结构示意图。

具体实施方式

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

在高负载运算场景下,多个应用程序之间对于服务器设备中的内存资源竞争激烈,可能会导致服务器设备中空闲的内存资源不足,进而无法对应用程序运行时产生的数据进行缓存,导致系统性能下降,难以确保服务器设备中的应用程序运行的稳定性。

为此,本申请的核心是提供一种内存共享方法,以相对确保服务器设备中的应用程序运行的稳定性。

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

本申请技术方案所适应的场景包括但不限于云计算系统场景或者普通网络场景等。以云计算系统为例,云计算系统由物理的服务器设备构成,通过在服务器设备中运行多个应用程序(如虚拟机程序)的方式构成云计算集群,以此将服务器设备构成具有云计算功能的云计算设备,一个或多个云计算设备可以进一步构成云计算系统。在上述场景下,本申请技术方案的执行主体为构成云计算系统的服务器设备,服务器设备通过合并应用程序存储于内存的内存页,以达到降低应用程序对服务器设备的内存占用程度。

如图1所示为本申请实施例提供的一种云计算系统中内存共享的应用场景示意图,图1中是以三台服务器设备构成的云计算系统为例,每台服务器设备进行内存共享的操作类似,在本申请实施例中,以一台服务器设备的内存共享为例展开介绍。图1中以一台服务器设备包含3个应用进程为例,分别为应用进程1、应用进程2和应用进程3。应用进程1使用内存区域1、内存区域2和内存区域3,应用进程2使用内存区域2、内存区域3和内存区域4,应用进程3使用内存区域2、内存区域3、内存区域4和内存区域5。此时,应用进程1、应用进程2和应用进程3共同使用的内存区域为内存区域2和内存区域3。

假设应用程序1、应用进程2和应用进程3对内存区域2的具有较高的写入频率,应用程序1、应用进程2和应用进程3对内存区域3执行只读操作,此时可以将内存区域3作为应用程序1、应用进程2和应用进程3的内存共享区域。内存区域3包含有M个内存页,假设前N个内存页为内容相同的内存页(N为大于等于2并且小于等于M的整数)。为了便于区分,可以将内容相同的内存页均称作目标内存页。此时可以只保留1个目标内存页进行存储,进而减少N-1个目标内存页对内存空间的占用,以此节省了内存资源,降低了内存资源不足的情况产生。

如图2所示的,本申请实施例公开了一种内存共享方法,包括:

步骤S20:收集应用程序的内存访问数据。

本步骤中的应用程序指的是在服务器设备中加载或运行的具有特定功能的程序。由于应用程序在服务器设备中加载或运行时,会产生变量参数或代码编译参数等数据,以用于支持应用程序的正常运行,因此应用程序需要将数据以内存页的形式存储于内存。

本步骤中收集应用程序的内存访问数据,根据场景的不同,可以是收集多个应用程序的内存访问数据,也可以是访问一个应用程度的内存访问数据,在此不做具体限定。

另外,本步骤中的内存访问数据指的是应用程序对服务器设备的内存的访问参数,通过内存访问数据能够获悉应用程序对内存的读写行为以及在内存中所存储的内存页的读写权限等,目的是在后续步骤中选取特定的内存区域进行相同内存页的合并。

步骤S21:根据内存访问数据在内存中确定满足预设标准的内存共享区域。

其中,预设标准至少包括内存页的读写类型为只读类型。

在收集应用程序的内存访问数据之后,本步骤进一步根据内存访问数据在内存中确定满足预设标准的内存共享区域,此处的预设标准至少包括内存页的读写类型为只读类型,也就是说,本步骤根据内存访问数据在内存中至少选取内存页的读写类型为只读类型的内存区域作为内存共享区域。内存共享区域本质上是内存中的特定地址区间,存储与该地址区间中的内存页均被认为处于内存共享区域中,而确定内存共享区域的目的,是在后续步骤中,对内存共享区域内相同内容的内存页进行合并。

需要说明的是,由于读写类型为只读类型的内存页往往不会在应用程序运行的过程中发生内容变化,因此将只读类型的相同内存页合并后,不需要再复制出新的内存页以记录变化后的数据,能够最大程度的减少内存占用。

另外,需要强调的是,在仅针对某一个特定应用程序实现内存共享时,根据内存访问数据在内存中确定满足预设标准的内存共享区域,具体是在特定应用程序所占用的内存区域中确定该满足预设标准的内存共享区域;在多个应用程序之间实现内存共享时,根据内存访问数据在内存中确定满足预设标准的内存共享区域,具体是在相应多个应用程序共同占用的内存区域中确定该满足预设标准的内存共享区域。

步骤S22:扫描内存共享区域中数据内容相同的目标内存页。

步骤S23:对目标内存页进行合并。

在根据内存访问数据在内存中确定满足预设标准的内存共享区域之后,本实施例进一步扫描内存共享区域中数据内容相同的目标内存页,并对目标内存页进行合并,目的是使内存共享区域中N(N为大于等于2的整数)个内容相同的目标内存页作为1个目标内存页进行存储,进而减少N-1个目标内存页对内存空间的占用。

另外,需要说明的是,本实施例中可以具体通过KSM(Kernel Samepage Merging,内核相同页共享)机制扫描内存共享区域中数据内容相同的目标内存页,并对目标内存页进行合并,能够相对确保内存共享的可靠性。

本申请所提供的内存共享方法,首先收集应用程序的内存访问数据,进而根据内存访问数据在内存中确定满足预设标准的内存共享区域,预设标准至少包括内存页的读写类型为只读类型,并在此基础上进一步扫描内存共享区域中数据内容相同的目标内存页,进而对目标内存页进行合并。本申请通过收集应用程序访问内存时产生的内存访问数据,获悉内存中能够用于数据共享的内存共享区域,并在此基础上,将内存共享区域中数据相同的目标内存页进行合并,以此节省了内存资源,相对避免了内存资源不足的情况产生,进而相对确保了服务器设备中的应用程序运行的稳定性。

在上述实施例的基础上,作为一种优选的实施方式,预设标准还包括内存页的写入频率低于预设写入频率。

需要说明的是,在本实施方式中,在根据内存访问数据在内存中确定满足预设标准的内存共享区域时,具体是在将内存中内存页的读写类型为只读类型的内存区域作为内存共享区域的同时,将内存中内存页的写入频率低于预设写入频率的内存区域作为内存共享区域。预设写入频率是用于界定内存页修改频率是否处于较低水平的频率标准,应根据实际需求而定。

考虑到写入频率低于预设写入频率的内存页发送数据修改的频率较低,近似于只读类型的内存页,进而本实施方式将修改频率较低的内存页所处的内存区域作为内存共享区域,进一步提高了内存共享区域的范围,并且能够进一步增加合并内存页过程中节省的内存资源量,进一步避免了内存资源不足的情况产生,进而相对确保了服务器设备中的应用程序运行的稳定性。

如图3所示的,本申请实施例公开了一种内存共享方法,包括:

步骤S30:收集应用程序的内存访问数据。

步骤S31:根据内存访问数据在内存中确定满足预设标准的内存共享区域。

其中,预设标准包括内存页的读写类型为只读类型,或内存页的写入频率低于预设写入频率。

步骤S32:扫描内存共享区域中数据内容相同的目标内存页。

步骤S33:对目标内存页进行合并。

步骤S34:在内存共享区域中确定内存页的写入频率达到预设写入频率的目标内存区域。

步骤S35:去除内存共享区域中的目标内存区域,以基于更新后的内存共享区域进行对目标内存页的合并。

需要说明的是,由于考虑到在将内存中内存页的写入频率低于预设写入频率的内存区域作为内存共享区域之后,相应内存页的写入频率可能根据实际情况发生变化,因此本实施例的重点在于在根据内存访问数据在内存中确定满足预设标准的内存共享区域之后,根据内存共享区域中内存页的写入频率对内存共享区域进行调整,即在内存共享区域中确定内存页的写入频率达到预设写入频率的目标内存区域,并去除内存共享区域中的目标内存区域,目的是确保内存共享区域中的内存页始终低于预设写入频率,进而基于更新后的内存共享区域进行对目标内存页的合并。本实施例在确定目标内存区域之后,进一步提供了动态反馈机制,基于目标内存区域中内存页反馈的写入频率动态调整目标内存区域,进一步确保了目标内存区域的准确性。

如图4所示的,本申请实施例公开了一种内存共享方法,包括:

步骤S40:收集应用程序的内存访问数据。

步骤S41:根据内存访问数据在内存中确定满足预设标准的内存共享区域。

其中,预设标准至少包括内存页的读写类型为只读类型。

步骤S42:依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页。

步骤S43:对目标内存页进行合并。

需要说明的是,本实施例是依照预设扫描频率对内存共享区域进行扫描操作的,也就是说,在确定内存共享区域之后,每间隔特定时长对内存共享区域进行一次扫描,此处所指的扫描内存共享区域,本质上是遍历内存共享区域中的内存页。由于每一次对内存共享区域进行扫描,均需要占用服务器设备的运算资源,因此每间隔特定时长扫描一次内存共享区域,能够相对避免持续占用服务器设备中的运算资源,进而能够确保服务器设备的整体稳定性。

在上述实施例的基础上,作为一种优选的实施方式,在依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页之前,方法还包括:

获取运算资源占用量;

根据运算资源占用量确定预设扫描频率。

需要说明的是,本实施方式的重点在于,在依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页之前,首先确定预设扫描频率,即获取运算资源占用量,进而根据运算资源占用量确定预设扫描频率。此处所指的运算资源占用量包括但不限于是CPU(Central Processing Unit,中央处理器)的运算资源负载量。根据运算资源占用量确定预设扫描频率,即预设扫描频率根据运算资源负载量的改变而变化,以此能够相对确保预设扫描频率的可控性,进而确保扫描内存共享区域中目标内存页的灵活性。

如图5所示的,本申请实施例公开了一种内存共享方法,包括:

步骤S50:收集应用程序的内存访问数据。

步骤S51:根据内存访问数据在内存中确定满足预设标准的内存共享区域。

其中,预设标准至少包括内存页的读写类型为只读类型。

步骤S52:获取运算资源占用量。

步骤S53:根据运算资源占用量实时调整预设扫描频率。

其中,运算资源占用量与预设扫描频率存在负相关性。

需要说明的是,本实施例在依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页之前,首先获取运算资源占用量,并在此基础上进一步根据运算资源占用量实时调整预设扫描频率,其中,运算资源占用量与预设扫描频率之间存在负相关性,即当运算资源占用量相较于之前时刻增加时,预设扫描频率相对应减小,以此减少扫描操作对运算资源的消耗;当运算资源占用量相较于之前时刻减少时,预设扫描频率相对应增加,以此提高扫描操作的频率,增加内存共享的效率,以此进一步确保了预设扫描频率。

步骤S54:依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页。

步骤S55:对目标内存页进行合并。

本实施例进一步确保了根据运算资源占用量实时调整并确定预设扫描频率的准确性,进而在确保扫描内存共享区域中目标内存页的灵活性的同时进一步保证了服务器设备运行的稳定性。

如图6所示的,本申请实施例公开了一种内存共享方法,包括:

步骤S60:收集应用程序的内存访问数据。

步骤S61:根据内存访问数据在内存中确定满足预设标准的内存共享区域。

其中,预设标准至少包括内存页的读写类型为只读类型。

步骤S62:扫描内存共享区域中数据内容相同的目标内存页。

步骤S63:对目标内存页进行合并。

步骤S64:在内存共享区域中确定内存页的合并频率低于预设合并频率的目标内存区域。

步骤S65:去除内存共享区域中的目标内存区域,以基于更新后的内存共享区域进行对目标内存页的合并。

需要说明的是,考虑到当内存共享区域中存在某一个内存页的合并频率低于预设合并频率的情况时,该内存页在内存共享区域中重复的频率比较小,往往不能进行内存页合并以达到内存共享的效果,但是扫描该内存页的过程需要占用一定的运算资源,因此本实施方式,在对目标内存页进行合并之后,进一步提供了动态反馈机制,根据内存页反馈的合并频率,在内存共享区域中统计确定内存页的合并频率低于预设合并频率的目标内存区域,并去除内存共享区域中的目标内存区域,以基于更新后的内存共享区域进行对目标内存页的合并,相对确保了内存共享区域的准确性,避免了扫描内存共享区域的过程资源浪费,进而相对确保了服务器设备中的应用程序运行的稳定性。

为了进一步加深对于本申请上述实施例的理解,本申请还提供一种具体应用场景下的场景实施例进行进一步说明。请参考图7所示的是场景实施例下内存共享的流程示意图。

如图7所示,系统首先需要对目标程序的内存访问数据进行收集,内存共享技术的适用范围有一定限制,写入频率较高的内存区域不适合被共享,因为当共享内存被写入时系统需要为被写入的内存创建一份新拷贝,否则使用该共享内存的其它用户数据会被破坏。内存共享技术适合对只读,或内存写入频率较低的内存区域使用,对内存写入频率较高的区域使用内存共享技术会因为额外产生的CPU开销导致性能下降,也无法达到节省内存的目的。内存访问数据收集模块的目标就是获取程序写入频率较低的内存区域信息。

每个程序对内存的使用方式不尽相同,需要在程序运行过程中进行数据收集,而收集内存写入数据需要对程序使用的内存进行写保护,使得程序进行内存写入时产生CPU异常从而被系统捕获到,这会产生额外的性能开销,导致程序性能下降。因此内存访问数据收集需要在业务程序正式运行前完成,使用与实际环境相同的参数配置运行,开启内存写保护并收集程序的内存写入信息,主要包括各个内存区域的写入频率。

2、KSM(Kernel Samepage Merging,内核相同页共享)内存区域注册

依据程序内存数据收集模块获取到的程序内存写入频率信息,KSM内存区域注册模块向内核注册写入频率较低的内存区域,本模块注册的内存区域将作为KSM模块的内存共享区域。

3、KSM模块

KSM模块周期性地扫描已被注册的内存共享区域,将其中内容形同的内存页进行合并,达到节省物理内存、提高内存使用效率的目的。

4、内存共享策略动态反馈

KSM模块执行内存共享机制的过程会产生CPU性能开销,候选内存区域越大、候选内存扫描频率越高、已合并的内存被写入的频率越高都会导致CPU性能开销越大。内存共享策略动态反馈模块根据系统CPU负载的动态变化对KSM模块的执行参数进行动态调整,当系统CPU负载较高时降低KSM模块的扫描频率,减少KSM模块的CPU消耗,提升系统的整体性能;当系统CPU负载低时适当提高KSM模块的扫描频率,提高内存共享效率,提升系统的整体性能。

此外,在KSM对候选内存区域的反复扫描过程中,如果某个内存区域被共享的频率很低,或者它被写入的频率较高,则内存共享策略动态反馈模块需要将该内存区域从内存共享区域中剔除,优化KSM模块后续的执行效率。

请参见图8所示,本申请实施例公开了一种内存共享装置,包括:

访问收集模块10,用于收集应用程序的内存访问数据;

共享区域确定模块11,用于根据内存访问数据在内存中确定满足预设标准的内存共享区域;其中,预设标准至少包括内存页的读写类型为只读类型;

内存页扫描模块12,用于扫描内存共享区域中数据内容相同的目标内存页;

内存页合并模块13,用于对目标内存页进行合并。

在一种具体实施方式中,内存页扫描模块12,包括:

频率扫描模块,用于依照预设扫描频率扫描内存共享区域中数据内容相同的目标内存页。

在一种具体实施方式中,装置还包括:

占用量获取模块,用于获取运算资源占用量;

频率确定模块,用于根据运算资源占用量确定预设扫描频率。

在一种具体实施方式中,频率确定模块,包括:

频率调整模块,用于根据运算资源占用量实时调整预设扫描频率;其中,运算资源占用量与预设扫描频率存在负相关性。

在一种具体实施方式中,预设标准还包括内存页的写入频率低于预设写入频率。

在一种具体实施方式中,装置包括:

写入频率区域确定模块,用于在内存共享区域中确定内存页的写入频率达到预设写入频率的目标内存区域;

区域去除模块,用于去除内存共享区域中的目标内存区域,以基于更新后的内存共享区域进行对目标内存页的合并。

在一种具体实施方式中,装置还包括:

合并频率确定模块,用于在内存共享区域中确定内存页的合并频率低于预设合并频率的目标内存区域;

区域去除模块,用于去除内存共享区域中的目标内存区域,以基于更新后的内存共享区域进行对目标内存页的合并。

本申请所提供的内存共享装置,首先收集应用程序的内存访问数据,进而根据内存访问数据在内存中确定满足预设标准的内存共享区域,预设标准至少包括内存页的读写类型为只读类型,并在此基础上进一步扫描内存共享区域中数据内容相同的目标内存页,进而对目标内存页进行合并。本申请通过收集应用程序访问内存时产生的内存访问数据,获悉内存中能够用于数据共享的内存共享区域,并在此基础上,将内存共享区域中数据相同的目标内存页进行合并,以此节省了内存资源,相对避免了内存资源不足的情况产生,进而相对确保了服务器设备中的应用程序运行的稳定性。

基于上述程序模块的硬件实现,且为了实现本申请实施例的内存共享方法,本申请实施例还提供了一种内存共享设备,运行有虚拟机且与虚拟机对应的虚拟机磁盘建立有通信连接,图9为本申请实施例内存共享设备的硬件组成结构示意图,如图9所示,内存共享设备包括:

通信接口1,能够与其它设备比如网络设备等进行信息交互;

处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的内存共享方法。而所述计算机程序存储在存储器3上。

当然,实际应用时,内存共享设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统4。

本申请实施例中的存储器3用于存储各种类型的数据以支持内存共享设备的操作。这些数据的示例包括:用于在内存共享设备上操作的任何计算机程序。

可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器2旨在包括但不限于这些和任意其它适合类型的存储器。

上述本申请实施例揭示的内存共享方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述内存共享方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本申请实施例中的公开的各内存共享方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的内存共享方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述内存共享方法的步骤。

处理器2执行所述程序时实现本申请实施例的各个内存共享方法中的相应流程,为了简洁,在此不再赘述。

在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述内存共享方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置、终端和内存共享方法,可以通过其它的方式实现。以上所描述的设备实施例仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述内存共享方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述内存共享方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台内存共享设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例的内存共享方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

本申请所提供的内存共享设备,首先收集应用程序的内存访问数据,进而根据内存访问数据在内存中确定满足预设标准的内存共享区域,预设标准至少包括内存页的读写类型为只读类型,并在此基础上进一步扫描内存共享区域中数据内容相同的目标内存页,进而对目标内存页进行合并。本申请通过收集应用程序访问内存时产生的内存访问数据,获悉内存中能够用于数据共享的内存共享区域,并在此基础上,将内存共享区域中数据相同的目标内存页进行合并,以此节省了内存资源,相对避免了内存资源不足的情况产生,进而相对确保了服务器设备中的应用程序运行的稳定性。

此外,本申请实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的内存共享方法的步骤。

本申请所提供的计算机可读存储介质,首先收集应用程序的内存访问数据,进而根据内存访问数据在内存中确定满足预设标准的内存共享区域,预设标准至少包括内存页的读写类型为只读类型,并在此基础上进一步扫描内存共享区域中数据内容相同的目标内存页,进而对目标内存页进行合并。本申请通过收集应用程序访问内存时产生的内存访问数据,获悉内存中能够用于数据共享的内存共享区域,并在此基础上,将内存共享区域中数据相同的目标内存页进行合并,以此节省了内存资源,相对避免了内存资源不足的情况产生,进而相对确保了服务器设备中的应用程序运行的稳定性。

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

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

相关技术
  • 一种内存共享方法、装置、设备及存储介质
  • 一种远端内存共享方法、装置、电子设备及存储介质
技术分类

06120113135914