CN116069695A - 使用外围设备进行存储器访问跟踪 - Google Patents
使用外围设备进行存储器访问跟踪 Download PDFInfo
- Publication number
- CN116069695A CN116069695A CN202111296474.1A CN202111296474A CN116069695A CN 116069695 A CN116069695 A CN 116069695A CN 202111296474 A CN202111296474 A CN 202111296474A CN 116069695 A CN116069695 A CN 116069695A
- Authority
- CN
- China
- Prior art keywords
- memory
- processor
- page
- pages
- peripheral device
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及使用外围设备进行存储器访问跟踪。计算节点包括存储器、处理器和外围设备。存储器用于存储存储器页面。处理器用于运行访问存储器的软件,并且识别存储器中由软件访问的一个或更多个第一存储器页面。外围设备用于使用直接存储器访问(DMA)直接访问计算节点的存储器中的一个或更多个第二存储器页面,并且将使用DMA被访问的第二存储器页面告知处理器。处理器还维护数据结构,该数据结构跟踪以下两者:(i)由处理器识别的第一存储器页面和(ii)由外围设备告知的第二存储器页面。
Description
发明领域
本发明总体上涉及计算系统,并且具体涉及用于存储器管理的方法和系统。
发明背景
计算系统通常跟踪硬件或软件对存储器页面的访问。根据应用或用例,计算系统可以仅跟踪写入访问(即,仅跟踪修改存储器页面的存储器访问操作),或者既跟踪读取访问又跟踪写入访问。存储器页面跟踪在各种各样的用例中都很有用,仅举几个示例,例如,在物理计算节点之间的虚拟机(VM)迁移中,在存储器和存储设备之间的页面交换中,在各种高速缓存方案中。
发明概述
本文描述的本发明的实施例提供了一种包括存储器、处理器和外围设备的计算节点。存储器用于存储存储器页面。处理器用于运行访问存储器的软件,并且处理器用于识别在存储器中由软件访问的一个或更多个第一存储器页面。外围设备用于使用直接存储器访问(DMA)直接访问计算节点的存储器中的一个或更多个第二存储器页面,并且将使用DMA访问的第二存储器页面告知处理器。处理器还维护数据结构,该数据结构跟踪以下两者:(i)由处理器识别的第一存储器页面和(ii)由外围设备告知的第二存储器页面。
在一些实施例中,外围设备是网络适配器,并且第二存储器页面包括由网络适配器在处理器和网络之间传送的数据。
在一些实施例中,软件包括在计算节点上托管的客机(guest),客机具有在存储器中分配的存储器空间,并且处理器用于在数据结构中跟踪属于客机的存储器空间的脏页面,该脏页面包括(i)由客机写入的第一脏页面和(ii)由外围设备写入的第二脏页面。在示例实施例中,处理器用于执行与另一计算节点协作并使用跟踪第一脏页面和第二脏页面的数据结构来将客机迁移到另一计算节点的过程。在一个实施例中,外围设备用于限制客机被迁移的流量速率。
在所公开的实施例中,处理器用于使用跟踪第一存储器页面和第二存储器页面的数据结构来执行与存储设备交换一些存储器页面的过程。
在一些实施例中,外围设备用于合并对第二存储器页面的访问的指示,并通过发送所合并的指示来告知处理器。在示例实施例中,外围设备用于通过在合并缓冲区中缓存指示来合并指示。在另一个实施例中,外围设备用于通过在位图中将代表第二存储器页面的位置位来合并指示。
在又一个实施例中,外围设备用于通过直接写入由处理器维护的数据结构来将第二存储器页面告知处理器。在又一实施例中,外围设备将通过报告第二存储器页面的相应地址来将第二存储器页面告知处理器。
根据本发明的实施例,还提供了一种方法,该方法包括使用处理器运行访问存储器的软件,并识别在存储器中由软件访问的一个或更多个第一存储器页面。通过使用外围设备,使用直接存储器访问(DMA)在存储器中直接访问一个或更多个第二存储器页面,并且处理器被告知使用DMA访问的第二存储器页面。由处理器维护数据结构,该数据结构跟踪以下两者:(i)由处理器识别的第一存储器页面和(ii)由外围设备告知的第二存储器页面。
根据本发明的实施例,还提供了一种方法,该方法用于联合跟踪(i)由处理器的软件访问的存储器页面和(ii)由独立于处理器的外围设备访问的存储器页面。该方法包括在处理器上运行访问存储器的软件,并且识别由软件访问的一个或更多个存储器页面。由外围设备使用直接存储器访问(DMA)直接访问一个或更多个第二存储器页面,并且处理器被告知使用DMA被访问的存储器页面。由处理器维护数据结构,该数据结构跟踪以下两者:(i)由处理器识别的由软件访问的存储器页面,和(ii)由外围设备告知的由外围设备访问的存储器页面。
根据结合附图进行的对本发明的实施例的以下详细描述,本发明将得到更充分的理解,其中:
附图简述
图1是示意性示出根据本发明实施例的在外围设备协助下执行存储器页面跟踪的计算节点的框图;
图2是示意性示出根据本发明的实施例的用于跟踪存储器页面的方法的流程图;并且
图3是根据本发明的实施例的示意性示出虚拟机(VM)在计算节点之间的迁移的框图。
具体实施方式
综述
本文描述的本发明的实施例提供了用于跟踪计算节点中的存储器页面访问的改进的方法和系统。在本文背景下,已经被访问的存储器页面也被称为“脏页面”,并且这两个术语在本文中可互换使用。“脏页面”的确切定义以及页面何时不再被视为脏页面的定义可能因应用而异。
在一些应用中,当页面被修改时,页面变脏,并且被认为是脏的,直到已经达到某种一致性(consistency),例如,当被修改的页面已经被提交到存储装置时。在其他应用(例如跟踪最近最少使用(LRU)页面或最近最多使用(MRU)页面的应用)中,读取页面足以使页面变脏。总体而言,所公开的技术可以用于涉及跟踪对存储器页面的访问的任何合适的应用中。本文描述了与虚拟机(VM)迁移和页面交换相关的示例用例。
在一些实施例中,计算节点包括存储器和处理器。处理器运行软件,除了其他任务之外,该软件访问(例如,读取和/或写入)存储器中的存储器页面。软件可以包括例如管理程序或操作系统。另外,计算节点包括使用直接存储器访问(DMA)来访问存储器的外围设备。
在一个示例中,外围设备是从网络接收数据并将数据直接写入计算节点的存储器的网络适配器。在另一个示例中,外围设备是存储设备,诸如存储用于计算节点的CPU的数据的固态驱动器(SSD)。当为CPU执行读取操作时,数据从存储设备中取出,并使用DMA写入到CPU存储器。这些DMA操作可能会将大量数据传输到CPU存储器,而无需CPU的干预。
在一些实施方式中,处理器(包括在其上运行的软件)不知道由外围设备执行的存储器访问操作,因为这些操作是使用DMA执行的。因此,处理器可以识别和跟踪由软件访问(“弄脏”)的存储器页面,而不是由外围设备访问的存储器页面。这种对脏页面的部分跟踪是有问题的,并且可能导致数据不一致和次优表现。
为了解决这个挑战,在本发明的一些实施例中,外围设备将外围设备已经使用DMA访问了哪些存储器页面告知处理器。处理器维护数据结构,该数据结构跟踪以下两者:(i)(由处理器识别的)由软件访问的存储器页面和(ii)(由外围设备告知的)由外围设备访问的存储器页面。以这种方式,处理器能够完全跟踪存储器中的所有脏页面,而不管是哪个实体使这些页面变脏的。
在一些实施例中,上述存储器页面跟踪方案完全是在硬件中实现的。外围设备可以使用各种协议和格式来报告其访问的存储器页面。本文描述了多个示例。
系统描述
图1是根据本发明的实施例示意性示出跟踪脏页面的计算节点20的框图。图1是相对通用的,某种意义上说它不是专用的,并且适用于各种类型的计算节点和外围设备。下面将进一步描述多个具体的示例。
计算节点20可以包括例如数据中心中的服务器、工作站或任何其他合适类型的计算节点。节点20包括处理器24和存储器28。在本示例中,处理器24包括中央处理单元(CPU),但是该处理器可以可替代地包括图形处理单元(GPU)或任何其他合适类型的处理器。在本示例中,存储器28包括随机存取存储器(RAM),但是也可以包括任何其他合适类型的存储器。
节点20还包括外围设备32,该外围设备32通过外围接口36与处理器24和存储器28通信。外围设备32可以包括例如网络适配器,诸如以太网网络接口控制器(NIC)、无限带宽主机通道适配器(HCA)、智能NIC、数据处理单元(DPU)、支持网络的GPU或任何其他合适类型的网络适配器。作为另一个示例,外围设备32可以包括存储设备,诸如固态驱动器(SSD)或小型计算机系统接口(SCSI)盘。此外,可替代地,外围设备32可以包括在GPU或现场可编程门阵列(FPGA)或任何其他合适类型的外围设备中实现的加速器。外围接口36可以包括例如外围部件互连高速(PCIe)总线。
在一些实施例中,处理器24运行软件40,该软件40访问存储器28中的存储器页面44等等。软件40可以包括例如管理程序、一个或更多个VM、一个或更多个应用(“app”)、OS和/或任何其他合适类型的软件。软件40可以适当地读取和/或写入存储器页面44。在下面的描述中,为了简洁起见,存储器页面44也被简称为“页面”。
除了软件40进行的存储器访问(读取和/或写入)之外,外围设备32也使用DMA访问(读取和/或写入)存储器页面44。外围设备32可以与软件40访问相同的存储器页面、部分重叠的存储器页面或不同的存储器页面。通常,软件40和外围设备32对存储器页面44的访问彼此不协调。具体而言,处理器24通常不知道哪些存储器页面44已经被外围设备32访问(“弄脏”)。
为了能够对脏页面进行完全的(即公正的(impartial))跟踪,外围设备32向处理器24报告它正在访问的页面。外围设备32通常(例如周期性地)通过接口36发送这样的报告消息。高效报告的格式的多个示例描述如下。
基于来自外围设备32的报告,处理器24维护脏页面数据结构48,该脏页面数据结构48跟踪以下两者:(i)(由处理器24识别的)由软件40访问的存储器页面和(ii)(由外围设备报告的)由外围设备32访问的存储器页面。在一些实施例中,脏页面数据结构48包括位图,在位图中的每个位对应于相应的存储器页面。位图中的被置位的位意味着对应的页面是脏的,反之亦然。
处理器24可以以各种方式识别被软件40访问(“弄脏”)的页面。例如,处理器可以维护具有多个页面表条目(PTE)的页面表。当软件40弄脏某个存储器页面时,处理器24可以在对应的PTE中将相应的位置位来指示该页面是脏的。
图2是示意性示出根据本发明的实施例的用于跟踪在计算节点20中的存储器页面的方法的流程图。在本示例中,(i)软件40是托管VM的管理程序,(ii)外围设备32是NIC,(iii)外围接口36是PCIe总线,并且(iv)脏页面被定义为被写入的(即被修改的)页面。
如图所示,存储器28由管理程序和NIC写入,通常没有相互协调或感知。在管理程序访问操作50,管理程序代表VM写入一些存储器页面44。在NIC访问操作54,NIC从网络接收数据,并使用DMA将数据写入到一些存储器页面44。
在本例中,NIC以直通模式运行,使用单根输入/输出虚拟化(SR-IOV)。在这种模式下,NIC会为每个VM公开一个相应的虚拟NIC(vNIC)。每个vNIC被配置为使用DMA将数据直接写入对应的VM的存储器空间。管理程序不知道这些DMA操作,并且无法跟踪由NIC写入的页面。
为了实现公正的脏页面跟踪,在记录操作58,NIC记录被写入的存储器页面的地址。通常,NIC会根据为VM定义的物理存储器空间(即客机物理地址-GPA)来跟踪和记录地址。
在报告操作62,NIC向管理程序报告所记录的地址。在更新操作66,管理程序更新脏页面位图48以反映(在操作50)被管理程序弄脏的页面和(在操作54)被NIC弄脏的页面。在本例中,管理程序为每个VM维护一个单独的位图48。在给定的位图48中,存储器页面的地址是该VM的客机物理地址空间中的GPA。
图2中的方法是示例方法,该方法是仅出于概念清晰的目的而被描绘的。在可替代的实施例中,可以使用任何其它合适的方法。
通常,外围设备32(在本示例中为NIC)从软件40(在本示例中为管理程序)接收请求,以开始跟踪关于指定客机(例如,VM)的脏页面。作为响应,设备32开始跟踪对指定客机的存储器的写入(和/或适当地跟踪其他访问)。根据GPA执行对脏页面的跟踪。在一些实施例中,即使写入实际上被发布到机器地址(MA)(例如,当外围设备32支持地址转换服务(ATS)时),也根据GPA执行脏页面跟踪。跟踪脏页面通常是按分组执行的。处理给定的分组可能需要将多个页面标记为脏的。外围设备32通常将脏页面(例如,写入的页面)的地址写入内部数据库。如果多个分组被写入同一物理存储器页面,则设备32可以通过仅仅一次将页面报告为脏的,来减少对软件40的报告。这种改进可以彻底完成,也可以尽力完成。软件40然后根据设备32报告的地址来更新脏页面数据结构48。
实时迁移用例
所公开的脏页面跟踪技术的一个可能的用例是将VM从一个计算节点迁移到另一个计算节点。在典型的实时迁移过程中,VM映像(image)(例如,包括内核和各种驱动器(包括I/O驱动器)使用的存储器)和VM的存储器空间都从源计算节点转移到目标计算节点。
一些迁移过程(称为“复制前”迁移)首先转移VM的存储器空间,然后暂时挂起VM,转移VM映像,且然后在目标计算节点上恢复VM。其他迁移过程(称为“复制后”迁移)从挂起VM并将VM映像转移到目标计算节点开始,且然后才转移VM存储器空间。混合方案也是可能的。对于大多数实际应用来说,冻结VM且然后将其整个存储器复制到目标计算节点的简单解决方案是不可行的,因为这会导致不可接受的长离线时间。
在任何迁移过程中,在迁移开始后,VM的存储器页面可能会变脏。因此,迁移过程通常包括在VM地址空间中跟踪脏页面。任何这样的跟踪都可以使用所公开的技术来执行。
图3是根据本发明的实施例的示意性示出VM在计算节点之间的迁移的框图。图的顶部示出了托管多个VM的两个计算节点,表示为70A和70B。每个计算节点包括一个或更多个CPU 74和管理程序(HV)78。计算节点通过相应的DMANIC 82连接到网络86。假设该系统使用SR-IOV进行操作。
最初,节点70A托管表示为VM-A和VM-B的两个VM,并且节点70B托管表示为VM-C和VM-D的其他两个VM。在某个时间点,做出将VM-B从节点70A迁移到节点70B的决定。在该迁移过程中,计算节点70A充当源计算节点,并且计算节点70B充当目标计算节点。在下面的描述中,节点70A的HV 78被称为“源HV”,并且节点70B的HV 78被称为“目标HV”。
在本例中,VM-B正在由源管理程序和目标管理程序联合执行的复制前迁移过程中进行迁移。通常,复制前迁移过程包括以下操作序列:
■源HV开始跟踪VM访问的存储器页面。
■源HV将VM的整个存储器空间(脏页面或其他)复制到目标节点。
■从这一点来看,源HV仅复制变脏的页面(相对于已经转移的版本)。
■一旦达到停止条件(例如,脏页面的数量下降到某个小的阈值以下,或者脏页面的数量由于高访问速率而没有足够快地减少,或其他条件),源HV会暂时挂起VM。
■此时,源HV将VM映像转移到目标节点。
■网络被重新配置,将后续去往VM的流量转移到目标节点。
■目标VM从源VM悬挂VM的相同状态恢复VM。
如上所述,当使用SR-IOV时,源节点上的HV 78不知道VM存储器空间中被NIC 82弄脏的页面。除非使用所公开的技术来考虑到这些页面,否则源HV很可能无法跟踪所有脏页面,从而导致迁移过程中的数据损坏。
根据示例实施例,图3的中部和底部的两个插图示出了源节点70A的HV 78和NIC82的内部结构。插图聚焦于与脏页面跟踪相关的NIC元件和HV元件。在本示例中,NIC 82和HV 78跟踪VM-A和VM-B两者的脏页面。
如底部插图所示,NIC 82包括向网络86传输分组和从网络86接收分组的分组处理硬件90。NIC还包括转换和保护表(TPT)94、NIC存储器98和分散硬件110。TPT 94保存在分组中指定的虚拟地址和VM存储器中的GPA之间的地址转换。在一些实施例中,TPT 94还包括脏页面数据库102。响应于识别出来自网络的传入分组保证对VM-A或VM-B(在图中标记为“客机0”和“客机1”)的存储器空间的写入,NIC将该写入操作的GPA写入TPT 94中的脏页面数据库102。注意,使用TPT的脏页面跟踪只是一个示例。在替代实施例中,NIC 82可以以任何其他合适的方式跟踪它弄脏的存储器页面。
脏页面的GPA被复制到NIC存储器98中的脏页面地址缓冲区106。分散硬件110然后在VM-A的脏页面的GPA和VM-B的脏页面的GPA之间进行分离,并将它们分别递送到HV 78。在一个实施例中,分散硬件110例如响应于HV 78对给定VM的当前缓冲脏页面的请求,按需递送脏页面的GPA。
HV 78(见图3中部的插图)包括脏页面存储器114,其为不同的VM存储单独的脏页面地址缓冲区。在本示例中,脏页面地址缓冲区118A和118B分别缓存如由NIC 82的分散硬件110提供的VM-A和VM-B的脏页面的GPA。
基于缓冲区118A中缓存的GPA,HV 78更新VM-A的脏页面位图122A。脏页面位图122A因此跟踪被HV本身弄脏的VM-A的脏页面和被NIC 82弄脏的VM-A的脏页面。类似地,HV78基于在缓冲区118B中缓存的GPA,更新VM-B的脏页面位图122B。脏页面位图122B跟踪被HV78弄脏的VM-B的脏页面和被NIC 82弄脏的VM-B的脏页面。
在一些实施例中,源HV 78执行上述迁移过程,同时跟踪位图122B中VM-B的脏页面。以这种方式,尽管使用了直通虚拟化(例如,SR-IOV),也不会遗漏脏页面。
上面描述的迁移过程是一个示例过程,纯粹是为了清楚起见而描述的。在可替代的实施例中,可以使用任何其它合适的过程。例如,所公开的技术不限于复制前迁移,且也可以用于其他迁移过程。作为另一个示例,上面的描述涉及VM的迁移,但是所公开的技术可以用于其他类型的客机(例如容器(containers)或进程(processes))的迁移。
一种替代的解决方案,并非使用所公开的页面跟踪技术,而是在迁移之前用软件完全虚拟化的设备替换直通外围设备(例如,SR-IOV NIC)。然而,这种解决方案在性能方面成本很高。更重要的是,该解决方案将迁移过程暴露给VM本身,这通常是不可接受的。
在一些实施例中,源计算节点70A中的NIC 82可以通过限制VM(或其他客机)被迁移的流量速率来帮助加速迁移过程。限制VM的流量速率反过来会降低VM的页面弄脏的速率,从而减少整体迁移时间。在示例实施例中,NIC 82可以通过对有损流量(例如,TCP)应用监管器或者通过改变无损流量(例如,无限带宽(InfiniBand)或无损RoCE)的拥塞控制参数来限制迁移VM的入站分组速率。这种监管可以是静态的(强制执行静态最大速率)或动态的。
在动态监管过程中,NIC 82可以基于以下参数中的一个或两个来改变客机的允许入站速率:
1.脏页面速率。NIC可以监控每个客机标记脏页面的速率。如果速率超过定义的阈值,则NIC可能会更改入站分组速率策略,以进一步降低变脏速率。
2.复制前迭代次数。NIC可以监控由管理程序执行的复制前迭代的次数(例如,通过软件API向NIC发出每个复制前迭代的警报)。如果发生了太多的迭代(例如,当复制前迭代的次数超过定义的次数时),NIC可以降低入站流量速率,以便降低变脏速率。
其他用例示例
所公开的脏页面跟踪技术的另一个可能的用例是页面交换应用。在示例页面交换应用中,处理器24(图1)运行在存储器28和存储设备(例如,SSD)之间交换存储器页面的页面交换软件(例如,作为OS的一部分)。通常,页面交换软件旨在将频繁访问的页面(或最近使用的页面)保留在存储器中,并将很少使用的页面(或很久以前访问的页面)导出到存储设备。然而,如果一些存储器页面访问是由外围设备32(例如,NIC)对处理器24透明地执行的,则页面交换性能将不是最佳的。
因此,在一些实施例中,处理器24可以使用所公开的技术来跟踪脏页面,以便也考虑被外围设备32弄脏的页面。基于这种脏页面跟踪的页面交换将表现良好,即使当某些页面访问对处理器24是透明的。
另一个可能的用例是跟踪对动态随机存取存储器(DRAM)的重新排序访问以节省功率。另一个用例是收集存储器访问操作的统计数据。进一步可替代地,所公开的技术可以用于在任何其他合适的用例中跟踪对存储器页面的访问。
外围设备中的跟踪和合并
在一些实施例中,在写入客机(例如,VM)的存储器之前,外围设备32检查其写入应该被跟踪的函数,例如Bus:Device.Function(BDF),或者与进程地址空间ID(PASID)相结合的BDF。如果设备32将该函数识别为需要脏页面跟踪的函数(例如,迁移过程中的客机),则设备32记录被访问的GPA[64:12]和函数。
为了减少软件处理,设备32可以在跟踪和记录脏页面时执行合并。在示例实施例中,设备32维护特定大小(例如,32、64或128个条目)的中间合并缓冲区。合并缓冲区的每个条目都包含一对{函数,GPA}。在每次将{函数,GPA}插入合并缓冲区时,设备32检查所检测到的{函数,GPA}的组合是否在合并缓冲区中已经存在。如果是这样,就不需要采取进一步的动作。如果没有,设备将新的{函数,GPA}插入合并缓冲区。当合并缓冲区变满时,或者在复制前迁移迭代结束时,设备32弹出合并缓冲区,并将所有条目报告给软件40。
在可替代的实施例中,外围设备32通过维护每个客机的脏页面位图来执行合并(例如,在图3的示例中)。位图表示客机的客机物理地址(GPA)空间,每个位对应于相应的存储器页面。位图中的被置位的位意味着对应的页面是脏的,反之亦然。在检测到页面变脏时,设备32将对应的位置位。对同一页面的多次写入将将相同的位置位,且因此设备32将仅向软件40报告一次该页面为脏页面。
实际上,每个客机的位图可能非常大。例如,对于每4KB页面一位和64位地址范围,位图将需要249字节的存储器。在这种情况下,可以实现额外的优化,其中软件(例如,设备驱动程序)将客机存储器中需要脏页面跟踪的选定区域告知设备32。通过这种改进,设备32可以只保留每个客机的总存储空间所需的位图的一部分(或多个部分)。设备32可以以任何合适的时间间隔或基于任何合适的事件(例如,每当每次复制前迭代(在复制前迁移用例中)和/或根据软件40的请求)来报告脏位。
在示例实施例中,128G字节的客机RAM空间将总共需要4MB以用于压缩位图。设备32可以在存储器28(主机存储器)中分配存储器,以便维护多个位图。在这样的实施例中,由设备32写入位图可能需要从主机存储器获取条目(以便修改它并写回它)。在严重的情况下(例如,接口36上的多次提取和高等待时间),可能对设备造成反向压力。为了避免死锁,应该注意从主机存储器中提取数据时没有反向压力的风险。
脏页面报告方案
在各种实施例中,外围设备32可以使用各种方案和格式来向软件40报告它跟踪的脏页面。
在一些实施例中,外围设备32直接写入处理器24的脏页面数据结构48(例如,写入由管理程序维护的脏页面位图)。当使用PCIe时,这种技术可能需要通过PCIe总线执行读取-修改-写入操作,因为PCIe写入是以字节粒度执行的。在一个实施例中,为了减少通过PCIe总线的读取-修改-写入操作的开销,外围设备32使用PCIe TLP字节使能来写入单个字节而不是双字。这种模式允许直接写入脏页面数据结构,而无需读取-修改-写入。对于基于字节映射的跟踪(其中数据结构48中的整个字节代表相应的存储器页面),该技术提供了最佳性能。对于基于位图的跟踪,这种技术会引入一些假阳性(false positive)(即,将一些未写入的页面标记为脏页面)。
在替代实施例中,外围设备32报告其访问的地址和函数,并允许软件40(例如,设备驱动程序)相应地更新脏页面数据结构48。该技术允许在设备32和软件40之间更灵活的接口,但是另一方面可能比直接写入数据结构48消耗更多的PCIe带宽。
进一步可替代地,外围设备32可以使用任何其他合适的报告方案来向软件40报告脏页面。
图1和图3所示的配置(例如系统配置、计算节点配置、NIC配置和HV配置)是纯粹为了概念清晰而描述的示例配置。在替代的实施例中可以使用任何其它合适的配置。本文描述的各种系统和计算节点元件可以使用软件、使用合适的硬件(诸如在一个或更多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)中的硬件)或者使用软件和硬件元件的组合来实现。
某些系统元件(例如,CPU 24和74)和/或在NIC 82中的处理器可以包括通用处理器,该通用处理器以软件进行编程以执行本文描述的功能。例如,可经由网络以电子形式将软件下载到计算机,或者所述软件可以可选地或附加地被提供和/或存储在非暂时性有形媒介上,诸如在磁存储器、光学存储器或电子存储器上。
尽管本文描述的实施例主要解决计算节点中的脏页面跟踪,但是本文描述的方法和系统也可以用于各种其他应用。
因此,将认识到的是,以上描述的实施方式是通过示例引用的,并且本发明并不限于上文已具体示出和描述的内容。相反,本发明的范围包括上文所描述的各种特征的组合及子组合以及本发明的变型和修改,所述变型和修改将在本领域的技术人员阅读上述描述之后被想到并且在现有技术中未被公开。以引用方式并入本专利申请中的文件应被视为本申请的组成部分,除非在某种程度上在这些并入文件中以与本说明书中明确地或隐含地做出的定义相冲突的方式定义任何术语,则仅应考虑本说明书中的定义。
Claims (23)
1.一种计算节点,包括:
存储器,所述存储器用于存储存储器页面;
处理器,所述处理器用于运行访问所述存储器的软件,并且识别所述存储器中由所述软件访问的一个或更多个第一存储器页面;以及
外围设备,所述外围设备用于使用直接存储器访问(DMA)直接访问所述计算节点的存储器中的一个或更多个第二存储器页面,并且将使用DMA被访问的所述第二存储器页面告知所述处理器,
其中,所述处理器还维护数据结构,所述数据结构跟踪以下两者:(i)由所述处理器识别的所述第一存储器页面和(ii)由所述外围设备告知的所述第二存储器页面。
2.根据权利要求1所述的计算节点,其中,所述外围设备是网络适配器,并且其中,所述第二存储器页面包括由所述网络适配器在所述处理器和网络之间传送的数据。
3.根据权利要求1所述的计算节点,其中,所述软件包括在所述计算节点上托管的客机,所述客机具有在所述存储器中分配的存储器空间,并且其中,所述处理器用于在所述数据结构中跟踪属于所述客机的存储器空间的脏页面,所述脏页面包括以下两者:(i)由所述客机写入的第一脏页面和(ii)由所述外围设备写入的第二脏页面。
4.根据权利要求3所述的计算节点,其中,所述处理器用于执行与另一计算节点协作并使用跟踪所述第一脏页面和所述第二脏页面的所述数据结构来将所述客机迁移到所述另一计算节点的过程。
5.根据权利要求4所述的计算节点,其中,所述外围设备用于限制所述客机被迁移的流量速率。
6.根据权利要求1所述的计算节点,其中,所述处理器用于使用跟踪所述第一存储器页面和所述第二存储器页面的所述数据结构来执行与存储设备交换一些存储器页面的过程。
7.根据权利要求1所述的计算节点,其中,所述外围设备用于合并对所述第二存储器页面的访问的指示,并且通过发送合并的指示来告知所述处理器。
8.根据权利要求7所述的计算节点,其中,所述外围设备用于通过在合并缓冲区中缓存所述指示来合并所述指示。
9.根据权利要求7所述的计算节点,其中,所述外围设备用于通过在位图中将表示所述第二存储器页面的位置位来合并所述指示。
10.根据权利要求1所述的计算节点,其中,所述外围设备用于通过直接写入由所述处理器维护的所述数据结构来将所述第二存储器页面告知所述处理器。
11.根据权利要求1所述的计算节点,其中,所述外围设备通过报告所述第二存储器页面的相应地址来将所述第二存储器页面告知所述处理器。
12.一种方法,包括:
使用处理器运行访问存储器的软件,并且识别存储器中由所述软件访问的一个或更多个第一存储器页面;
使用外围设备,使用直接存储器访问(DMA)直接访问所述存储器中的一个或更多个第二存储器页面,并且将使用DMA被访问的所述第二存储器页面告知所述处理器;和
由所述处理器维护数据结构,所述数据结构跟踪以下两者:(i)由所述处理器识别的所述第一存储器页面和(ii)由所述外围设备告知的所述第二存储器页面。
13.根据权利要求12所述的方法,其中,所述外围设备是网络适配器,并且其中,所述第二存储器页面包括由所述网络适配器在所述处理器和网络之间传送的数据。
14.根据权利要求12所述的方法,其中,所述软件包括在计算节点上托管的客机,所述客机具有在所述存储器中分配的存储器空间,并且其中维护所述数据结构包括在所述数据结构中跟踪属于所述客机的存储器空间的脏页面,所述脏页面包括以下两者:(i)由所述客机写入的第一脏页面和(ii)由所述外围设备写入的第二脏页面。
15.根据权利要求14所述的方法,还包括由所述处理器执行与另一计算节点协作并使用跟踪所述第一脏页面和所述第二脏页面的所述数据结构来将所述客机迁移到所述另一计算节点的过程。
16.根据权利要求15所述的方法,还包括使用所述外围设备来限制所述客机被迁移的流量速率。
17.根据权利要求12所述的方法,还包括由所述处理器使用跟踪所述第一存储器页面和所述第二存储器页面的所述数据结构来执行与存储设备交换一些存储器页面的过程。
18.根据权利要求12所述的方法,其中,将所述第二存储器页面告知所述处理器包括合并对所述第二存储器页面的访问的指示,并且通过发送合并的指示来告知所述处理器。
19.根据权利要求18所述的方法,其中,合并所述指示包括在合并缓冲区中缓存所述指示。
20.根据权利要求18所述的方法,其中,合并所述指示包括在位图中将代表所述第二存储器页面的位置位。
21.根据权利要求12所述的方法,其中,将所述第二存储器页面告知所述处理器包括直接写入由所述处理器维护的所述数据结构。
22.根据权利要求12所述的方法,其中,将所述第二存储器页面告知所述处理器包括报告所述第二存储器页面的相应地址。
23.一种用于联合跟踪以下两者的方法:(i)由处理器的软件访问的存储器页面和(ii)由独立于所述处理器的外围设备访问的存储器页面,所述方法包括:
在所述处理器上运行访问存储器的软件,并且识别由所述软件访问的一个或更多个存储器页面;
由所述外围设备使用直接存储器访问(DMA)直接访问一个或更多个存储器页面,并且将使用DMA被访问的存储器页面告知所述处理器;和
由所述处理器维护数据结构,所述数据结构跟踪以下两者:(i)由所述处理器识别的由所述软件访问的存储器页面,和(ii)由所述外围设备告知的由所述外围设备访问的存储器页面。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111296474.1A CN116069695A (zh) | 2021-11-03 | 2021-11-03 | 使用外围设备进行存储器访问跟踪 |
US17/536,141 US11836083B2 (en) | 2021-11-03 | 2021-11-29 | Memory access tracking using a peripheral device |
DE102022211573.2A DE102022211573A1 (de) | 2021-11-03 | 2022-11-02 | Speicherzugriffsverfolgung unter verwendung einer peripherievorrichtung |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111296474.1A CN116069695A (zh) | 2021-11-03 | 2021-11-03 | 使用外围设备进行存储器访问跟踪 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116069695A true CN116069695A (zh) | 2023-05-05 |
Family
ID=86144850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111296474.1A Pending CN116069695A (zh) | 2021-11-03 | 2021-11-03 | 使用外围设备进行存储器访问跟踪 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11836083B2 (zh) |
CN (1) | CN116069695A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389685A (zh) * | 2023-10-19 | 2024-01-12 | 北京云豹创芯智能科技有限公司 | 虚拟机热迁移标脏方法及其装置、后端设备、芯片 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007207026A (ja) * | 2006-02-02 | 2007-08-16 | Matsushita Electric Ind Co Ltd | Dma転送装置 |
US8255475B2 (en) | 2009-04-28 | 2012-08-28 | Mellanox Technologies Ltd. | Network interface device with memory management capabilities |
JP5573649B2 (ja) * | 2010-12-17 | 2014-08-20 | 富士通株式会社 | 情報処理装置 |
US9104459B2 (en) * | 2011-01-07 | 2015-08-11 | Red Hat Israel, Ltd. | Memory change tracking during migration of virtual machine (VM) with VM-controlled assigned peripherals |
US9304730B2 (en) * | 2012-08-23 | 2016-04-05 | Microsoft Technology Licensing, Llc | Direct communication between GPU and FPGA components |
US9639464B2 (en) | 2012-09-27 | 2017-05-02 | Mellanox Technologies, Ltd. | Application-assisted handling of page faults in I/O operations |
US8914458B2 (en) | 2012-09-27 | 2014-12-16 | Mellanox Technologies Ltd. | Look-ahead handling of page faults in I/O operations |
US8745276B2 (en) | 2012-09-27 | 2014-06-03 | Mellanox Technologies Ltd. | Use of free pages in handling of page faults |
US9298642B2 (en) | 2012-11-01 | 2016-03-29 | Mellanox Technologies Ltd. | Sharing address translation between CPU and peripheral devices |
US20140181461A1 (en) * | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Reporting access and dirty pages |
FR3019339B1 (fr) * | 2014-03-25 | 2016-04-01 | Commissariat Energie Atomique | Procede de transfert de donnees entre taches temps reel utilisant un controleur memoire dma |
US9361145B1 (en) * | 2014-06-27 | 2016-06-07 | Amazon Technologies, Inc. | Virtual machine state replication using DMA write records |
US9817689B2 (en) * | 2015-02-27 | 2017-11-14 | Red Hat, Inc. | Dirty page tracking of guest-uncached memory |
US9720846B2 (en) * | 2015-05-28 | 2017-08-01 | Red Hat Israel, Ltd. | Memory swap for direct memory access by a device assigned to a guest operating system |
US9870248B2 (en) * | 2015-08-13 | 2018-01-16 | Red Hat Israel, Ltd. | Page table based dirty page tracking |
US9552233B1 (en) * | 2015-09-10 | 2017-01-24 | Red Hat Israel, Ltd. | Virtual machine migration using free page hinting |
US10708240B2 (en) | 2017-12-14 | 2020-07-07 | Mellanox Technologies, Ltd. | Offloading communication security operations to a network interface controller |
US10496595B2 (en) | 2017-12-14 | 2019-12-03 | Mellanox Technologies, Ltd. | Method for zero-copy object serialization and deserialization |
US10592271B1 (en) * | 2018-03-05 | 2020-03-17 | Cavium, Llc | Methods and systems for tracking a virtual memory of a virtual machine |
US10884790B1 (en) * | 2018-05-02 | 2021-01-05 | Amazon Technologies, Inc. | Eliding redundant copying for virtual machine migration |
CN112306624A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 一种信息处理方法、物理机和pcie设备 |
US20210165675A1 (en) * | 2019-12-02 | 2021-06-03 | Xiao Wang | Live migration for hardware accelerated para-virtualized io device |
-
2021
- 2021-11-03 CN CN202111296474.1A patent/CN116069695A/zh active Pending
- 2021-11-29 US US17/536,141 patent/US11836083B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389685A (zh) * | 2023-10-19 | 2024-01-12 | 北京云豹创芯智能科技有限公司 | 虚拟机热迁移标脏方法及其装置、后端设备、芯片 |
CN117389685B (zh) * | 2023-10-19 | 2024-03-19 | 北京云豹创芯智能科技有限公司 | 虚拟机热迁移标脏方法及其装置、后端设备、芯片 |
Also Published As
Publication number | Publication date |
---|---|
US11836083B2 (en) | 2023-12-05 |
US20230133439A1 (en) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6944983B2 (ja) | ハイブリッドメモリ管理 | |
US10705975B2 (en) | Hybrid memory management | |
US10198377B2 (en) | Virtual machine state replication using DMA write records | |
US11620233B1 (en) | Memory data migration hardware | |
US10719463B1 (en) | Hardware handling memory write request during memory data migration | |
US8924624B2 (en) | Information processing device | |
US10133677B2 (en) | Opportunistic migration of memory pages in a unified virtual memory system | |
US8370533B2 (en) | Executing flash storage access requests | |
US11163452B2 (en) | Workload based device access | |
US9092426B1 (en) | Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing | |
US11698868B2 (en) | Logging pages accessed from I/O devices | |
US9959074B1 (en) | Asynchronous in-memory data backup system | |
WO2020087927A1 (zh) | 一种内存数据迁移的方法及装置 | |
US20180107605A1 (en) | Computing apparatus and method with persistent memory | |
US20160098302A1 (en) | Resilient post-copy live migration using eviction to shared storage in a global memory architecture | |
US10430356B2 (en) | Low overhead copy engine fault and switch mechanism | |
US11256530B2 (en) | Targeted page migration for guest virtual machine | |
EP4421631A1 (en) | Data migration method and apparatus, and electronic device | |
CN114207596A (zh) | 将中断从输入-输出存储器管理单元提供到访客操作系统 | |
KR20220001016A (ko) | 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법 | |
US10341177B2 (en) | Parallel computing system and migration method | |
US11836083B2 (en) | Memory access tracking using a peripheral device | |
US10241906B1 (en) | Memory subsystem to augment physical memory of a computing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |