CN109144714A - 内存管理方法及装置 - Google Patents

内存管理方法及装置 Download PDF

Info

Publication number
CN109144714A
CN109144714A CN201710465334.XA CN201710465334A CN109144714A CN 109144714 A CN109144714 A CN 109144714A CN 201710465334 A CN201710465334 A CN 201710465334A CN 109144714 A CN109144714 A CN 109144714A
Authority
CN
China
Prior art keywords
memory
specified
video memory
physical memory
physical
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
CN201710465334.XA
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201710465334.XA priority Critical patent/CN109144714A/zh
Publication of CN109144714A publication Critical patent/CN109144714A/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供了一种内存管理方法及装置,其中,该方法包括:将终端的部分显存作为物理内存的储备,在终端物理内存不够时,将物理内存中暂不使用的资源移动至显存中,腾出物理内存来执行新任务,采用上述技术方案,充分利用了显存的高访问速度,保证了内存交换的速率,解决了相关技术中由于针对内存资源紧张的技术存在缺陷,导致无法满足不同用户的需求的问题。

Description

内存管理方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种内存管理方法及装置。
背景技术
在相关技术中,随着软件技术的飞速发展,应用软件对物理内存资源的需求量也越来越大,一方面是因为,应用软件自身的体积和功能在不断增加,导致需要更多的内存;另一方面,很多场景下,需要以空间换性能,即利用物理内存来做缓存,来提升应用程序的性能,这种缓存技术在硬件自身存在性能瓶颈(比如中央处理器CPU性能不足、磁盘输入输出IO性能不足)时尤其有用。
正是由于软件对内存需求量的不断增加,导致通常的操作***环境中,内存都是最紧张的***资源,经常出现内存资源紧张的情况。内存资源紧张的情况下,***可能表现出各种异常,比如运行缓慢甚至卡死、应用程序异常退出(进程被kill)。***运行缓慢或卡死给用户带来极差的用户体验,程序异常退出可能导致关键用户数据丢失。
针对内存资源紧张的情况,相关技术中主流操作***中现有的处理技术主要包括两类:
第一类,交换分区或交换文件(后文统称为交换分区)技术。即在磁盘中创建一个分区或者文件,当出现内存紧张时,将内存中不活动的(近期使用率较低)页面交换(存储)到该交换分区中,从而可以从内存中腾出空间,供后续分配;当需要访问之前存储到交换分区中的内存时,需要将这部分内存从交换分区中重新换回物理内存中。由于物理磁盘的访问速率限制(当前主流磁盘读写速率通常在百兆字节/秒级别),导致整个过程非常耗时,这个过程中,用户可能会感觉***异常缓慢,在一些场景中(比如办公桌面)难以忍受。
第二类,OOM Killer(Out of memory killer)技术。即在内存紧张时,根据一定策略挑选进程,将其kill掉,从而释放内存,缓解内存紧张的情况。该技术能一定程度上缓解内存紧张的问题,但是问题在于,会导致进程异常退出,导致用户数据异常丢失、或者关机业务异常中断,在一些场景中(比如有关键业务或数据的场景)是无法接受的。
另一方面,在现代计算机环境中,通常都自带了显卡硬件(独立显卡或集成显卡),而显卡通常都带有一定数量的显存。而显卡硬件通常通过PCIE总线与CPU相连,显存的访问速度通常在GB/s级别,该速率比当前主流磁盘访问速率快得多。
针对相关技术中由于针对内存资源紧张的技术存在缺陷,导致无法满足不同用户的需求的问题,目前还没有有效的解决方案。
发明内容
本发明实施例提供了一种内存管理方法及装置,以至少解决相关技术中由于针对内存资源紧张的技术存在缺陷,导致无法满足不同用户的需求的问题。
根据本发明的一个实施例,提供了一种内存管理方法,包括:为终端的物理内存按照第一预设条件分配指定显存;将所述物理内存中存储的指定资源移动至所述指定显存。
可选地,将所述物理内存中存储的指定资源移动至所述指定显存,包括:在满足第二预设条件时,将指定资源存储至所述指定显存,其中,所述第二预设条件包括以下之一:确定所述物理内存全部被占用;确定所述物理内存中被占用比例超过第一预设值。
可选地,为终端的物理内存按照第一预设条件分配指定显存,包括以下之一:为终端的物理内存分配大小固定的第一显存;为终端的物理内存分配第二显存,其中,所述第二显存为当前显卡未使用的显存中的占用预设比例大小的显存。
可选地,将所述物理内存中存储的指定资源移动至所述指定显存之后,在满足第三预设条件时,将所述指定资源的部分或全部从所述指定显存中移回至所述物理内存,其中,所述第三预设条件包括:所述物理内存的空闲比例大于第二预设值;或接收到要求访问所述指定资源的信息。
可选地,将所述指定资源的部分或全部从所述指定显存中移回至所述物理内存之后,且所述指定显存处于空闲状态时,将处于空闲状态的显存的信息存在所述物理内存的缓存中;在后续为所述物理内存分配显存时,选择所述缓存中存储的信息对应的指定显存。
可选地,实时监控所述物理内存和所述显存的使用情况,并依据所述使用情况执行异步交换,其中,所述异步交换包括在所述物理内存和所述指定显存之间交换各自存储的资源。
可选地,所述指定资源包括:在预设时间段内,被访问次数少于预设值的资源。
可选地,所述终端设置所述物理内存中的关键应用资源,其中,所述关键应用资源禁止从所述物理内存移动至所述指定显存。
根据本发明的另一个实施例,还提供了一种内存管理装置,包括:分配模块,用于为终端的物理内存按照第一预设条件分配指定显存;移动模块,用于将所述物理内存中存储的指定资源移动至所述指定显存。
可选地,所述移动模块包括:在满足第二预设条件时,将指定资源存储至所述指定显存,其中,所述第一预设条件包括以下之一:确定所述物理内存全部被占用;确定所述物理内存中被占用比例超过第一预设值。
可选地,所述移动模块还用于将所述指定资源的部分或全部从所述指定显存中移回至所述物理内存;所述分配模块还用于在所述指定显存处于空闲状态时,将处于空闲状态的显存的信息存在所述物理内存的缓存中;在后续为所述物理内存分配显存时,选择所述缓存中存储的信息对应的指定显存。
根据本发明的另一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述可选实施例任一项中所述的方法。
根据本发明的另一个实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。
通过本发明,将终端的部分显存作为物理内存的储备,在终端物理内存不够时,将物理内存中暂不使用的资源移动至显存中,腾出物理内存来执行新任务,采用上述技术方案,充分利用了显存的高访问速度,保证了内存交换的速率,解决了相关技术中由于针对内存资源紧张的技术存在缺陷,导致无法满足不同用户的需求的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种内存管理方法的终端的硬件结构框图;
图2是根据本发明实施例的内存管理方法的流程图;
图3是根据本发明优选实施例的装置框架图;
图4是根据本发明优选实施例的基于显存的内存交换技术的方法流程图;
图5是根据本发明优选实施例的配置模块的工作流程图;
图6是根据本发明优选实施例的初始化模块工作流程图;
图7是根据本发明优选实施例的触发内存换出的工作流程图;
图8是根据本发明优选实施例的触发内存换入的工作流程图;
图9是根据本发明优选实施例的异步内存换出的工作流程图;
图10是根据本发明优选实施例的异步内存换入的工作流程图;
图11是根据本发明优选实施例的分配显存的工作流程图;
图12是根据本发明优选实施例的分配释放的工作流程图。
图13是根据本发明实施例的内存管理装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例一
本申请实施例一所提供的方法实施例可以在终端、计算机终端或者类似的运算装置中执行。以运行在终端上为例,图1是本发明实施例的一种内存管理方法的终端的硬件结构框图。如图1所示,终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的内存管理方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端的内存管理方法,图2是根据本发明实施例的内存管理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,终端的物理内存按照第一预设条件分配指定显存;
步骤S204,将该物理内存中存储的指定资源移动至该指定显存。
通过上述步骤,将终端的部分显存作为物理内存的储备,在终端物理内存不够时,将物理内存中暂不使用的资源移动至显存中,腾出物理内存来执行新任务,采用上述技术方案,充分利用了显存的高访问速度,保证了内存交换的速率,解决了相关技术中由于针对内存资源紧张的技术存在缺陷,导致无法满足不同用户的需求的问题。
可选地,将该物理内存中存储的指定资源移动至该指定显存,包括:在满足第二预设条件时,将指定资源存储至该指定显存,其中,该第二预设条件包括以下之一:确定该物理内存全部被占用;确定该物理内存中被占用比例超过第一预设值。
可选地,为终端的物理内存按照第一预设条件分配指定显存,包括以下之一:为终端的物理内存分配大小固定的第一显存;为终端的物理内存分配第二显存,其中,该第二显存为当前显卡未使用的显存中的占用预设比例大小的显存。
可选地,将该物理内存中存储的指定资源移动至该指定显存之后,在满足第三预设条件时,将该指定资源的部分或全部从该指定显存中移回至该物理内存,其中,该第三预设条件包括:该物理内存的空闲比例大于第二预设值;或接收到要求访问该指定资源的信息。
可选地,将该指定资源的部分或全部从该指定显存中移回至该物理内存之后,且该指定显存处于空闲状态时,将处于空闲状态的显存的信息存在该物理内存的缓存中;在后续为该物理内存分配显存时,选择该缓存中存储的信息对应的指定显存。
可选地,实时监控该物理内存和该显存的使用情况,并依据该使用情况执行异步交换,其中,该异步交换包括在该物理内存和该指定显存之间交换各自存储的资源。
可选地,该指定资源包括:在预设时间段内,被访问次数少于预设值的资源。
可选地,该终端设置该物理内存中的关键应用资源,其中,该关键应用资源禁止从该物理内存移动至该指定显存。
下面结合本发明优选实施例进行详细说明。
本发明优选实施例要解决的技术问题在于:相关技术中针对内存资源紧张的技术存在缺陷,在不同的应用场景中,都不同程度的存在问题,无法满足不同用户的通用需求。
为解决上述问题,本发明优选实施例提供一种基于显存的内存交换技术。该技术利用显卡中的显存来做交换分区,显存相当于物理内存的后备存储,用于在内存资源紧张时,将非活动内存交换到显存中,以缓解内存资源紧张的情况;当进程需要访问被交换到显存中的内存时,再将其重新换入内存中。由于显存的访问速率远高于磁盘的访问速率,所以当使用显存来做交换分区时,一方面,能很大程度上缓解基于磁盘的交换技术的性能问题;另一方面,也能很大程度缓解因为不使用交换技术,在内存紧张时直接kill进程,从而导致业务异常中断或数据丢失的问题。
图3是根据本发明优选实施例的装置框架图,如图3所示,本发明优选实施例中用于基于显存的内存交换技术需要5个模块:配置模块(相当于上述实施例中分配模块的部分功能)、初始化模块、内存管理模块(相当于上述实施例中移动模块的部分功能)、交换模块(相当于上述实施例中移动模块的部分功能)、显存管理模块(相当于上述实施例中分配模块的部分功能)。针对上述5个模块,以下进行分别说明:
1、配置模块。提供所有相关的配置功能,主要功能包括:
1)配置不同的显存使用策略,具体的策略如:
a)固定大小。即根据用户配置,指定用于后备内存的显存的大小。用户配置后,大小固定,***运行期间不再变化,而且该部分显存不再由显卡自身使用和控制。
b)动态自适应。根据环境中的显存大小和显存的使用情况动态调整,由于显卡自身需要使用显存用于图形相关的操作,所有显卡的使用是动态的,使用该策略,能根据显存当前的使用情况,动态设置用于后备内存的显存大小。
2)配置何时触发内存换出。内存换出即将不活跃的内存换出到后备内存(显存)中,原来的物理内存在换出后可以被重新分配利用。可以根据不同场景的需求配置不同的启用策略,典型的策略如:
a)当内存用尽时触发。由于启用换出功能后,内存访问性能会有一定损耗,使用该策略,可以最大程度的降低性能损耗。适用于对性能较敏感的场景。
b)当内存占用超过一定比例时触发。由于内核用尽后触发交换功能的过程可能有一定的时间消耗,对用户来说,可能会有突然的卡顿体验。当内存超过一定比例时触发交换功能,能一定程度上缓解这种现象,给用户更平滑的用户体验。
3)配置何时触发内存换入。内存换入即将后备内存(显存)中的内存单元换入到物理内存中,原来的后备内存(显存)在换入后可以被重新分配利用。典型的策略如:当空闲内存超过一定比例时。
4)配置关键应用。由于当内存被交换到后备内存中后,内存访问性能会有一定损耗,对于一些关键应用来说可能无法接受。在本实施例中,可以提供关键应用配置功能,即提供接口让用户配置关键应用,关键应用不使用交换技术,其占用的内存不会被交换到后备内存中,以最大程度的保障其性能。
5)配置是否启用显存做后备内存。提供开关供用户决定是否开启此技术,便于用户根据不同的应用场景做选择。
2、初始化模块。主要提供如下功能:
1)其他模块的初始化。
2)显存的检测。检测当前环境中显存的大小。
3)根据配置模块提供的显存使用策略信息,设置可供用作交换的显存初始大小。
3、内存管理模块。用于管理环境中的物理内存,通常的操作***中都有自己的用于管理内存的模块,本优选实施例中提出的技术既可以在现有的操作***内存管理模块的基础上进行改造增强、也可以以单独模块的方式,与相关技术中的内存管理模块进行必要的交互。除了操作***自身需要的内核管理功能,本优选实施例提出的技术中的内存管理模块主要实现如下功能:
1)根据配置模块的配置,决定是否启用交换技术,如果不启用,则在相关的内核管理流程中,屏蔽相关处理。
2)触发内存换出。在内存分配过程中,根据配置模块的相关配置,在达到预设条件时(如内存用尽或内存占用达到一定比例),触发内存换出功能,将不活跃的内存单元换出到后备内存(显存)中,该功能由交换模块实现,这个过程可以实现为异步方式(即由交换模块处理,不影响当前的内存分配),也可以实现同步方式(即等待交换完成后完成内存分配)。
3)触发内存换入。在内存访问过程中,当被访问的内存单元已经被换出到后备内存(显存)中时,触发换入功能,将相应的内存单元从后备内存(显存)中换入到内存中,以便于后续访问,同时,将该内存单元更新为活跃状态,并更新所属的集合。
4)维护内存单元的活动状态。根据内存单元使用情况,维护其活动状态,比如将最近频繁使用的内存单元(活跃的内存单元)汇集到相应的集合中,将不活跃的内存单元汇集到不同的集合中。
5)后备内存的缓存。为提升后备内存(显存)管理效率,可在内核管理模块中,实现后备内存信息的缓存,当分配后备内存时,可以批量申请多个显存单元,下次再分配时,可以直接从缓存中分配,提升分配效率;同理,当是否后备内存时,先放入缓存中,不直接由显存管理模块回收,以便于提升下次分配的效率。缓存中只记录显存的基本信息,比如映射到CPU空间的物理地址、大小等,并不真正分配相应大小的物理内存,所以其占用的空间非常小,基本不会导致内存负担。该功能为可选功能,根据需要实现。
4、交换模块。主要完成内存交换的相关操作,主要功能如下:
1)维护内核和后备内存(显存)之间的映射关系。内存和显存之间需要建立相应的映射关系,以便于在分配和释放后备内存时,能进行查找和匹配。
2)异步交换。实时监控内存使用情况,当达到内存换出条件(根据预先的配置)时,触发内存换出功能,将内存管理单元记录的一定数量的不活跃的内存单元交换到后备内存(显存)中。另一方面,当达到内存换入条件(根据预先的配置)时,触发内存换入功能,将一定数量的内存单元从后备内存(显存)中换入到内存中,以便于后续访问,提升内存访问效率。
3)内存换出。将物理内存单元中的内容换出到后备内存(显存)中。具体包括:向显存管理单元发送显存分配请求,由显存管理模块完成显存分配并返回给内存管理模块,内存管理模块得到相应显存空间后,将指定的物理内存单元的内容复制到显存中,释放原来的物理内存,释放后的物理内存可以被重新分配利用。
4)内存换入。将后备内存(显存)中的内容换入到物理内存中。具体包括:在物理内存中分配空间,将后备内存(显存)中的内存拷贝到新分配的物理内存空间中,然后向显存管理模块发送消息,通知其回收相应的显存。
5、显存管理模块。负责显存的分配和释放,主要功能如下:
1)分配显存。接收来自其他模块的显存分配请求,完成显存分配操作,并将结果返回给其他模块。
2)释放显存。接收来自其他模块的显存释放请求,完成显存释放操作,并将结果返回给其他模块。
本优选实施例提出的一种基于显存的内存交换技术,典型的操作步骤如下:
步骤1、用户配置是否启用内存交换技术,以及相关的参数。
步骤2、操作***启动,根据预先的配置进行相关初始化操作。
步骤3、在分配内存时,判断是否达到内存换出条件。
步骤4、当达到内存换出条件时,触发内存换出,将非活动物理内存单元换出到显存中。
步骤5、当访问已换出的内存单元时,将显存中的内存单元换入到物理内存中。
步骤6、交换模块实时监控内存使用情况,当达到内存交换条件时,触发异步换功能。
下面是本发明优选实施例的具体实施方式。
图4是根据本发明优选实施例的基于显存的内存交换技术的方法流程图,如图4所示,该方法包括以下步骤:
步骤41,用户配置是否启用内存交换技术,以及相关的参数。
步骤42,操作***启动,根据预先的配置进行相关初始化操作。
步骤43,在分配内存时,判断是否达到内存换出条件。
步骤44,当达到内存换出条件时,触发内存换出,将非活动物理内存单元换出到显存中。
步骤45,当访问已换出的内存单元时,将显存中的内存单元换入到物理内存中。
步骤46,交换模块实时监控内存使用情况,当达到内存交换条件时,触发异步换功能。
图5是根据本发明优选实施例的配置模块的工作流程图,如图5所示,包括如下步骤:
步骤51,用户根据不同场景需求,提供不同的配置。
步骤52,配置模块解析相关的配置,并保持相关配置。
步骤53,其他模块从指定位置读取相关配置,并使用。
图6是根据本发明优选实施例的初始化模块工作流程图,如图6所示,包括如下步骤:
步骤61,操作***启动。
步骤62,检测当前环境中显存的大小。
步骤63,根据配置模块提供的显存使用策略信息,设置可供用作后备内存的显存初始大小,并将其映射到CPU的物理地址空间。
步骤64,其他模块的初始化。
内存管理模块主要涉及如下2个工作流程:
1、触发内存换入工作流程
2、触发内存换出工作流程
图7是根据本发明优选实施例的触发内存换出的工作流程图,如图7所示,包括如下步骤:
步骤71,应用申请内存分配,或者操作***自身进行内存分配。
步骤72,操作***判断是否达到内存换出条件,如未达到则直接分配内存。
步骤73,操作***判断是否为关键应用,如不是,则直接分配内存
步骤74,如果达到内存换出条件且未非关键应用,则触发内存换出。
图8是根据本发明优选实施例的触发内存换入的工作流程图,如图8所示,包括如下步骤:
步骤81,应用程序或者操作***自身访问指定的内存单元。
步骤82,操作***判断被访问的内存单元是否已经被换出到后备内存(显存)中,如果否,则直接访问。
步骤83,如果已经被换出,则触发换入功能,将相应的内存单元从后备内存(显存)中换入到内存中。
步骤84,将该内存单元更新为活跃状态,并更新所属的集合。
交换模块主要涉及如下4个工作流程:
1、异步内存换出工作流程
2、异步内存换入工作流程
3、同步内存换出工作流程
4、同步内存换入工作流程
图9是根据本发明优选实施例的异步内存换出的工作流程图,如图9所示,包括如下步骤:
步骤91,交换模块实时监控内存使用情况,具体实现方式不限,典型实现方式为后台守护进程。
步骤92,判断是否当达到内存换出条件,当未达到时,继续监控。
步骤93,当达到条件时,触发内存换出功能。
步骤94,向显存管理单元发送显存分配请求。
步骤95,由显存管理模块完成显存分配并返回给内存管理模块。
步骤96,将指定的物理内存单元的内容复制到显存中。
步骤97,释放原来的物理内存,释放后的物理内存可以被重新分配利用。
图10是根据本发明优选实施例的异步内存换入的工作流程图,如图10所示,包括如下步骤:
步骤1001,交换模块实时监控内存使用情况。
步骤1002,判断是否当达到内存换出条件,当未达到时,继续监控。
步骤1003,当达到条件时,触发内存换入功能。
步骤1004,在物理内存中分配空间。
步骤1005,将后备内存(显存)中的内存拷贝到新分配的物理内存空间中,。
步骤1006,然后向显存管理模块发送消息,通知其回收相应的显存。
同步内存换出的工作流程如内存管理模块中的触发内存换出工作流程,如图7所示。
同步内存换入的工作流程如内存管理模块中的触发内存换入工作流程,如图8所示。
显存管理模块主要涉及如下2个工作流程:
1、分配显存工作流程
2、释放显存工作流程
图11是根据本发明优选实施例的分配显存的工作流程图,如图11所示,包括如下步骤:
步骤1101,接收来自其他模块的显存分配请求。
步骤1102,使用显卡驱动提供的接口完成显存分配操作。
步骤1103,将显存分配结果返回给其他模块。
图12是根据本发明优选实施例的分配释放的工作流程图,如图12所示,包括如下步骤:
步骤1201,接收来自其他模块的显存释放请求。
步骤1202,使用显卡驱动提供的接口完成显存释放操作。
步骤1203,将显存释放结果返回给其他模块。
采用上述技术方案,一方面,能很大程度上缓解基于磁盘的交换技术的性能问题;另一方面,也能很大程度缓解因为不使用交换技术,在内存紧张时直接kill进程,从而导致业务异常中断或数据丢失的问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例二
在本实施例中还提供了一种内存管理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图13是根据本发明实施例的内存管理装置的结构框图,如图13所示,该装置包括:
分配模块132,用于为终端的物理内存按照第一预设条件分配指定显存;
移动模块134,连接至该分配模块132,用于将该物理内存中存储的指定资源移动至该指定显存。
可选地,该移动模块134包括:在满足第二预设条件时,将指定资源存储至该指定显存,其中,该第一预设条件包括以下之一:确定该物理内存全部被占用;确定该物理内存中被占用比例超过第一预设值。
可选地,该移动模块134还用于将该指定资源的部分或全部从该指定显存中移回至该物理内存;该分配模块还用于在该指定显存处于空闲状态时,将处于空闲状态的显存的信息存在该物理内存的缓存中;在后续为该物理内存分配显存时,选择该缓存中存储的信息对应的指定显存。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例三
根据本发明的另一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述可选实施例任一项中所述的方法。
实施例四
根据本发明的另一个实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种内存管理方法,其特征在于,包括:
为物理内存按照第一预设条件分配指定显存;
将所述物理内存中存储的指定资源移动至所述指定显存。
2.根据权利要求1所述的方法,其特征在于,将所述物理内存中存储的指定资源移动至所述指定显存,包括:
在满足第二预设条件时,将指定资源存储至所述指定显存,其中,所述第二预设条件包括以下之一:
确定所述物理内存全部被占用;
确定所述物理内存中被占用比例超过第一预设值。
3.根据权利要求1所述的方法,其特征在于,为终端的物理内存按照第一预设条件分配指定显存,包括以下之一:
为终端的物理内存分配大小固定的第一显存;
为终端的物理内存分配第二显存,其中,所述第二显存为当前显卡未使用的显存中的占用预设比例大小的显存。
4.根据权利要求1所述的方法,其特征在于,将所述物理内存中存储的指定资源移动至所述指定显存之后,所述方法还包括:
在满足第三预设条件时,将所述指定资源的部分或全部从所述指定显存中移回至所述物理内存,其中,所述第三预设条件包括:
所述物理内存的空闲比例大于第二预设值;或
接收到要求访问所述指定资源的信息。
5.根据权利要求4所述的方法,其特征在于,将所述指定资源的部分或全部从所述指定显存中移回至所述物理内存之后,且所述指定显存处于空闲状态时,将用于指示所述指定显存的指示信息存在所述物理内存中;再次为所述物理内存分配显存时,依据所述物理内存中存储的指示信息选择所述指定显存。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
实时监控所述物理内存和所述显存的使用情况,并依据所述使用情况执行异步交换,其中,所述异步交换包括在所述物理内存和所述指定显存之间交换各自存储的资源。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述指定资源包括:
在预设时间段内,被访问次数少于预设值的资源。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述终端设置所述物理内存中的关键应用资源,其中,所述关键应用资源禁止从所述物理内存移动至所述指定显存。
9.一种内存管理装置,其特征在于,包括:
分配模块,用于为终端的物理内存按照第一预设条件分配指定显存;
移动模块,用于将所述物理内存中存储的指定资源移动至所述指定显存。
10.根据权利要求9所述的装置,其特征在于,所述移动模块包括:
在满足第二预设条件时,将指定资源存储至所述指定显存,其中,所述第一预设条件包括以下之一:确定所述物理内存全部被占用;确定所述物理内存中被占用比例超过第一预设值。
11.根据权利要求9所述的装置,其特征在于,所述移动模块还用于将所述指定资源的部分或全部从所述指定显存中移回至所述物理内存;
所述分配模块还用于在所述指定显存处于空闲状态时,将处于空闲状态的显存的信息存在所述物理内存的缓存中;在后续为所述物理内存分配显存时,选择所述缓存中存储的信息对应的指定显存。
12.一种存储装置,其特征在于,包括:物理内存,指定显存;
物理内存,用于存储指定资源;
指定显存,用于在所述物理内存中存储的指定资源满足第二预设条件时,移动所述指定资源至所述指定显存,其中,所述第二预设条件包括以下之一:
确定所述物理内存全部被占用;
确定所述物理内存中被占用比例超过第一预设值。
13.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述权利要求1至8任一项中所述的方法。
14.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行上述权利要求1至8任一项中所述的方法。
CN201710465334.XA 2017-06-19 2017-06-19 内存管理方法及装置 Pending CN109144714A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710465334.XA CN109144714A (zh) 2017-06-19 2017-06-19 内存管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710465334.XA CN109144714A (zh) 2017-06-19 2017-06-19 内存管理方法及装置

Publications (1)

Publication Number Publication Date
CN109144714A true CN109144714A (zh) 2019-01-04

Family

ID=64804380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710465334.XA Pending CN109144714A (zh) 2017-06-19 2017-06-19 内存管理方法及装置

Country Status (1)

Country Link
CN (1) CN109144714A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110928695A (zh) * 2020-02-12 2020-03-27 南京芯瞳半导体技术有限公司 一种关于显存的管理方法、装置及计算机存储介质
CN111381960A (zh) * 2018-12-29 2020-07-07 中兴通讯股份有限公司 终端任务的处理方法、装置、存储介质及电子装置
CN113051072A (zh) * 2021-03-02 2021-06-29 长沙景嘉微电子股份有限公司 内存管理方法,装置,***及计算机可读存储介质
CN114168065A (zh) * 2020-09-10 2022-03-11 荣耀终端有限公司 调整内存配置参数的方法和装置
CN114461375A (zh) * 2021-07-30 2022-05-10 荣耀终端有限公司 内存资源管理方法及电子设备
CN115292199A (zh) * 2022-09-22 2022-11-04 荣耀终端有限公司 一种显存泄露的处理方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102628956A (zh) * 2011-04-08 2012-08-08 中国科学院地质与地球物理研究所 Gpu/cpu协同方式可控震源数据相关处理设备及方法
WO2016000470A1 (zh) * 2014-06-30 2016-01-07 华为技术有限公司 一种内存控制方法和装置
CN106293953A (zh) * 2015-06-08 2017-01-04 龙芯中科技术有限公司 一种访问共享显示数据的方法及***
CN106708619A (zh) * 2015-07-21 2017-05-24 华为技术有限公司 资源管理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102628956A (zh) * 2011-04-08 2012-08-08 中国科学院地质与地球物理研究所 Gpu/cpu协同方式可控震源数据相关处理设备及方法
WO2016000470A1 (zh) * 2014-06-30 2016-01-07 华为技术有限公司 一种内存控制方法和装置
CN106293953A (zh) * 2015-06-08 2017-01-04 龙芯中科技术有限公司 一种访问共享显示数据的方法及***
CN106708619A (zh) * 2015-07-21 2017-05-24 华为技术有限公司 资源管理方法及装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111381960A (zh) * 2018-12-29 2020-07-07 中兴通讯股份有限公司 终端任务的处理方法、装置、存储介质及电子装置
CN110928695A (zh) * 2020-02-12 2020-03-27 南京芯瞳半导体技术有限公司 一种关于显存的管理方法、装置及计算机存储介质
CN110928695B (zh) * 2020-02-12 2020-05-22 南京芯瞳半导体技术有限公司 一种关于显存的管理方法、装置及计算机存储介质
CN114168065A (zh) * 2020-09-10 2022-03-11 荣耀终端有限公司 调整内存配置参数的方法和装置
US11995317B2 (en) 2020-09-10 2024-05-28 Honor Device Co., Ltd. Method and apparatus for adjusting memory configuration parameter
CN114168065B (zh) * 2020-09-10 2024-05-31 荣耀终端有限公司 调整内存配置参数的方法和装置
CN113051072A (zh) * 2021-03-02 2021-06-29 长沙景嘉微电子股份有限公司 内存管理方法,装置,***及计算机可读存储介质
CN114461375A (zh) * 2021-07-30 2022-05-10 荣耀终端有限公司 内存资源管理方法及电子设备
CN114461375B (zh) * 2021-07-30 2023-01-20 荣耀终端有限公司 内存资源管理方法及电子设备
CN115292199A (zh) * 2022-09-22 2022-11-04 荣耀终端有限公司 一种显存泄露的处理方法及相关装置
CN115292199B (zh) * 2022-09-22 2023-03-24 荣耀终端有限公司 一种显存泄露的处理方法及相关装置

Similar Documents

Publication Publication Date Title
CN109144714A (zh) 内存管理方法及装置
CN107885666B (zh) 一种内存管理方法和装置
CN109565515B (zh) 分布式资源管理***中的动态租户结构调整的***、设备和过程
US8051266B2 (en) Automatic memory management (AMM)
CN113641457B (zh) 容器创建方法、装置、设备、介质及程序产品
CN109684074B (zh) 物理机资源分配方法及终端设备
CN103744736B (zh) 内存管理的方法及Linux终端
CN111722906A (zh) 一种部署虚拟机和容器的方法及装置
CN104424122B (zh) 一种电子设备及内存划分方法
JP2022516486A (ja) リソース管理方法と装置、電子デバイス、及び記録媒体
CN105183565A (zh) 计算机、服务质量控制方法及装置
CN111309440B (zh) 一种多类型gpu的管理调度的方法和设备
CN108880898A (zh) 主备容器***切换方法及装置
CN103827842A (zh) 向控制器存储器空间写入消息
CN115858083A (zh) 容器cpu资源调度与隔离方法和装置、存储介质及电子设备
CN113674131A (zh) 硬件加速器设备管理方法、装置及电子设备和存储介质
CN110162396A (zh) 内存回收方法、装置、***和存储介质
KR20170087457A (ko) 공유 캐시 메모리 시스템들에서의 공유 캐시 메모리 배정 제어 제공
CN112631780A (zh) 资源调度方法和装置、存储介质及电子设备
CN110018883A (zh) 一种虚拟机删除方法、装置、设备及存储介质
CN107800814B (zh) 虚拟机部署方法及装置
CN109521970A (zh) 一种数据处理方法及相关设备
CN116204309A (zh) 内存交换方法、装置、计算机设备及存储介质
CN114490083A (zh) Cpu资源的绑定方法、装置、存储介质及电子装置
CN109002347B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190104