CN109697114B - 用于应用迁移的方法和机器 - Google Patents
用于应用迁移的方法和机器 Download PDFInfo
- Publication number
- CN109697114B CN109697114B CN201710983298.6A CN201710983298A CN109697114B CN 109697114 B CN109697114 B CN 109697114B CN 201710983298 A CN201710983298 A CN 201710983298A CN 109697114 B CN109697114 B CN 109697114B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- special purpose
- purpose processing
- application
- memory
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了用于应用迁移的方法和机器。在一个实施例中,从第一专用处理单元获取与正在第一专用处理单元上运行的应用的运行环境相关联的第一描述符。响应于确定应用要在运行过程中从第一专用处理单元被迁移到第二专用处理单元,促使第二专用处理单元创建与用于应用的运行环境相关联的第二描述符。继而,从第二专用处理单元获取第二描述符,并且建立第一描述符到第二描述符的第一映射,以用于将来自应用的针对第一专用处理单元的请求重定向到第二专用处理单元。还公开了实施该方法的相应的机器。
Description
技术领域
本公开的实施例总体上涉及计算机技术,更具体地,涉及用于应用迁移的方法和机器。
背景技术
如今越来越多的公共云为高性能计算(HPC)、机器学习(ML)或深度学习(DL)、人工智能(AI)等新兴计算场景中的数据处理和分析等任务提供图形处理单元(GPU)实例。这些GPU实例可以灵活配置并且易于扩展,从而可以为本地客户端或者计算设备提供较具弹性的计算服务。
为了使云端的GPU实例能够更好地服务于上述新兴计算场景,已经提出了一种智能且优化的基础设施,其中允许GPU加速器、现场可编程门阵列(FPGA)加速器等现代加速器像中央处理单元(CPU)和存储设备一样作为基础架构的组成部分,成为现代数据中心或者云中第一等级的可管理资源。特别地,还提出了GPU作为服务(GPUaaS)的解决方案,其可以基于远程直接内存访问(RDMA)或传输控制协议(TCP)的组织架构并且基于客户端-服务器软件来实现。这种解决方案可以在远程服务器上为客户端提供池化和远程虚拟化的GPU资源。
在这样的GPU部署场景中,来自相同或不同客户端的多个应用可以被调度在同一GPU中运行。在这种情况下,如果可以考虑GPU负载、应用的服务质量(QoS)要求、或者资源利用率等因素而使运行中的应用在GPU之间动态迁移,则系统的整体性能可以被显著提高。
发明内容
总体上,本公开的实施例提出了用于应用迁移的方法和机器。
在第一方面,本公开的实施例提供了一种用于应用迁移的方法。该方法包括:从第一专用处理单元获取与正在所述第一专用处理单元上运行的应用的运行环境相关联的第一描述符;响应于确定所述应用要在运行过程中从所述第一专用处理单元被迁移到第二专用处理单元,促使所述第二专用处理单元创建与用于所述应用的运行环境相关联的第二描述符;从所述第二专用处理单元获取所述第二描述符;以及建立所述第一描述符到所述第二描述符的第一映射,以用于将来自所述应用的针对所述第一专用处理单元的请求重定向到所述第二专用处理单元。
在第二方面,本公开的实施例提供了一种用于应用迁移的机器。该机器包括中央处理单元以及存储有指令的存储器。该指令在被中央处理单元执行时促使中央处理单元执行根据第一方面的方法。
在第三方面,本公开的实施例提供了一种非瞬态计算机可读介质,其上有形地存储机器可执行指令。该机器可执行指令在机器中被执行时,使机器执行根据第一方面的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本公开的实施例可以在其中被实现的计算系统的示意图;
图2根据本公开的某些实施例的计算系统的示意图;
图3示出了根据本公开的某些实施例的机器中的迁移模块与专用处理单元之间的通信和处理过程;
图4示出了根据本公开的某些实施例的迁移模块的框图;
图5示出了根据本公开的某些实施例的方法的流程图;
图6示出了根据本公开的某些其他实施例的方法的流程图;
图7示出了根据本公开的某些实施例的应用在迁移过程中的状态转移流程图;以及
图8示出了适合实现本公开的实施例的机器的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在此使用的术语“处理单元”可以是能够根据程序代码指令执行各种处理的任意适当物理或虚拟的处理器。处理单元可以包括一个或多个核。在包括多个核的情况下,多个核可以并行地操作,从而提高处理单元的处理效率。在本公开的上下文中,处理单元可以包括专用处理单元和通用处理单元。专用处理单元例如包括图形处理单元(GPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等等。通用处理单元例如包括中央处理单元(CPU)。为讨论方便,在某些实施例中将以GPU作为专用处理单元的示例进行描述。
在此使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
如上所述,已经提出了在数据中心或者云中部署供客户端远程使用的GPU的解决方案。图1示出了本公开的实施例可以在其中被实现的采用了上述解决方案的示例计算系统100的示意图。在该计算系统100中部署了用于应用运行的多个机器110-1、110-2和110-3等(以下统称或单独称为机器110)。机器110可以是物理的或虚拟的机器。例如,机器110可以是部署于数据中心或者私有或公共云中的逻辑、容器或虚拟机,或者物理的服务器或计算设备等等。每个机器110上可以具有一个或多个处理单元,包括诸如GPU、FPGA和ASIC等的专用处理单元以及诸如CPU的通用处理单元。
在图1的示例中,机器110-1具有两个专用处理单元112-1和112-2,机器110-2具有两个专用处理单元112-3和112-4,并且机器110-3具有三个专用处理单元112-5、112-6和112-7。这些专用处理单元在以下统称或单独称为专用处理单元112。除了专用处理单元112之外,机器110还可以包括一个或多个通用处理单元(未示出)。
图1还示出了三个客户端120-1、120-2和120-3(以下统称或单独称为客户端120),分别具有要运行的应用122-1、122-2和122-3(以下统称或单独称为应用122)。客户端120可以是任何终端设备、计算机或服务器。应用122可以是处理单元上可运行的任何应用,该应用可以被设计为执行相应数据处理或分析等任务。作为示例,应用122可以执行与高性能计算(HPC)、机器学习(ML)或深度学习(DL)以及人工智能(AI)等相关的数据处理或分析任务。
为了能够快速高效运行这些应用和/或为了保留本地处理资源,客户端120可以请求机器110的专用处理单元112来运行这些应用122。在这样的实现中,客户端120可以通过互连网络130连接到一个或多个机器110,并且将应用122交由机器110的一个或多个专用处理单元112运行。取决于客户端120、机器110和/或专用处理单元112所支持的接口,互连网络130可以支持基于诸如远程直接内存访问(RDMA)和传输控制协议(TCP)等各种网络传输技术的不同类型的有线或者无线连接。
在计算系统100中,多个专用处理单元112可以被池化或虚拟化,以供多个客户端120或其中的多个应用122使用。在客户端120中,可以呈现虚拟处理单元用于运行该客户端110的应用122,而该应用122实际由机器110侧的一个或多个专用处理单元112运行。客户端120可以根据需要请求专用处理单元112的使用。计算系统100中还包括调度器140,用于将客户端120的多个应用122调度到一个或多个机器110的一个或多个专用处理单元112上运行。而且,调度器140还可以将来自相同或不同客户端120的多个应用122调度到同一专用处理单元112上运行。
应当理解,图1示出的设备和/或布置仅是一个示例。在其他示例中,该计算系统100可以包括任意适当数目的机器110和客户端120。每个机器110可以安装有任意适当数目的专用处理单元112,并且每个客户端120可以具有待运行的多个应用122。此外,尽管被单独示出,调度器140在实际应用中可以由独立于机器110的其他设备实现,或者可以被部分或全部实现在一个或多个机器110上。
在计算系统100中,调度器140可以跨多个专用处理单元112对应用122进行调度,以实现专用处理单元112的动态负载平衡,从而提高系统的整体性能。调度器140还可以将多个应用110动态地整合到单个专用处理单元112中,以提高专用处理单元112的利用率,从而降低系统成本。而且,调度器140还可以为应用122提供基于QoS需求的调度,从而可以减小例如根据服务级别协议(SLA)具有较低级别的应用对其他较高级别应用的影响。
传统上,这种跨专用处理单元112对应用122进行的调度只能在应用122开始运行之前执行,而无法在应用122的运行过程中执行。发明人注意到,为了实现上述调度,可能需要对来自应用122的运行命令、应用122的资源需求或者应用122的运行时间进行预测。然而,这是非常困难的。
为了至少部分地解决上述问题以及其它潜在问题,本公开的实施例提供了一种在应用运行过程中对应用进行迁移的解决方案。具体而言,本公开的实施例提供了一种部署于机器中的迁移模块。当应用122要在机器110中的专用处理单元112之间被迁移时,迁移模块在与应用122在源专用处理单元中的运行环境相关联的描述符以及与目标专用处理单元创建的用于应用122的运行环境相关联的描述符之间建立映射。在本公开的上下文中,描述符也称为句柄,表示客户端可见的与应用程序接口(API)操作相关的参考对象。描述符的示例包括但不限于运行中的应用122所使用的设备描述符、流描述符、cuBlas句柄、cuDNN句柄等等。
通过这种映射,来自应用122的针对源专用处理单元的请求可以被重定向到目标专用处理单元,从而使得运行中的应用122能够透明地从一个专用处理单元被迁移到另一专用处理单元,而无需对应用进行更改。
迁移模块可以由硬件、软件或者其组合实现。作为示例,迁移模块可以由硬件驱动之上的基于主机的中间件来实现,以便利用从专用处理单元的驱动程序/库/API暴露的硬件功能来执行迁移。这种方式无需修改硬件的内部机制,灵活性较高。
下面参考图2和图3来说明本公开的实施例的基本原理和若干示例实现。图2示出了根据本公开的某些实施例的示例计算系统200。应理解,计算系统200是计算系统100的一个示例实现。在计算系统200中,客户端120中的应用122在开始运行时被调度器140调度为在机器110中的专用处理单元112-1(为便于讨论,称为第一专用处理单元112-1)上运行。
在例如根据来自调度器140的迁移请求而确定应用122要在运行过程中被迁移到专用处理单元112-2(为便于讨论,称为第二专用处理单元112-2)之后,机器110中的迁移模块210建立与应用122在第一专用处理单元112-1上的运行环境的相关联的描述符(称为“第一描述符”)到第二专用处理单元112-2为应用122创建的与运行环境相关联的描述符(称为“第二描述符”)之间的映射(称为“第一映射”)。利用第一映射,迁移模块210可以将应用122的针对第一专用处理单元112-1的请求重定向到第二专用处理单元112-2。
下面结合图3详细说明迁移模块210与第一专用处理单元112-1和第二专用处理单元112-2之间的通信和处理过程。在如图3所示的过程300中,迁移模块210从第一专用处理单元112-1获取(305)与应用122在第一专用处理单元112-1上的运行环境的相关联的第一描述符。迁移模块210可以任意适当方式实现第一描述符的上述获取。
作为示例,迁移模块210可以应用122开始运行之后,周期性地向第一专用处理单元112-1发送对于描述应用210的当前运行环境的第一描述符的请求。响应于接收到该请求,第一专用处理单元112-1可以向迁移模块210返回第一描述符。作为备选,第一专用处理单元112-1可以在没有接收来自迁移模块210的请求的情况下,自动周期性地向迁移模块210发送第一描述符。
在某些实施例中,迁移模块210可以将所获取的第一描述符存储机器110的存储设备中,例如存储在主机存储器中,以用于后续建立与第二描述符之间的第一映射,这方面的实施例将在后文描述。
如果迁移模块210确定(310)应用122要在运行过程中从第一专用处理单元112-1被迁移到第二专用处理单元112-2,则迁移模块210促使(315)第二专用处理单元112-2创建与用于应用的运行环境相关联的第二描述符。如上所述,迁移模块210可以例如响应于从调度器140接收到迁移请求而做出要执行上述迁移的确定。该迁移请求可以指示要被迁移的应用以及迁移的目的地。备选地,迁移模块210可以考虑专用处理单元的负载情况或资源利用率或者应用的QoS要求,而自己确定是否要执行该迁移。
在迁移模块210确定(310)要执行应用122的迁移之后,可以向第二专用处理单元112-2发送创建第二描述符的请求。响应于接收到该请求,第二专用处理单元112-2可以为应用122创建第二描述符。
接下来,迁移模块210从第二专用处理单元112-2获取(320)第二描述符,并且建立(325)第一描述符到第二描述符的第一映射。在迁移模块210将从第一专用处理单元112-1获取的第一描述符存储在存储器中的实施例中,迁移模块210可以在获得第二描述符之后从存储器中读取第一描述符,继而建立第一描述符到第二描述符的第一映射。
利用所建立的第一映射,迁移模块210可以将来自应用122的针对第一专用处理单元112-1的请求重定向到第二专用处理单元112-2。举例而言,在建立(325)了第一映射,迁移模块210可以确定是否拦截到应用122针对第一专用处理单元112-1的请求。如果拦截到这样的请求,迁移模块210可以基于第一映射将该请求重定向到第二专用处理单元112-2。
在某些实施例中,为了进一步减小对运行中的应用122的影响,迁移模块210可以在确定(310)应用122要被迁移之后就拦截应用122针对第一专用处理单元的请求,并且将拦截的请求冻结。例如,迁移模块210可以将拦截到的所有请求以队列的形式存储在机器110的主机存储器的公共存储区域或公共存储设备中,并且使第一专用处理单元112-1不对请求进行处理。在第一映射的建立(325)完成之后,迁移模块210可以将冻结的请求转发给第二专用处理单元112-2。在此之前,来自应用122的任何请求都被阻止,从而进一步减小迁移操作对应用122的影响。
为了支持应用122的运行,专用处理单元112除了要创建设备描述符、流描述符、cuBlas句柄、cuDNN句柄等等与运行环境相关联的描述符之外,通常还需要在应用122运行前的初始化过程中为应用122创建上下文。在某些实施例中,迁移模块210在确定(310)应用122要被迁移到第二专用处理单元112-2后,可以例如通过向第二专用处理单元112-2发送请求来促使第二专用处理单元112-2为应用122创建上下文。
在某些实施例中,在执行应用122的迁移时,迁移模块210还可以执行显式存储器复制或预取,以便将与应用122相关联的数据从用于第一专用处理单元112-1的存储器(称为“第一存储器”)迁移到用于第二专用处理单元112-2的存储器(称为“第二存储器”)。在某些实施例中,在执行存储器复制或预取之前,迁移模块210可以促使第一专用处理单元112-1对与应用122相关联的多个线程进行同步,以便进一步减小数据迁移对应用运行122的影响。
通常而言,在诸如GPU的专用处理单元中运行的应用包括数以百计的线程,其状态反映或者记录在相关寄存器或一级/二级(L1/L2)缓存中,而大数据可能存储在GPU动态随机访问存储器(GPU-DRAM)中。而且,包括存储在诸如双倍数据速率(DDR)存储器等的GPU全局存储器中的计算输入数据和中间结果等的数据集可能相对较大,例如几个GB(甚至通常高达16GB)。传统上,在缺乏硬件级别的本地支持的情况下,很难一致地捕获所有状态。
根据本公开的某些实施例,迁移模块210可以通过为第一专用处理单元112-1创建同步障碍,来促使第一专用处理单元112-1执行线程的同步。例如,迁移模块210可以通过cuSyncThread()或cuSyncCtx()等API为第一专用处理单元112-1创建同步障碍,从而强制地使应用122的多个线程运行到某个“同步点”。这种同步属于阻塞操作。上述同步操作执行之后,所有线程都达到一致状态。相关的数据被存储到第一专用处理单元112-1的第一存储器中。相应地,在同步完成之后,迁移模块210可以将第一专用处理单元112-1的第一存储器中的相关数据被迁移到第二专用处理单元112-2的第二存储器中。
在某些实施例中,在执行数据迁移之前,迁移模块210可以确定第一存储器中用于存储应用相关数据的存储区(称为“第一存储区”)的大小。例如,迁移模块210可以通过与第一专用处理器112-1交互来跟踪第一存储器的分配和空闲情况,以确定第一存储区的大小。
继而,迁移模块210可以促使第二专用处理单元112-2基于第一存储器的大小在第二存储器中分配相应的存储区(称为“第二存储区),以用于存储应用相关的数据。在某些实施例中,第二专用处理单元112-2可以分配与第一存储区相同大小的第二存储区。例如,第二专用处理单元112-2可以在分配了第二存储区的起始地址之后,为第二存储区分配与第一存储区相同的偏移量。在某些其他实施例中,第二专用处理单元112-2所分配的第二存储区可以大于第一存储区,以用于进一步存储应用122在第二专用处理单元112-2上运行时所产生的相关数据。
在确定第二存储区的分配完成之后(例如通过与第二专用处理单元112-2交互),迁移模块210可以将数据从第一存储区迁移到第二存储区。作为示例,迁移模块210可以通过诸如memcpyDeviceToHost()的API从第一存储区读取数据,然后通过memcpyHostToDevice()写入第二存储区。
作为备选,在机器110以及第一专用处理单元112-1和第二专用处理单元112-2支持专用处理单元之间的对等(P2P)通信的情况下,如果第一和第二专用处理单元112-1和112-2之间已经例如通过外围组件快速互连(PCIe)交换机而建立连接,迁移模块210可以通过诸如memcpyP2P(targetGPUAddr,srcGPUAddr,size)之类的API直接将数据从第一专用处理单元112-1的第一存储器移动到第二专用处理单元112-2的第二存储器。以此方式,可以绕过CPU以及中间复制,进一步提高系统性能。
在某些实施例中,迁移模块210可以建立与第一存储区和第二存储区的存储地址之间的映射,以用于将来自应用122的针对第一存储区的访问请求重定向到第二存储区。例如,迁移模块210可以从第一专用处理单元112-1获取与第一存储区相关联的存储地址(称为“第一存储地址”),并且从第二专用处理单元112-2获取与第二存储区相关联的第二存储地址。继而,迁移模块210可以建立第一存储地址到第二存储地址的映射(称为“第二映射”)。利用第二映射,迁移模块210可以将来自应用122的对第一专用处理单元112-1的第一存储区的访问请求重定向到第二专用处理单元112-2的第二存储区。
代替如上所述的数据显示迁移,在某些实施例中,在应用122在第一专用处理单元112-1上运行之前,迁移模块210可以为第一专用处理单元112-1的第一存储器以及第二专用处理单元112-2的第二存储器统一分配不同的存储地址(分别称为“第三存储地址”和“第四存储地址”)。这些存储地址是第一专用处理单元112-1和第二专用处理单元二者都可访问的。在这种情况下,第二专用处理单元112-2可以按需远程访问第一专用处理单元112-1的第一存储器,以便使应用122可以更快速地在第二专用处理单元112-2上恢复,从而进一步提高系统性能。
作为示例,迁移模块210可以借助于基于GPU统一存储器架构(UMA),统一配置用于指示第三存储地址和第四存储地址的虚拟指针。这些虚拟指针可以被第一专用处理单元112-1和第二专用处理单元112-2,甚至机器110中的其他专用处理单元以及CPU访问。所配置的虚拟指针可以返回给客户端120。之后,客户端120可以直接利用该虚拟指针来访问第一专用处理单元112-1和第二专用处理单元112-2上的存储资源。如此,无论客户端120上的应用122在哪个专用处理器112上运行,对于客户端而言都是透明的,尽管可能例如由于数据是否本地化而存在性能差异。
在这种按需远程数据访问的场景中,在应用122在第二专用处理单元112-2上恢复之后,第二专用处理单元112-2在接收到来自应用122的针对第一专用处理单元112-1的第一存储器中的存储地址的访问请求之后,可以通过内部总线(如PCIe总线)对第一存储器进行远程访问。后续,为了进一步提高数据访问速度,也可以执行如上所述的数据的显示迁移。
图4示出了根据本公开的某些实施例的迁移模块210的示例框图。如图所示,迁移模块210包括请求队列410。基于队列模型,来自客户端120/应用122的所有请求都被存储到请求队列410中。在此示例中,调度器140布置于迁移模块210中,用于在机器110本地执行专用处理单元112之间的调度,以便在本地实现专用处理单元112的重新分配和负载平衡。
迁移模块210还包括迁移引擎420。迁移引擎420可以执行上面参考图3描述的迁移模块210的操作和动作。例如,迁移引擎420可以在拦截了来自客户端120/应用122的所有请求之后,将这些请求都存储在请求队列410中。迁移引擎420还可以接收调度器140的迁移请求而触发应用122的迁移。
在此示例中,迁移模块210还包括映射层430,用于处理包括上下文、描述符等的任何语义级(重新)映射。此外,在底层,迁移模块210可以包括设备运行时库或驱动程序等(未示出)。
图5示出了根据本公开的某些实施例的示例方法500的流程图。方法500能够在如图2所示的迁移模块210处实施。为了讨论方便,以下参考图2到图4对方法500进行具体描述。
如图所示,在框505,迁移模块210从第一专用处理单元112-1获取与正在第一专用处理单元112-1上运行的应用122的运行环境相关联的第一描述符。在框510,迁移模块210响应于确定应用122要在运行过程中从第一专用处理单元112-1被迁移到第二专用处理单元112-2,促使第二专用处理单元112-2创建与用于应用122的运行环境相关联的第二描述符。在框515,迁移模块210从第二专用处理单元112-1获取第二描述符。在框520,迁移模块210建立第一描述符到第二描述符的第一映射,以用于将来自应用122的针对第一专用处理单元112-1的请求重定向到第二专用处理单元112-2。
在某些实施例中,在第一映射的建立完成后,迁移模块210可以响应于拦截到来自应用122的针对第一专用处理单元112-1的请求,基于第一映射将该请求重定向到第二专用处理单元112-2。
在某些实施例中,迁移模块210可以响应于确定应用122要被迁移到第二专用处理单元112-2,拦截来自应用122的针对第一专用处理单元112-1的请求。继而,迁移模块210可以对拦截到的请求进行冻结。响应于第一映射的建立完成,迁移模块210可以将所冻结的请求转发给第二专用处理单元112-2。
在某些实施例中,迁移模块210可以响应于确定应用122要从第一专用处理单元112-1被迁移到第二专用处理单元112-2,促使第一专用处理单元112-1对与应用122相关联的多个线程进行同步。响应于同步完成,迁移模块210可以将用于第一专用处理单元112-1的第一存储器中所存储的与应用122相关联的数据迁移到用于第二专用处理单元112-2的第二存储器。在某些实施例中,迁移模块210可以为第一专用处理单元112-1创建同步障碍,以促使第一专用处理单元112-1执行线程的同步。
在某些实施例中,迁移模块210可以确定第一存储器中用于存储数据的第一存储区的大小。继而,迁移模块210可以促使第二专用处理单元112-2基于第一存储器的大小在第二存储器中分配用于存储数据的第二存储区。响应于确定第二存储区的分配完成,迁移模块210可以将数据从第一存储区迁移到第二存储区。
在某些实施例中,迁移模块210可以从第一专用处理单元112-1获取与第一存储区相关联的第一存储地址,并且从第二专用处理单元112-2获取与第二存储区相关联的第二存储地址。继而,迁移模块210可以建立第一存储地址到第二存储地址的第二映射,以用于将来自应用122的对第一存储区的访问请求重定向到第二存储区。
在某些实施例中,在应用122在第一专用处理单元112-1上运行之前,迁移模块210可以为用于第一专用处理单元112-1的第一存储器分配第三存储地址,并且为用于第二专用处理单元112-2的第二存储器分配不同于第三存储地址的第四存储地址。第三存储地址和所述第四存储地址是第一专用处理单元112-1和第二专用处理单元112-2二者都可访问的。
图6示出了根据本公开的某些实施例的示例方法600的流程图。方法600能够在如图2所示的计算系统200中的迁移模块210处实施。为了讨论方便,以下参考图2到图4对方法600进行具体描述。
如图所示,在框605,迁移模块210确定迁移开始。例如,可以基于可配置的迁移策略,如GPU使用率过高或无法满足应用QoS要求等,由计算系统200中的调度器140向迁移模块210发送迁移请求,以启动迁移。该迁移请求可以指示要迁移的应用122和作为迁移目标的第二专用处理单元122-2。
在框610,迁移模块210触发第一描述符到第二描述符的第一映射的创建。在迁移模块210对针对机器110中的所有专用处理单元112的请求都进行拦截的实施例中,可以由单独的线程执行该触发。备选地,可以在拦截到下次请求时进行触发。所有拦截到的请求可以暂时冻结在如图4所示的请求队列410中。
在框615,迁移模块210使用同步屏障来促使第一专用处理单元112-1执行与应用122相关联的各个线程的同步,使得所有线程都将运行到该屏障。在同步完成之后,与应用相关联的所有状态都被同步到第一专用处理单元112-1的第一存储器中。
在框620,迁移模块210执行存储器迁移。例如,可以如上所述执行显式的存储器复制或预取。在存储器迁移完成之后,应用122可以在第二专用处理单元112-2上恢复。接下来,存储在请求队列410中的所有请求将被移动到第二专用处理单元112-2,并且新的请求将被重定向到第二专用处理单元112-2。如果需要,可以对第二专用处理单元112-2上运行的应用122执行新一轮的迁移。
应理解,仅仅出于示例而非限制的目的,迁移模块210创建第一描述符到第二描述符的第一映射的操作在图6中被示出为在线程同步之前执行。在某些实施例中,可以并发地执行第一映射的创建以及线程的同步,或者可以在线程同步之后执行第一映射的创建。
图7示出了根据本公开的某些实施例的在迁移应用122的过程中应用122的示例状态转移流程图。
当应用122在第一专用处理单元112-1上运行时,应用122的状态可以被标记为“运行”705。在迁移模块210触发了第一描述符到第二描述符的第一映射的创建之后,应用122的状态可以被标记为“迁移前”710。在第一专用处理单元112-1上运行的与应用122相关联的线程被同步之后,应用122的状态可以被标记为“迁移中”715。在没有执行存储器迁移,并且第二专用处理单元112-2按需远程访问第一专用处理单元112-1的第一存储器的情况下,在应用122在第二专用处理单元112-2上恢复之后,应用122的状态可以被标记为“迁移后”720。在完成了存储器迁移之后,应用122的状态可以被标记为“运行”705。
应理解,上文结合图2到图4描述的迁移模块210以及其中的组成部分所执行的操作和特征同样适用于方法500和600,并且具有同样的效果,具体细节不再赘述。
图8示出了一个可以用来实施本公开的实施例的机器800的示意性框图。如图8所示,机器800包括控制器或者称中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802和/或随机访问存储器(RAM)803的程序而执行各种适当的动作和处理。ROM 802和/或RAM 803可存储机器800操作所需的各种程序和数据。CPU 801、ROM 802和RAM 803通过总线804彼此相连。特别地,机器800还包括一个或多个专用处理单元(未示出),这些专用处理单元也可以连接至总线804。
输入/输出(I/O)接口805也连接至总线804。机器800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许机器800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。特别地,在本公开的实施例中,通信单元809支持与客户端或者其他机器的通信。
在某些实施例中,CPU 801可被配置为执行上文所描述的各个过程和处理,例如过程300以及方法500和600。例如,在一些实施例中,过程300或者方法500或600可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到机器800上。当计算机程序被加载到RAM 803并由CPU 801执行时,可以执行上文描述的过程200、方法300或400的一个或多个步骤。备选地,在其他实施例中,CPU 801也可以以其他任何适当的方式被配置以实现上述过程/方法。
特别地,根据本公开的实施例,上文参考图2至图7描述的过程可以被实现为计算机程序产品,其可以被有形地存储在非瞬态计算机可读存储介质上,并且包括机器可执行指令,该指令在被执行时使得机器实现根据本公开的各个方面。
计算机可读存储介质可以是可以存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的、非穷举的例子包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的设备、方法和计算机程序产品的框图和/或流程图描述了本公开的各个方面。应当理解,框图和/或流程图的每个方框以及框图和/或流程图中各方框的组合,都可以由计算机可读程序指令实现。
已经出于示例的目的描述了本公开的各个实施例,但是本公开并不意图限于所公开的这些实施例。在不脱离本公开实质的前提下,所有修改和变型均落入由权利要求所限定的本公开的保护范围之内。
Claims (17)
1.一种用于应用迁移的方法,包括:
从第一专用处理单元获取与正在所述第一专用处理单元上运行的应用的第一运行环境相关联的第一描述符;
响应于确定所述应用要在运行过程中从所述第一专用处理单元被迁移到第二专用处理单元,促使所述第二专用处理单元创建与用于所述应用的第二运行环境相关联的第二描述符;
从所述第二专用处理单元获取所述第二描述符;以及
建立所述第一描述符到所述第二描述符的第一映射,以用于将来自所述应用的针对所述第一专用处理单元的请求重定向到所述第二专用处理单元。
2.根据权利要求1所述的方法,还包括:
在所述第一映射的所述建立完成后,响应于拦截到来自所述应用的针对所述第一专用处理单元的所述请求,基于所述第一映射将所述请求重定向到所述第二专用处理单元。
3.根据权利要求1所述的方法,还包括:
响应于确定所述应用要被迁移到所述第二专用处理单元,拦截来自所述应用的针对所述第一专用处理单元的请求;
对拦截到的所述请求进行冻结;以及
响应于所述第一映射的所述建立完成,将所冻结的所述请求转发给所述第二专用处理单元。
4.根据权利要求1所述的方法,还包括:
响应于确定所述应用要从所述第一专用处理单元被迁移到所述第二专用处理单元,促使所述第一专用处理单元对与所述应用相关联的多个线程进行同步;以及
响应于所述同步完成,将用于所述第一专用处理单元的第一存储器中所存储的与所述应用相关联的数据迁移到用于所述第二专用处理单元的第二存储器。
5.根据权利要求4所述的方法,其中促使所述第一专用处理单元对所述多个线程进行同步包括:
为所述第一专用处理单元创建同步障碍。
6.根据权利要求4所述的方法,其中将所述数据迁移到所述第二存储器包括:
确定所述第一存储器中用于存储所述数据的第一存储区的大小;
促使所述第二专用处理单元基于所述第一存储器的大小在所述第二存储器中分配用于存储所述数据的第二存储区;以及
响应于确定所述第二存储区的所述分配完成,将所述数据从所述第一存储区迁移到所述第二存储区。
7.根据权利要求6所述的方法,还包括:
从所述第一专用处理单元获取与所述第一存储区相关联的第一存储地址;
从所述第二专用处理单元获取与所述第二存储区相关联的第二存储地址;以及
建立所述第一存储地址到所述第二存储地址的第二映射,以用于将来自所述应用的对所述第一存储区的访问请求重定向到所述第二存储区。
8.根据权利要求1所述的方法,还包括:
在所述应用在所述第一专用处理单元上运行之前,为用于所述第一专用处理单元的第一存储器分配第三存储地址;以及
为用于所述第二专用处理单元的第二存储器分配不同于所述第三存储地址的第四存储地址,所述第三存储地址和所述第四存储地址是所述第一专用处理单元和所述第二专用处理单元二者都可访问的。
9.一种用于应用迁移的机器,包括:
中央处理单元,以及
存储有指令的存储器,所述指令在被所述中央处理单元执行时促使所述中央处理单元执行动作,所述动作包括:
从第一专用处理单元获取与正在所述第一专用处理单元上运行的应用的第一运行环境相关联的第一描述符;
响应于确定所述应用要在运行过程中从所述第一专用处理单元被迁移到第二专用处理单元,促使所述第二专用处理单元创建与用于所述应用的第二运行环境相关联的第二描述符;
从所述第二专用处理单元获取所述第二描述符;以及
建立所述第一描述符到所述第二描述符的第一映射,以用于将来自所述应用的针对所述第一专用处理单元的请求重定向到所述第二专用处理单元。
10.根据权利要求9所述的机器,其中所述动作还包括:
在所述第一映射的所述建立完成后,响应于拦截到来自所述应用的针对所述第一专用处理单元的所述请求,基于所述第一映射将所述请求重定向到所述第二专用处理单元。
11.根据权利要求9所述的机器,其中所述动作还包括:
响应于确定所述应用要被迁移到所述第二专用处理单元,拦截来自所述应用的针对所述第一专用处理单元的请求;
对拦截到的所述请求进行冻结;以及
响应于所述第一映射的所述建立完成,将所冻结的所述请求转发给所述第二专用处理单元。
12.根据权利要求9所述的机器,其中所述动作还包括:
响应于确定所述应用要从所述第一专用处理单元被迁移到所述第二专用处理单元,促使所述第一专用处理单元对与所述应用相关联的多个线程进行同步;以及
响应于所述同步完成,将用于所述第一专用处理单元的第一存储器中所存储的与所述应用相关联的数据迁移到用于所述第二专用处理单元的第二存储器。
13.根据权利要求12所述的机器,其中促使所述第一专用处理单元对所述多个线程进行同步包括:
为所述第一专用处理单元创建同步障碍。
14.根据权利要求12所述的机器,其中将所述数据迁移到所述第二存储器包括:
确定所述第一存储器中用于存储所述数据的第一存储区的大小;
促使所述第二专用处理单元基于所述第一存储器的大小在所述第二存储器中分配用于存储所述数据的第二存储区;以及
响应于确定所述第二存储区的所述分配完成,将所述数据从所述第一存储区迁移到所述第二存储区。
15.根据权利要求14所述的机器,其中所述动作还包括:
从所述第一专用处理单元获取与所述第一存储区相关联的第一存储地址;
从所述第二专用处理单元获取与所述第二存储区相关联的第二存储地址;以及
建立所述第一存储地址到所述第二存储地址的第二映射,以用于将来自所述应用的对所述第一存储区的访问请求重定向到所述第二存储区。
16.根据权利要求9所述的机器,其中所述动作还包括:
在所述应用在所述第一专用处理单元上运行之前,为用于所述第一专用处理单元的第一存储器分配第三存储地址;以及
为用于所述第二专用处理单元的第二存储器分配不同于所述第三存储地址的第四存储地址,所述第三存储地址和所述第四存储地址是所述第一专用处理单元和所述第二专用处理单元二者都可访问的。
17.一种非瞬态计算机可读介质,其上有形地存储机器可执行指令,所述机器可执行指令在机器中被执行时使所述机器执行根据权利要求1至8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710983298.6A CN109697114B (zh) | 2017-10-20 | 2017-10-20 | 用于应用迁移的方法和机器 |
US16/162,469 US10824480B2 (en) | 2017-10-20 | 2018-10-17 | Method and machine for application migration |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710983298.6A CN109697114B (zh) | 2017-10-20 | 2017-10-20 | 用于应用迁移的方法和机器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109697114A CN109697114A (zh) | 2019-04-30 |
CN109697114B true CN109697114B (zh) | 2023-07-28 |
Family
ID=66171176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710983298.6A Active CN109697114B (zh) | 2017-10-20 | 2017-10-20 | 用于应用迁移的方法和机器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10824480B2 (zh) |
CN (1) | CN109697114B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399214B (zh) * | 2019-05-30 | 2024-03-22 | 腾讯科技(深圳)有限公司 | 一种优化显卡负载的方法、装置及计算机设备 |
WO2022217595A1 (zh) * | 2021-04-16 | 2022-10-20 | 华为技术有限公司 | 一种处理装置、处理方法及相关设备 |
US20230009930A1 (en) * | 2021-07-06 | 2023-01-12 | International Business Machines Corporation | Continuous Liveness and Integrity of Applications During Migration |
IL309824A (en) * | 2021-09-13 | 2024-02-01 | Hyperplane Ltd | Techniques for deleting internal state of a directory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538296A (zh) * | 2003-02-18 | 2004-10-20 | 图形处理单元的多线程内核 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7783763B2 (en) * | 2006-06-06 | 2010-08-24 | International Business Machines Corporation | Managing stateful data in a partitioned application server environment |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
US9825881B2 (en) * | 2014-09-30 | 2017-11-21 | Sony Interactive Entertainment America Llc | Methods and systems for portably deploying applications on one or more cloud systems |
WO2016090554A1 (en) * | 2014-12-09 | 2016-06-16 | Intel Corporation | System and method for execution of application code compiled according to two instruction set architectures |
US9886737B2 (en) * | 2015-11-11 | 2018-02-06 | Amazon Technologies, Inc. | Local-to-remote migration for virtualized graphics processing |
US9904973B2 (en) * | 2015-11-11 | 2018-02-27 | Amazon Technologies, Inc. | Application-specific virtualized graphics processing |
US9904974B2 (en) * | 2015-11-11 | 2018-02-27 | Amazon Technologies, Inc. | Placement optimization for virtualized graphics processing |
US9904975B2 (en) * | 2015-11-11 | 2018-02-27 | Amazon Technologies, Inc. | Scaling for virtualized graphics processing |
-
2017
- 2017-10-20 CN CN201710983298.6A patent/CN109697114B/zh active Active
-
2018
- 2018-10-17 US US16/162,469 patent/US10824480B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538296A (zh) * | 2003-02-18 | 2004-10-20 | 图形处理单元的多线程内核 | |
CN101894044A (zh) * | 2003-02-18 | 2010-11-24 | 微软公司 | 用于调度协处理器的处理的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109697114A (zh) | 2019-04-30 |
US20190121662A1 (en) | 2019-04-25 |
US10824480B2 (en) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11088961B2 (en) | Monitoring data streams and scaling computing resources based on the data streams | |
CN109697114B (zh) | 用于应用迁移的方法和机器 | |
CN109697120B (zh) | 用于应用迁移的方法、电子设备 | |
CN107231815B (zh) | 用于图形渲染的系统和方法 | |
US10120705B2 (en) | Method for implementing GPU virtualization and related apparatus, and system | |
US8725875B2 (en) | Native cloud computing via network segmentation | |
US11048447B2 (en) | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data | |
US10897428B2 (en) | Method, server system and computer program product for managing resources | |
US11169846B2 (en) | System and method for managing tasks and task workload items between address spaces and logical partitions | |
US9003094B2 (en) | Optimistic interrupt affinity for devices | |
US9514072B1 (en) | Management of allocation for alias devices | |
US11099952B2 (en) | Leveraging server side cache in failover scenario | |
WO2019028682A1 (zh) | 一种多系统共享内存的管理方法及装置 | |
US9934147B1 (en) | Content-aware storage tiering techniques within a job scheduling system | |
US10802874B1 (en) | Cloud agnostic task scheduler | |
CN107528871B (zh) | 存储系统中的数据分析 | |
US10289329B2 (en) | Burst buffer dynamic logical volume sizing in high performance computing environment | |
US10216547B2 (en) | Hyper-threaded processor allocation to nodes in multi-tenant distributed software systems | |
US11868805B2 (en) | Scheduling workloads on partitioned resources of a host system in a container-orchestration system | |
US11762695B2 (en) | Transparent memory management for over-subscribed accelerators | |
US11954534B2 (en) | Scheduling in a container orchestration system utilizing hardware topology hints | |
US11989586B1 (en) | Scaling up computing resource allocations for execution of containerized applications | |
US11995466B1 (en) | Scaling down computing resource allocations for execution of containerized applications | |
CN117472570A (zh) | 用于调度加速器资源的方法、装置、电子设备和介质 | |
CN117687738A (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 |