CN117453423B - Gpu显存管理方法和系统,存储介质和电子设备 - Google Patents

Gpu显存管理方法和系统,存储介质和电子设备 Download PDF

Info

Publication number
CN117453423B
CN117453423B CN202311801542.4A CN202311801542A CN117453423B CN 117453423 B CN117453423 B CN 117453423B CN 202311801542 A CN202311801542 A CN 202311801542A CN 117453423 B CN117453423 B CN 117453423B
Authority
CN
China
Prior art keywords
deduplication
video memory
data block
gpu
hash value
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.)
Active
Application number
CN202311801542.4A
Other languages
English (en)
Other versions
CN117453423A (zh
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.)
Vita Technology Beijing Co ltd
Original Assignee
Vita Technology Beijing 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 Vita Technology Beijing Co ltd filed Critical Vita Technology Beijing Co ltd
Priority to CN202311801542.4A priority Critical patent/CN117453423B/zh
Publication of CN117453423A publication Critical patent/CN117453423A/zh
Application granted granted Critical
Publication of CN117453423B publication Critical patent/CN117453423B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及显存技术领域,涉及一种GPU显存管理方法和系统,存储介质和电子设备,以节省GPU显存空间,提升GPU显存利用率。GPU显存管理方法包括:获取上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔;若所述时间间隔大于预设时长,则触发执行去重任务;响应于触发执行去重任务,确定所述GPU显存中是否存在待去重检测的数据块;在所述GPU显存中存在所述待去重检测的数据块的情况下,确定所述待去重检测的数据块的哈希值;响应于根据所述哈希值确定所述待去重检测的数据块为去重对象,对所述待去重检测的数据块进行去重处理;在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,中断所述去重任务。

Description

GPU显存管理方法和系统,存储介质和电子设备
技术领域
本公开涉及GPU显存技术领域,具体地,涉及一种GPU显存管理方法和系统,存储介质和电子设备。
背景技术
随着AI(Artificial Intelligence)的广泛应用,使用图形处理器(GraphicsProcessing Unit,GPU)的异构程序也获得了广泛应用。然而,这些AI应用会占用大量的显存。而当前GPU显存的扩充速度低于应用的数据的扩充速度以及低于模型大小的扩充速度。因此,如何更好的节省显存资源,是越来越多的应用和服务场景所面临的需要解决的问题。
发明内容
本公开的目的是提供一种GPU显存管理方法和系统,存储介质和电子设备,以节省GPU显存空间,提升应用性能。
为了实现上述目的,本公开提供一种GPU显存管理方法,所述GPU显存管理方法包括:
获取上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔;
若所述时间间隔大于预设时长,则触发执行去重任务;
响应于触发执行去重任务,确定所述GPU显存中是否存在待去重检测的数据块;
在所述GPU显存中存在所述待去重检测的数据块的情况下,确定所述待去重检测的数据块的哈希值;
响应于根据所述哈希值确定所述待去重检测的数据块为去重对象,对所述待去重检测的数据块进行去重处理;
在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,中断所述去重任务。
可选地,所述响应于检测到应用程序访问所述GPU,中断所述去重任务,包括:
响应于检测到应用程序访问所述GPU,生成去重中断指令;
在检测到所述去重中断指令的情况下,停止所述去重任务;
所述GPU显存管理方法还包括:
在所述去重任务停止的情况下,响应应用程序的操作。
可选地,在所述对所述待去重检测的数据块进行去重处理之前,包括:
判断是否检测到去重中断指令;
所述对所述待去重检测的数据块进行去重处理,包括:
在未检测到所述去重中断指令的情况下,对所述待去重检测的数据块进行去重处理。
可选地,通过如下方式判断所述待去重检测的数据块是否为所述去重对象:
判断是否记录有与所述哈希值相同的历史哈希值,所述历史哈希值是已去重检测的数据块的哈希值;
若记录有与所述哈希值相同的历史哈希值,则将所述待去重检测的数据块确定为所述去重对象。
可选地,所述GPU显存管理方法还包括:
若未记录有与所述哈希值相同的历史哈希值,则将所述哈希值标记为历史哈希值,并将所述待去重检测的数据块标记为已去重检测的数据块。
可选地,所述对所述待去重检测的数据块进行去重处理,包括:
确定所述待去重检测的数据块对应的相关信息,所述相关信息包括虚拟地址、与所述虚拟地址具有映射关系的物理地址;
将所述虚拟地址重映射到目标物理地址,所述目标物理地址是与所述哈希值相同的历史哈希值所对应的数据块的物理存储地址;
释放所述物理地址对应的显存资源;
根据重映射结果更新所述相关信息,并将所述待去重检测的数据块标记为已去重检测的数据块。
可选地,所述GPU显存管理方法还包括:
在触发执行去重任务的情况下,通知应用程序已触发执行去重任务。
本公开还提供一种GPU显存管理系统,所述GPU显存管理系统包括设备监测服务、虚拟设备、以及显存去重服务,所述设备监测服务包括触发模块和设备状态管理模块,所述虚拟设备包括显存去重模块、设备监测模块、以及中断模块,所述显存去重服务包括显存信息管理模块;
所述触发模块,用于通过所述设备状态管理模块确定上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔;若所述时间间隔大于预设时长,则通知所述显存去重模块触发执行去重任务;
所述显存去重模块,用于响应于触发执行去重任务,确定所述GPU显存中是否存在待去重检测的数据块;在所述GPU显存中存在所述待去重检测的数据块的情况下,确定所述待去重检测的数据块的哈希值;
所述显存去重服务,用于基于所述显存信息管理模块根据所述哈希值确定所述待去重检测的数据块为去重对象;
所述显存去重模块,还用于对所述待去重检测的数据块进行去重处理;
所述设备监测模块,用于在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,指示所述中断模块中断所述去重任务。
可选地,所述虚拟设备还包括显存管理模块,所述设备监测模块用于在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,指示所述中断模块生成所述去重中断指令;
所述显存去重模块,用于在检测到所述去重中断指令的情况下,停止所述去重任务;
所述显存管理模块,用于在所述去重任务停止的情况下,响应应用程序的操作。
可选地,所述显存去重模块,用于在所述对所述待去重检测的数据块进行去重处理之前,判断是否检测到去重中断指令;在未检测到所述去重中断指令的情况下,对所述待去重检测的数据块进行去重处理。
可选地,所述显存去重服务,用于通过如下方式判断所述待去重检测的数据块是否为所述去重对象:判断所述显存信息管理模块中是否记录有与所述哈希值相同的历史哈希值,所述历史哈希值是已去重检测的数据块的哈希值;若记录有与所述哈希值相同的历史哈希值,则将所述待去重检测的数据块确定为所述去重对象。
可选地,所述显存去重服务,用于在所述显存信息管理模块中未记录有与所述哈希值相同的历史哈希值时,将所述哈希值标记为历史哈希值,并将所述待去重检测的数据块标记为已去重检测的数据块。
可选地,所述显存去重模块,用于确定所述待去重检测的数据块对应的相关信息,所述相关信息包括虚拟地址、与所述虚拟地址具有映射关系的物理地址;将所述虚拟地址重映射到目标物理地址,所述目标物理地址是与所述哈希值相同的历史哈希值所对应的数据块的物理存储地址;释放所述物理地址对应的显存资源;根据重映射结果更新所述相关信息,并将所述待去重检测的数据块标记为已去重检测的数据块。
可选地,所述触发模块,用于在触发执行去重任务的情况下,通知应用程序已触发执行去重任务。
本公开还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述任一项所述的GPU显存管理方法的步骤。
本公开还提供一种电子设备,包括:存储器,其上存储有计算机程序;处理器,用于执行所述存储器中的所述计算机程序,以实现前述任一项所述的GPU显存管理方法的步骤。
采用上述技术方案,至少可以达到如下的有益技术效果:
通过获取上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔,在该时间间隔大于预设时长的情况下触发执行去重任务,并在确定GPU显存中存在待去重检测的数据块的情况下,进一步识别出去重对象以进行去重处理。本公开这种方式在不影响应用正常性能的前提下,通过自适应的处理,识别出应用的无负载时间和显存中的重复数据,并实现自动的GPU显存内容去重,从而节省GPU显存空间,提升应用性能。并且,本公开这种方式在执行去重任务的情况下,响应于检测到应用程序访问GPU,中断去重任务,这可以保障用户的应用程序的性能。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开一示例性实施例示出的一种GPU显存管理方法的流程图。
图2是根据本公开一示例性实施例示出的一种GPU显存管理系统的框图。
图3是根据本公开一示例性实施例示出的另一种GPU显存管理系统的框图。
图4是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
相关技术中,有多种方法可以扩充显存资源。一种是使用的统一内存(managedmemory),这种内存使用统一内存的方式,将显存和内存进行统一地址编码,并使用一段内存用于存储数据。当GPU需要访问对应地址的数据时,则将内存中的数据换入到显存中,使用类似于Linux系统缺页处理的方式实现逻辑显存容量的提升。但是这种处理方式会带来额外的数据传输开销,导致性能下降。
另一种方式是使用锁页内存(pinned memory),然后通过直接内存访问(DirectMemory Access, DMA)的方式从GPU上直接访问内存数据。这种模式下,性能会相较于managed memory方式有一定提升,但是仍然会带来一定的性能下降。
无论是Managed Memory方式,还是Pinned Memory方式,其本质是使用内存来替代显存,通过这些方式来扩展显存。但是,在进行计算时,GPU仍然需要访问这些数据,访问性能上的差异可能会导致应用性能下降。因此,本公开提出使用去重的技术来节省显存空间。尤其是针对预测类任务,多个应用实例加载的模型大量数据是相同的场景适用。然而,由于使用GPU的应用一般对性能要求较高,直接使用去重技术,可能会带来额外的开销,导致应用的性能下降。
有鉴于此,本公开实施例针对当前的使用场景中GPU显存受限,不能满足需求的情况,结合应用场景,提出了一种GPU显存管理方法和系统,存储介质和电子设备,以在不影响应用正常性能的前提下,通过自适应的处理,识别出应用的无负载时间和显存中的重复数据,实现自动的GPU显存内容去重处理,从而节省GPU显存空间,提升应用性能。
图1是根据本公开一示例性实施例示出的一种GPU显存管理方法的流程图,该GPU显存管理方法全部或部分的应用于包括GPU的电子设备,GPU包括显存。如图1所示,该GPU显存管理方法可以包括以下步骤。
步骤S101,获取上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔。
在一些实施例中,上一次应用程序操作GPU的时间点是指最近一次应用程序操作GPU的时间点。其中,应用程序可以是AI应用程序、图形处理应用程序等。应用程序的数量、种类均可以为一个或多个。
可选地,检测当前是否正在执行去重任务,若当前有正在执行的去重任务,则继续执行该去重任务,并持续检测当前是否正在执行去重任务。若当前没有正在执行的去重任务,则执行步骤S101。
步骤S102,若所述时间间隔大于预设时长,则触发执行去重任务。
在一些实施例中,预设时长为经验值,可以根据需求进行设置。
在另一些实施例中,可以通过统计历史时间段内,应用程序访问GPU显存的时间间隔的均值,并根据该均值确定预设时长。示例地,假设均值为n,预设时长可以为n+1。
在一些实施例中,在时间间隔大于预设时长的情况下,很大概率意味着电子设备长时间处于空闲状态,即处于应用程序的无负载状态,因此可以在此情况下触发执行去重任务,避免因执行去重任务而降低应用性能的问题。
可选地,若时间间隔小于或等于预设时长,则不触发执行去重任务,并持续检测当前是否正在执行去重任务。
步骤S103,响应于触发执行去重任务,确定所述GPU显存中是否存在待去重检测的数据块。
在一些实施例中,在触发执行去重任务时,可判断GPU显存中是否存在待去重检测的数据块,判断方式可以是搜索GPU显存中是否存在被标记为待去重检测的数据块。
在一些实施例中,在触发执行去重任务时,还可通知应用程序已触发执行去重任务,便于应用程序决策操作GPU显存的时间。
步骤S104,在所述GPU显存中存在所述待去重检测的数据块的情况下,确定所述待去重检测的数据块的哈希值。
在一些实施例中,待去重检测的数据块的数量为一个或多个。
应说明的是,此处计算哈希值的方法可以有多种,如xxHash,该xxHash是相关技术中的一种非常快的非密码散列算法。本公开不限定哈希算法的种类。
步骤S105,响应于根据所述哈希值确定所述待去重检测的数据块为去重对象,对所述待去重检测的数据块进行去重处理。
可选地,通过如下方式判断待去重检测的数据块是否为去重对象:判断是否记录有与哈希值相同的历史哈希值,其中,历史哈希值是已去重检测的数据块的哈希值;若记录有与哈希值相同的历史哈希值,则将待去重检测的数据块确定为去重对象。若未记录有与哈希值相同的历史哈希值,则将哈希值标记为历史哈希值,并将待去重检测的数据块标记为已去重检测的数据块。可选地,针对新的被标记的历史哈希值和已去重检测的数据块进行存储/记录,例如可存储/记录至数据库中。
示例地,假设有待去重检测的数据块A,且历史哈希值包括a、d、e。那么,可确定待去重检测的数据块A的哈希值为a’,并判断记录有与哈希值a’相同的历史哈希值a,如此可将待去重检测的数据块A确定为去重对象。对待去重检测的数据块A进行去重处理。
示例地,假设有待去重检测的数据块B,且历史哈希值包括a、d、e。那么,可确定待去重检测的数据块B的哈希值为b’,并判断未记录有与哈希值b’相同的历史哈希值,如此可将哈希值b’标记为历史哈希值b,并将待去重检测的数据块B标记为已去重检测的数据块。此种情况下,历史哈希值包括a、b、d、e。
步骤S106,在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,中断所述去重任务。
本公开的上述GPU显存管理方法,通过获取上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔,在该时间间隔大于预设时长的情况下触发执行去重任务,并在确定GPU显存中存在待去重检测的数据块的情况下,可进一步识别出去重对象以进行去重处理。本公开这种方式在不影响应用正常性能的前提下,通过自适应的处理,识别出应用的无负载时间和显存中的重复数据,并实现自动的GPU显存内容去重,从而节省GPU显存空间,提升GPU显存利用率,提升应用性能,支撑运行更多应用程序。并且,本公开这种方式在执行去重任务的情况下,响应于检测到应用程序访问GPU,中断去重任务,这可以保障用户的应用程序的性能。
可选地,在对待去重检测的数据块进行去重处理之前,可以包括:判断是否检测到去重中断指令。相应地,对待去重检测的数据块进行去重处理的操作是在未检测到去重中断指令的情况下进行的。
可选地,对待去重检测的数据块进行去重处理的实施方式可以是:确定待去重检测的数据块对应的相关信息,其中,相关信息包括虚拟地址、与虚拟地址具有映射关系的物理地址。将虚拟地址重映射到目标物理地址,其中,目标物理地址是与哈希值相同的历史哈希值所对应的数据块的物理存储地址。释放物理地址对应的显存资源。根据重映射结果更新相关信息,并将待去重检测的数据块标记为已去重检测的数据块。
此处应说明的是,本公开对待去重检测的数据块进行去重处理的过程中各个步骤之间的先后顺序不限定,例如,可将待去重检测的数据块标记为已去重检测的数据块,并同时确定该待去重检测的数据块对应的相关信息。
在一些实施例中,待去重检测的数据块A对应的相关信息除了包括数据块A对应的虚拟地址和物理地址之外,还可以包括数据块A的索引、哈希值a’、地址长度等。
示例地,对待去重检测的数据块A进行去重处理的过程包括:
首先,解除数据块A对应的虚拟地址addr1和物理地址addr2之间的映射/绑定关系。接着,绑定虚拟地址addr1和目标物理地址addr3之间的映射/绑定关系。进一步地,释放物理地址addr2对应的显存资源。根据重映射结果更新相关信息,更新后的相关信息包括虚拟地址addr1和目标物理地址addr3之间的映射关系。最后将待去重检测的数据块A标记为已去重检测的数据块。
可选地,响应于检测到应用程序访问GPU,中断去重任务包括:在执行去重任务的情况下,响应于检测到应用程序访问GPU显存,生成去重中断指令。在检测到去重中断指令的情况下,停止去重任务。GPU显存管理方法还包括:在去重任务停止的情况下,响应应用程序的操作。
中断去重任务可理解为暂停、停止、结束去重任务。
其中,应用程序的操作包括显存管理操作,例如显存的分配操作、显存的释放操作等。
示例地,在执行去重任务的情况下,响应于检测到应用程序访问GPU或GPU显存,生成去重中断指令。在检测到生成了去重中断指令的情况下,停止去重任务。检测去重任务是否停止,在去重任务停止的情况下,响应应用程序的操作。在去重任务未停止的情况下,继续等待,直到去重任务停止或结束的情况下,响应应用程序的操作。
本公开上述GPU显存管理方法可以自动检测应用程序对GPU的使用状态,并在合适的时机选择触发执行针对GPU显存的去重任务。同时,该GPU显存管理方法可以细粒度的控制用户的应用程序与去重任务之间的竞争,保障用户的应用程序的性能。此外本公开上述GPU显存管理方法还可以有效解决多进程应用程序在去重时的相互影响,即本公开上述GPU显存管理方法适用于多进程应用场景,从而实现更加广阔的应用前景。
图2是根据本公开一示例性实施例示出的一种GPU显存管理系统的框图,如图2所示,GPU显存管理系统200包括设备监测服务201、虚拟设备202、以及显存去重服务203,所述设备监测服务201包括触发模块和设备状态管理模块,所述虚拟设备202包括显存去重模块、设备监测模块、以及中断模块,所述显存去重服务203包括显存信息管理模块;
所述触发模块,用于通过所述设备状态管理模块确定上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔;若所述时间间隔大于预设时长,则通知所述显存去重模块触发执行去重任务;
所述显存去重模块,用于响应于触发执行去重任务,确定所述GPU显存中是否存在待去重检测的数据块;在所述GPU显存中存在所述待去重检测的数据块的情况下,确定所述待去重检测的数据块的哈希值;
所述显存去重服务203,用于基于所述显存信息管理模块根据所述哈希值确定所述待去重检测的数据块为去重对象;
所述显存去重模块,还用于对所述待去重检测的数据块进行去重处理;
所述设备监测模块,用于在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,指示所述中断模块中断所述去重任务。
采用上述GPU显存管理系统200,通过获取上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔,在该时间间隔大于预设时长的情况下触发执行去重任务,并在确定GPU显存中存在待去重检测的数据块的情况下,进一步识别出去重对象以进行去重处理。本公开这种方式在不影响应用正常性能的前提下,通过自适应的处理,识别出应用的无负载时间和显存中的重复数据,并实现自动的GPU显存内容去重,从而节省GPU显存空间,提升应用性能。并且,本公开这种方式在执行去重任务的情况下,响应于检测到应用程序访问GPU,中断去重任务,这可以保障用户的应用程序的性能。
可选地,所述虚拟设备还包括显存管理模块,所述设备监测模块用于在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,指示所述中断模块生成所述去重中断指令;
所述显存去重模块,用于在检测到所述去重中断指令的情况下,停止所述去重任务;
所述显存管理模块,用于在所述去重任务停止的情况下,响应应用程序的操作。
可选地,所述显存去重模块,用于在所述对所述待去重检测的数据块进行去重处理之前,判断是否检测到去重中断指令;在未检测到所述去重中断指令的情况下,对所述待去重检测的数据块进行去重处理。
可选地,所述显存去重服务203,用于通过如下方式判断所述待去重检测的数据块是否为所述去重对象:判断所述显存信息管理模块中是否记录有与所述哈希值相同的历史哈希值,所述历史哈希值是已去重检测的数据块的哈希值;若记录有与所述哈希值相同的历史哈希值,则将所述待去重检测的数据块确定为所述去重对象。
可选地,所述显存去重服务203,用于在所述显存信息管理模块中未记录有与所述哈希值相同的历史哈希值时,将所述哈希值标记为历史哈希值,并将所述待去重检测的数据块标记为已去重检测的数据块。
可选地,所述显存去重模块,用于确定所述待去重检测的数据块对应的相关信息,所述相关信息包括虚拟地址、与所述虚拟地址具有映射关系的物理地址;将所述虚拟地址重映射到目标物理地址,所述目标物理地址是与所述哈希值相同的历史哈希值所对应的数据块的物理存储地址;释放所述物理地址对应的显存资源;根据重映射结果更新所述相关信息,并将所述待去重检测的数据块标记为已去重检测的数据块。
可选地,所述触发模块,用于在触发执行去重任务的情况下,通知应用程序已触发执行去重任务。
关于上述实施例中的GPU显存管理系统,其中各个模块或服务执行操作的具体方式已经在有关GPU显存管理方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图3是根据本公开实施例示出的另一种GPU显存管理系统的框图。如图3所示,GPU显存管理系统200包括设备监测模块、设备监测服务201以及显存管理模块、显存去重服务203等多个模块。为了实现对GPU显存的管理,本发明在物理设备/电子设备/节点之上,添加了虚拟设备202。用户进程即应用程序通过虚拟设备202访问物理设备,该物理设备包括GPU显存。在虚拟设备202内部,我们添加了多个模块,包括显存管理模块、设备监测模块、中断模块、显存去重模块、以及通信模块。其中,显存管理模块用于记录显存的使用状况以及去重状况等基本信息;设备监测模块用于监测进程对虚拟设备的访问,并将监测到的信息通过通信模块传递给设备监测服务201,用于全局管理。中断模块用于在应用程序访问虚拟设备202时,快速通知显存去重模块结束去重任务,避免影响用户的应用程序的执行。显存去重模块用于执行整个去重任务。通信模块用于和其他的服务或模块进行通信。此外,我们在节点上还添加了设备监测服务201,用于监测当前节点上的访问状况,并基于访问状况决定是否触发去重处理。显存去重服务203用于管理全局的信息。由于去重是跨进程的,因此需要统一的服务来对全局的显存信息进行管理。
下面结合图3所示的GPU显存管理系统200说明如何生成并记录数据。
在用户的应用程序通过虚拟设备202访问物理设备时,设备监测模块会记录应用程序对物理设备的访问,并将访问信息通过通信模块传递到设备监测服务201上。设备监测服务201会将访问记录加入到设备状态管理模块,后续流程中,会基于设备状态触发去重任务。同时,当应用程序对物理设备的操作是显存管理操作时,如显存的分配操作,释放操作等,则在显存管理模块中记录显存的相关信息,用于在后续去重处理时使用。此处的记录和处理仅记录简单的显存信息,如地址,长度等,而不处理其中的数据内容,以避免负载较大影响性能。
在记录数据之后,当物理设备/电子设备/节点空闲时,设备监测服务201会触发显存的去重流程。具体地,触发模块会持续检查物理设备状态,尝试触发去重任务。若当前已处于去重的状态,则继续检查。若未处于去重的状态,则通过设备状态管理模块检查物理设备的上次访问时间到当前时间之间的时间间隔是否超过了设定时间。若超过设定时间,意味着物理设备长时间处于空闲状态,则可以在此时执行去重任务。此时,触发模块会触发去重任务,并通过通信模块与用户进程即应用程序通信,通知用户进程显存去重模块开始执行去重任务。显存去重模块在收到去重任务后会执行去重任务。
显存去重模块首先检索本地的显存信息,确认是否存在未进行去重处理的数据块,即是否存在待去重检测的数据块。若所有数据块均已进行去重处理,则直接结束去重任务。
若仍存在可进行去重的显存,则计算显存中数据块的哈希值,此处计算方法可以有多种,如xxHash等。随后,显存去重模块将待去重检测的数据块的相关信息发送到显存去重服务203中,进行全局的可去重查询。在显存去重服务203中,会检索服务中记录的显存信息,确认是否存在内容相同的数据块。若不存在内容相同的数据块,则将该待去重检测的数据块的相关信息添加到数据库中进行存储记录。若存在相同的数据块,表明该待去重检测的数据块可以进行去重操作,则将该待去重检测的数据块的相关信息返回,并标记可以进行去重操作。显存去重模块在收到可以去重的信息后,先判断当前的去重任务是否已经被中断。若被中断,则停止去重任务;否则,则基于返回的该待去重检测的数据块的相关信息和标记进行去重操作,其具体操作内容包括几个步骤:1是地址重映射;即将地址信息,映射到已有的内容相同的数据块上;在这里,为了实现跨进程的去重,可以使用相关技术中提供的跨进程通信功能,如IPC类资源共享,实现将数据块共享到当前进程中。2是释放显存资源,即在地址重映射完成后,释放本地的显存资源;3是更新记录;通知本地显存管理模块和显存信息管理模块更新当前显存数据块的信息,将其标记为已去重,且记录当前映射的数据块信息。
对当前待去重检测的数据块去重完成后,继续去重任务,重新检索是否还存在可以去重的数据,循环执行。
此外,本公开的GPU显存管理方法还支持快速中断去重流程,以快速停止去重流程,恢复用户的应用程序执行,保障应用程序执行效率。具体地,当用户的应用程序访问物理设备时,会判断物理设备是否处于去重流程,若未处于去重流程,则直接执行用户的应用程序的操作。若处于去重流程,则触发中断。同时,观察去重任务是否已停止。若去重任务停止,则直接执行应用程序的操作。否则,等待去重任务结束,然后再执行应用程序的操作。该中断流程只会在用户程序启动的瞬间触发,在整个应用程序的执行过程中触发频率低,对整个应用程序的性能影响有限。
应说明的是,在一些实施例中,显存去重服务203可以与设备监测服务201和虚拟设备202设置在同一电子设备上。在另一些实施例中,设备监测服务201和虚拟设备202设置在同一电子设备上,而显存去重服务203设置在另一电子设备上,例如显存去重服务203设置在远端,远端例如是服务器。
图4是根据本公开一示例性实施例示出的一种电子设备700的框图。如图4所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的GPU显存管理方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的GPU显存管理方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的GPU显存管理方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的GPU显存管理方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的GPU显存管理方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (9)

1.一种GPU显存管理方法,其特征在于,所述GPU显存管理方法包括:
获取上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔;
若所述时间间隔大于预设时长,则触发执行去重任务;
响应于触发执行去重任务,确定所述GPU显存中是否存在待去重检测的数据块;
在所述GPU显存中存在所述待去重检测的数据块的情况下,确定所述待去重检测的数据块的哈希值;
响应于根据所述哈希值确定所述待去重检测的数据块为去重对象,对所述待去重检测的数据块进行去重处理;
在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,中断所述去重任务;
所述响应于检测到应用程序访问所述GPU,中断所述去重任务,包括:
响应于检测到应用程序访问所述GPU,生成去重中断指令;
在检测到所述去重中断指令的情况下,停止所述去重任务;
所述GPU显存管理方法还包括:
在所述去重任务停止的情况下,响应应用程序的操作。
2.根据权利要求1所述的GPU显存管理方法,其特征在于,在所述对所述待去重检测的数据块进行去重处理之前,包括:
判断是否检测到所述去重中断指令;
所述对所述待去重检测的数据块进行去重处理,包括:
在未检测到所述去重中断指令的情况下,对所述待去重检测的数据块进行去重处理。
3.根据权利要求1或2所述的GPU显存管理方法,其特征在于,通过如下方式判断所述待去重检测的数据块是否为所述去重对象:
判断是否记录有与所述哈希值相同的历史哈希值,所述历史哈希值是已去重检测的数据块的哈希值;
若记录有与所述哈希值相同的历史哈希值,则将所述待去重检测的数据块确定为所述去重对象。
4.根据权利要求3所述的GPU显存管理方法,其特征在于,所述GPU显存管理方法还包括:
若未记录有与所述哈希值相同的历史哈希值,则将所述哈希值标记为历史哈希值,并将所述待去重检测的数据块标记为已去重检测的数据块。
5.根据权利要求3所述的GPU显存管理方法,其特征在于,所述对所述待去重检测的数据块进行去重处理,包括:
确定所述待去重检测的数据块对应的相关信息,所述相关信息包括虚拟地址、与所述虚拟地址具有映射关系的物理地址;
将所述虚拟地址重映射到目标物理地址,所述目标物理地址是与所述哈希值相同的历史哈希值所对应的数据块的物理存储地址;
释放所述物理地址对应的显存资源;
根据重映射结果更新所述相关信息,并将所述待去重检测的数据块标记为已去重检测的数据块。
6.根据权利要求1或2所述的GPU显存管理方法,其特征在于,所述GPU显存管理方法还包括:
在触发执行去重任务的情况下,通知应用程序已触发执行去重任务。
7.一种GPU显存管理系统,其特征在于,所述GPU显存管理系统包括设备监测服务、虚拟设备、以及显存去重服务,所述设备监测服务包括触发模块和设备状态管理模块,所述虚拟设备包括显存去重模块、设备监测模块、以及中断模块,所述显存去重服务包括显存信息管理模块;
所述触发模块,用于通过所述设备状态管理模块确定上一次应用程序操作GPU的时间点与当前时间点之间的时间间隔;若所述时间间隔大于预设时长,则通知所述显存去重模块触发执行去重任务;
所述显存去重模块,用于响应于触发执行去重任务,确定所述GPU显存中是否存在待去重检测的数据块;在所述GPU显存中存在所述待去重检测的数据块的情况下,确定所述待去重检测的数据块的哈希值;
所述显存去重服务,用于基于所述显存信息管理模块根据所述哈希值确定所述待去重检测的数据块为去重对象;
所述显存去重模块,还用于对所述待去重检测的数据块进行去重处理;
所述设备监测模块,用于在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,指示所述中断模块中断所述去重任务;
所述虚拟设备还包括显存管理模块,所述设备监测模块用于在执行所述去重任务的情况下,响应于检测到应用程序访问所述GPU,指示所述中断模块生成去重中断指令;
所述显存去重模块,用于在检测到所述去重中断指令的情况下,停止所述去重任务;
所述显存管理模块,用于在所述去重任务停止的情况下,响应应用程序的操作。
8.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述的GPU显存管理方法的步骤。
9.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-6中任一项所述的GPU显存管理方法的步骤。
CN202311801542.4A 2023-12-25 2023-12-25 Gpu显存管理方法和系统,存储介质和电子设备 Active CN117453423B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311801542.4A CN117453423B (zh) 2023-12-25 2023-12-25 Gpu显存管理方法和系统,存储介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311801542.4A CN117453423B (zh) 2023-12-25 2023-12-25 Gpu显存管理方法和系统,存储介质和电子设备

Publications (2)

Publication Number Publication Date
CN117453423A CN117453423A (zh) 2024-01-26
CN117453423B true CN117453423B (zh) 2024-04-19

Family

ID=89595201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311801542.4A Active CN117453423B (zh) 2023-12-25 2023-12-25 Gpu显存管理方法和系统,存储介质和电子设备

Country Status (1)

Country Link
CN (1) CN117453423B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106569745A (zh) * 2016-10-25 2017-04-19 暨南大学 一种内存过载下面向重复数据删除的内存优化系统
CN107070897A (zh) * 2017-03-16 2017-08-18 杭州安恒信息技术有限公司 入侵检测系统中基于多属性哈希去重的网络日志存储方法
CN111602377A (zh) * 2017-12-27 2020-08-28 华为技术有限公司 高速缓存中资源调整方法、数据访问方法及装置
CN111611463A (zh) * 2020-04-21 2020-09-01 天津大学 一种基于Scrapy-Redis的分布式网络爬虫优化方法
CN116501249A (zh) * 2023-03-30 2023-07-28 华中科技大学 一种减少gpu内存重复数据读写的方法及相关设备
CN116719753A (zh) * 2023-04-28 2023-09-08 北京奕斯伟计算技术股份有限公司 数据处理设备、数据处理方法和计算机可读存储介质
WO2023173954A1 (zh) * 2022-03-15 2023-09-21 北京有竹居网络技术有限公司 数据获取方法、装置、存储介质以及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106569745A (zh) * 2016-10-25 2017-04-19 暨南大学 一种内存过载下面向重复数据删除的内存优化系统
CN107070897A (zh) * 2017-03-16 2017-08-18 杭州安恒信息技术有限公司 入侵检测系统中基于多属性哈希去重的网络日志存储方法
CN111602377A (zh) * 2017-12-27 2020-08-28 华为技术有限公司 高速缓存中资源调整方法、数据访问方法及装置
CN111611463A (zh) * 2020-04-21 2020-09-01 天津大学 一种基于Scrapy-Redis的分布式网络爬虫优化方法
WO2023173954A1 (zh) * 2022-03-15 2023-09-21 北京有竹居网络技术有限公司 数据获取方法、装置、存储介质以及电子设备
CN116501249A (zh) * 2023-03-30 2023-07-28 华中科技大学 一种减少gpu内存重复数据读写的方法及相关设备
CN116719753A (zh) * 2023-04-28 2023-09-08 北京奕斯伟计算技术股份有限公司 数据处理设备、数据处理方法和计算机可读存储介质

Also Published As

Publication number Publication date
CN117453423A (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
CN107832100B (zh) 一种apk插件的加载方法及其终端
KR102069940B1 (ko) 페이지 기반 압축 저장 관리
US11907561B2 (en) Data backup method and apparatus
US10083113B2 (en) Scheme for determining data object usage in a memory region
CN110780823B (zh) 小对象内存管理方法、装置、电子设备和计算机可读介质
JP2006351004A (ja) 携帯端末機のメモリ管理方法
JP2014529142A (ja) 循環グラフにおけるオブジェクト寿命の管理
CN103473142A (zh) 一种云计算操作系统下的虚拟机迁移方法及装置
CN104657378A (zh) 一种文件缓存方法及装置
CN111258967A (zh) 文件系统中数据读取方法、装置及计算机可读存储介质
EP4116820A1 (en) Data recovery method and apparatus
CN105095495A (zh) 一种分布式文件系统缓存管理方法和系统
CN114168490A (zh) 确定内存回收阈值的方法及相关设备
CN117453423B (zh) Gpu显存管理方法和系统,存储介质和电子设备
CN112631994A (zh) 数据迁移方法及系统
CN109286532B (zh) 云计算系统中告警信息的管理方法和装置
JP6354387B2 (ja) 情報処理装置、情報処理システム及び割込装置制御方法
CN114115750B (zh) 一种应用于全闪存存储的缓存方法和装置
CN109426563B (zh) 一种进程管理方法及装置
US9542318B2 (en) Temporary cache memory eviction
CN111090627B (zh) 基于池化的日志存储方法、装置、计算机设备及存储介质
CN112783835A (zh) 索引管理方法、装置及电子设备
CN110968258B (zh) 存储盘的控制方法及设备
CN108920628B (zh) 一种适配大数据平台的分布式文件系统访问方法及装置
CN117573397B (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
GR01 Patent grant
GR01 Patent grant