CN102308282A - 多处理器体系结构远端内存访问的模拟方法及模拟器 - Google Patents
多处理器体系结构远端内存访问的模拟方法及模拟器 Download PDFInfo
- Publication number
- CN102308282A CN102308282A CN2011800013167A CN201180001316A CN102308282A CN 102308282 A CN102308282 A CN 102308282A CN 2011800013167 A CN2011800013167 A CN 2011800013167A CN 201180001316 A CN201180001316 A CN 201180001316A CN 102308282 A CN102308282 A CN 102308282A
- Authority
- CN
- China
- Prior art keywords
- application process
- space
- virtual
- intended application
- virtual 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在例如NUMA系统的多处理器计算机系统中,内存分布于各处理器节点,处理器访问非本地节点内存的时间延迟远大于访问本地节点内存的时间延迟。对这类系统进行模拟时,远端内存访问事件的模拟对模拟效率和精度起着重要的作用。本发明提供了一种用于在宿主机上模拟NUMA系统目标机的远端内存访问的方法,该方法包括:在宿主机中划分多个虚拟内存空间;将每个目标应用进程的虚拟地址空间设置为在该多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间;捕获目标应用进程对与之对应的虚拟内存空间之外的虚拟内存空间的访问。
Description
技术领域
本发明涉及模拟技术,具体涉及一种用于在宿主机上模拟多处理器体系结构远端内存访问的方法和装置以及模拟器。
技术背景
在计算机系统研制过程中,模拟/仿真是重要的研究手段和工具。一方面,使用模拟方法可以对系统设计方案进行预先性能评价和测试,帮助了解系统的性能表现、可能存在的瓶颈等;另一方面,在硬件平台尚不具备时,模拟系统可以用做软件开发和调试平台。由于模拟技术可以极大的降低设计成本,缩短设计周期,系统结构模拟已经成为计算机系统设计中不可缺少的环节。
NUMA(Non Uniform Memory Architecture,非一致性存储体系结构)是相对于SMP(Symmetric Multiprocessing,对称多处理)而言的。由于在SMP系统中,所有处理器都共享系统总线,因此当处理器的数目增大时,系统总线的竞争冲突加大,系统总线将成为瓶颈。在NUMA架构中,处理器和内存以节点的形式组织起来,节点之间通过高速的互连网络相连,最终构成硬件系统,因此NUMA系统具有更好的可扩展性。对于单个处理器而言,它既可以访问本节点的本地内存(local memory)也可以访问其他节点的远端内存(remote memory),由于对远端内存的访问需通过互连网络进行,因此在NUMA系统中,处理器访问本地内存和远端内存的时间延迟相差很大,远端内存访问对系统性能有较大影响。因此,在进行NUMA系统模拟时,远端内存访问行为的模拟是决定NUMA系统模拟器性能和精度的关键因素之一。
目前主流的系统结构模拟器(例如SimpleScalar,SimOS等)大都采用分层模块化的组成结构,即在为目标机硬件建模的基础上,完成对目标机指令集体系统和I/O接口的建模。通过采用执行驱动的技术完成目标机的模拟。
以SimpleScalar为例,模拟器采用分层模块化的组成结构。首先抽象出目标机的硬件模型,如取指令器、流水线、分支预测器、内存、高速缓存和内存管理单元(MMU)模型等。在此基础上,模拟器对目标机使用的指令系统进行建模。目标程序在模拟器上运行时,模拟器通过分析指令,调用相应的模块(例如访存指令调用内存管理单元模块和内存模块等),完成对目标机的模拟。SimpleScalar区分访存指令和非访存指令,使用LSQ(load/store queue)记录与存储器相关的信息,通过检查LSQ队列,查找存储器阻塞信息,计算访存延迟。
当使用这种模拟技术对NUMA系统进行模拟时,需要对硬件和指令系统进行建模,模拟过程中需要逐条分析指令。虽然模拟精度较高,但是建模过程复杂,工作量大;并且指令分析耗时长,效率低下。
对于当前应用越来越广泛的NUMA系统,使用更加高效的模拟技术是有益的。
发明内容
本发明实施例提供了一种用于对例如NUMA系统的远端内存访问进行模拟的高效的模拟方法。该方法借助宿主机虚拟存储系统来模拟NUMA系统(即目标机)物理内存,通过宿主机虚拟存储系统的缺页中断实现NUMA系统中远端内存访问事件的捕获和模拟。
一方面,本发明实施例提供了一种用于在宿主机上模拟目标机中远端内存访问的方法,包括:在宿主机中划分多个虚拟内存空间;将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该目标应用进程对应的一个虚拟内存空间;捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问。
另一方面,本发明实施例还提供了一种用于在宿主机上模拟目标机中远端内存访问的装置,包括:在宿主机中划分多个虚拟内存空间的单元;将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该目标应用进程对应的一个虚拟内存空间的单元;捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问的单元。。
另一方面,本发明还提供了一种用于模拟目标机中远端内存访问的模拟器,包括:内存映射模块,用于在宿主机中划分多个虚拟内存空间;应用进程设置模块,用于将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间;捕获模块,用于捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问。
另一方面,本发明实施例还提供了一种包括上述模拟器的宿主机。
另一方面,本发明实施例还提供了一种宿主机,包括:存储器和处理器,该处理器配置为:在所述存储器中划分多个虚拟内存空间;将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间;捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问。
另一方面,本发明实施例还提供了一种用于模拟远端内存访问的系统,包括:存储指令的存储器,以及执行该指令的处理器,以使得该系统能够执行本发明的上述方法。
另一方面,本发明实施例还提供了一种机器可读介质,其中存储指令,当机器执行该指令时,使得该机器能够执行本发明的上述方法。
另一方面,本发明实施例还提供了一种计算机程序,该计算机程序用于执行本发明的上述方法。
与现有的模拟技术不同,本发明的模拟技术简化了现有技术中复杂的建模过程和指令分析过程,具有简单高效的特点。通过设置进程地址空间,在宿主机上目标应用进程的执行过程中,对与被模拟的目标机上本地节点内存对应的虚拟内存空间的访问不受影响,而当访问与目标机上远端节点内存对应的虚拟内存空间范围时,操作系统的虚拟存储系统会触发一个缺页中断,该缺页中断将被模拟器捕获并模拟。这一过程不会影响操作系统和程序的正常运行,而且与现有模拟方法相比,程序模拟执行效率高,可以提高例如NUMA系统模拟的性能。
通过参考以下结合附图的说明以及权利要求书中的内容,并且随着对本发明实施例的更全面的理解,本发明的其他目的及效果将变得更加清楚和易于理解。
附图说明
以下将参照附图,通过实施例详细地描述本发明,其中:
图1是按照本发明实施例用于说明宿主机中的虚拟内存空间和目标机中各个节点的物理内存之间的逻辑关系的示意图;
图2是按照本发明实施例用于在宿主机上模拟目标机的远端内存访问的方法的流程图;
图3是按照本发明实施例用于捕获远端内存访问的方法流程图;
图4是根据本发明实施例的包含NUMA系统模拟器的宿主机的示意图;
图5是根据本发明实施例的用于模拟远端内存访问的装置;
图6是根据本发明实施例实现的宿主机。
在所有附图中,相同的标号表示相似或相应的特征或功能。
具体实施方式
下文中以NUMA系统为例描述本发明的模拟方法。需要说明的是,本发明不限于对NUMA系统的模拟,对于涉及远端内存访问操作的任何系统,无论其名称为何,都可以应用本发明的方法来模拟其远端内存访问。
图1是按照本发明一个实施例用于说明宿主机中的虚拟内存空间和目标机中各个节点的物理内存之间的逻辑关系的示意图。
如图所示,被模拟的目标机具有NUMA系统结构,该系统包括多个节点1到N,每个节点包括处理器和本地内存,各个节点之间通过高速的互连网络相连。整个NUMA系统具有统一的内存地址空间,但其内存在物理上分布在各个节点中,每个节点访问本地内存和访问其他节点的远端内存的延迟是不同的,这也是该系统被称为非一致性存储体系结构的原因。在NUMA系统中,处理器访问本地内存和远端内存的时间延迟相差很大,对系统性能有较大影响。因此,在进行NUMA系统模拟时,远端内存访问行为的模拟是决定NUMA系统模拟器性能和精度的关键因素之一。
根据图1所示的实施例,为了对目标机NUMA系统进行模拟,可以在宿主机和目标机之间建立映射关系。首先,建立宿主机中的各个进程虚拟内存空间和NUMA系统中各个节点的物理内存之间的映射关系,将宿主机的进程虚拟内存空间和目标机中各节点的物理内存在逻辑上进行对应,从而使用宿主机中的各个进程虚拟内存空间模拟NUMA系统中各个节点的物理内存。其次,建立宿主机中与各个进程虚拟内存空间对应的目标应用进程与NUMA系统中相应节点上运行的应用进程的映射关系。
在建立第一种映射关系时,如图1中所示,对于具有N个节点的目标机,在宿主机中划分N块虚拟内存空间,使其分别对应于目标机中的N个节点的物理内存。例如,宿主机中每个虚拟内存空间的大小等于目标机中对应节点的物理内存的大小。
在建立宿主机进程虚拟内存空间和NUMA系统中各节点物理内存之间的对应关系时,合适的映射策略往往能够使模拟器更接近真实的目标机。例如,可以如下采用一种基于地址的映射策略。首先设置宿主机的总虚拟内存空间,使该总虚拟内存空间的大小等于目标机各节点物理内存的总和,然后将宿主机的该总虚拟内存空间的虚拟内存地址与目标机的物理内存地址一一映射。如图1所示,在一个例子中,目标机共有N个节点,且每个节点的物理内存大小相同,因此宿主机的总虚拟内存空间被分为大小相同的N块,按照地址增长的方式将各块虚拟内存空间逐一与目标机各个节点的物理内存对应。
可以理解,宿主机中虚拟内存空间的划分并不限于特定的方式,所划分的多个虚拟内存空间块的大小可以是相同的也可以是不相同的,所划分的多个虚拟内存空间块可以是连续的也可以是不连续的,也可以按照各种顺序建立宿主机中多个虚拟内存空间块与目标机中多个节点物理内存之间的对应关系,只要宿主机中多个虚拟内存空间块与目标机中多个节点的物理内存之间是一对一映射的关系即可。
在第二种映射关系中,将宿主机中与各个虚拟内存空间对应的目标应用进程映射到目标机中相应节点上执行的目标机节点进程,其中将宿主机中目标应用进程的虚拟地址空间设置为对应于NUMA系统中该进程所位于的节点的物理内存空间。例如,通过将宿主机中目标应用进程能够访问的进程地址空间设置为与该目标应用进程对应的虚拟内存空间的范围,当某个虚拟内存空间中运行的目标应用进程访问其他虚拟内存空间的地址时,会产生一个由该进程引起的缺页中断(例如,违例,exception),通过捕获该缺页中断可以捕获该访问,将该捕获的访问视为模拟了目标机中发生相应节点上的进程对其他节点的物理内存的远端访问。
根据一个实施例,可以将宿主机中目标应用进程的配置信息中的物理内存大小参数设置为该应用进程所对应的虚拟内存空间的大小,其对应于目标机中该应用进程所处节点的物理内存大小。这样,目标机中应用进程访问远端内存的行为将在宿主机中被模拟为目标应用进程访问与之对应的虚拟内存空间之外的其他块虚拟内存空间。在操作系统的虚拟存储系统的作用下,当目标应用进程访问为其分配的特定大小的内存空间之外的内存空间时,该访存行为将在宿主机系统中产生一个缺页中断(exception,违例),可以利用该缺页中断实现NUMA系统中远端内存访问事件的捕获和模拟。
映射策略的合理性也会在一定程度上影响模拟器的准确性,一般地,可以按照在目标机上运行的目标机进程与多个节点之间的对应机制,将宿主机上的应用进程设置到宿主机中多个虚拟内存空间的对应虚拟内存空间中进行本地运行。例如,可以根据“负载均衡策略”完成进程映射,即最大程度满足目标机不同节点上的进程工作量几乎一致。在一个例子中,可以采用顺序循环的方式实现负载均衡策略,例如,按照进程号将宿主机上的目标应用进程1到N分别设置为对应于第1到N个虚拟内存空间块,进而宿主机上的目标应用进程N+1到2N分别设置为对应于第1到N个虚拟内存空间块,以此类推。通过上述进程映射,如图1所示:与宿主机第一块虚拟内存空间对应的目标应用进程可用于模拟目标机节点1上的进程,与宿主机第二块虚拟内存空间对应的目标应用进程可用于模拟目标机节点2上的进程,依此类推,与宿主机第N块虚拟内存空间对应的目标应用进程可用于模拟目标机节点N上的进程。根据一个实施例,可以将每个目标应用进程能够访问的进程地址空间设置为与该目标应用进程对应的虚拟内存空间。根据另一个实施例,不直接设置目标应用进程能够访问的进程地址空间,而是可以设置宿主机中目标应用进程的配置信息中的物理内存大小,即设置宿主机中目标应用进程配置信息中的物理内存大小等于目标机中相应节点的物理内存大小。
通过上述映射关系,在宿主机中划分的虚拟内存空间可以用于模拟目标机中的节点或节点的物理内存,在宿主机中与各个虚拟内存空间对应的目标应用进程可以用于模拟目标机中相应节点上的进程,进而所捕获的在宿主机中与各个虚拟内存空间对应的应用进程对其他虚拟内存空间的访问可以用于模拟目标机中相应节点上的进程对其他节点物理内存的访问。当捕获到该目标应用进程对与之对应的虚拟内存空间之外的其他虚拟内存空间的访问时,则相当于捕获到被模拟的目标机上的远端内存访问,根据目标机互连网络模型可以计算该远端内存访问的时间延迟以及其他模拟数据。可选地但不是必须地,可以在经过该时间延迟之后再执行该对其他虚拟内存空间的访问,例如在经过该时间延迟之后将所访问地址所在的内存页加载到应用进程的内存空间中。
根据一个实施例,当宿主机中运行的目标应用进程导致在宿主机虚拟存储系统中产生缺页中断并引发换页操作时,通过捕获和分析该缺页中断和换页操作可以确定该目标应用进程要访问的虚拟内存空间,可视为发生NUMA系统中对应的进程访问对应的远端内存的操作。根据上述映射关系,可以确定NUMA系统中的哪个节点的进程进行该远端内存访问以及所访问的内存地址。进一步地,可以根据NUMA系统中各个节点之间的互连网络模型计算该远端内存访问行为的时间延迟和其他模拟数据。
图2是按照本发明实施例用于在宿主机上模拟目标机的远端内存访问的方法的流程图。
在步骤2010中,在宿主机中划分多个虚拟内存空间。所划分的多个虚拟内存空间用作上述对应于目标机中各个节点物理内存的虚拟内存空间。根据一个实施例,在划分多个虚拟内存空间时,可以采用上文中结合图1所描述的基于地址的映射策略。
在步骤2020中,将在宿主机中运行的每个目标应用进程设置为对应于所划分的多个虚拟内存空间中的一个虚拟内存空间。根据一个实施例,将每个目标应用进程能够访问的进程地址空间设置为所划分的多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间的范围。根据另一个实施例,可以用更为简单地方式代替设置目标应用进程能够访问的进程地址空间,即,设置目标应用进程的配置信息中的物理内存大小等于与该目标应用进程对应的虚拟内存空间的大小。经过该设置,当目标应用进程访问系统为其分配的所设置大小的内存空间之外的内存空间时,该访存行为将在宿主机系统中产生一个缺页中断,可以利用该缺页中断来模拟目标机中的远端内存访问。例如,当捕获到上述缺页中断时,可以得到引起该缺页中断的目标应用进程的进程号以及要访问的地址,根据上面所述的对应关系,可以得到该进程对应的虚拟内存空间以及要访问的地址对应的虚拟内存空间,从而可以视为在目标机中发生了相应的目标机节点进程对其他节点的物理内存的远端访问,进而可以完成模拟操作。根据一个实施例,在运行上述目标应用进程时,响应于应用进程的内存分配请求,从所划分的多个虚拟内存空间中为该应用进程分配内存。如果为该应用进程分配的部分内存在与该应用进程能够访问的进程地址空间之外,则当该应用进程访问为其分配的该部分内存时,会产生缺页中断。
在步骤2030,捕获该目标应用进程对与之对应的虚拟内存空间之外的虚拟内存空间的访问。根据一个实施例,可以通过捕获目标应用进程产生的缺页中断来捕获该应用进程的非本地内存访问。当捕获到该应用进程对与之对应的虚拟内存空间之外的虚拟内存空间的访问时,则根据上述两种映射关系,相当于在被模拟的目标机中发生相应的目标机节点进程对其他节点的物理内存的远端访问。
在步骤2040中,可以模拟所捕获的远端内存访问行为。例如,可以根据目标机的多个节点之间的互连网络模型计算所捕获远端内存访问的延迟。更具体而言,可以对目标机中的互连网络进行建模,并利用该互连网络模型计算目标机中远端内存访问的时间延迟以及其他模拟信息。根据一个实施例,可以在经过该时间延迟之后将所访问地址所在的内存页加载到应用进程的内存空间中。这里,对NUMA系统的互连网络进行建模的方法是本领域已知的,因此本文中不再提供关于NUMA系统互连网络模型的进一步说明。
图3示出了根据本发明一个实施例的用于捕获远端内存访问的方法流程图,该方法对应于图2中的步骤2030。
下面以Linux操作系统为例描述本发明的实施例,可以理解,本发明也可以在其他操作系统中实现。
在步骤3010中,在宿主机中捕获到一个缺页中断事件。例如,在NUMA系统模拟器中可以创建运行在linux核心态下的捕获模块,该捕获模块在系统换页函数上添加探针,当宿主机系统调用换页函数时,该探针被触发,从而捕获一个缺页中断事件。
在步骤3020,该捕获模块或探针函数判断引起该缺页中断的进程是否是目标应用进程,即上述被设置为与所划分的虚拟内存空间对应的应用进程中的一个。例如,捕获到该缺页中断事件之后,捕获模块可以根据中断信息,得出引发缺页中断的进程号;根据缺页中断地址,计算出该进程需要访问的虚拟内存地址。例如利用进程号可以做出步骤3020中的判断。如果判断为是,则继续进行到步骤3030,如果判断为否,则如方块3050所示说明宿主机中未发生与目标机中远端内存访问对应的虚拟内存空间访问,并且返回到步骤3010。
在步骤3030,判断引起该换页中断的目标应用进程要访问的虚拟内存地址是否在与该应用进程对应的虚拟内存空间之外。如果判断为是,则如方块3040所示说明宿主机中发生与目标机中远端内存访问对应的虚拟内存空间访问,并且进行到步骤2040。如果判断为否,则如方块3050所示说明宿主机中未发生与目标机中远端内存访问对应的虚拟内存空间访问,并且返回到步骤3010。
在步骤2040中,如上所述,捕获模块可以根据中断信息得出引起该中断的应用进程号以及该应用进程要访问的地址。根据宿主机虚拟内存空间和目标机各个节点之间的映射关系,可以得出目标机上与该引起中断的应用进程对应的访存节点和被访存节点,并根据NUMA系统互连网络结构计算该远端内存访问的时间延迟。
需要说明的是,图3中的方块3040和3050是为了便于清楚地说明判断结果而示出的,实际流程中并不会执行这两个方块中的步骤。
图4是根据本发明实施例包含NUMA系统模拟器的宿主机的方块图。如图所示,该宿主机4000包括NUMA系统模拟器4010,该模拟器包括内存映射模块4012、应用进程设置模块4014、捕获模块4016以及互连网络模拟模块4018。内存映射模块用于在宿主机中划分多个虚拟内存空间,应用进程设置模块用于将每个目标应用进程的虚拟地址空间设置为在所划分的多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间,换言之,将每个目标应用进程映射到一个虚拟地址空间,该虚拟地址空间为在所划分的多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间,捕获模块用于捕获目标应用进程对与之对应的虚拟内存空间之外的虚拟内存空间的访问,互连网络模拟模块用于根据目标机中多个节点之间的互连网络的模型模拟与该捕获的访问对应的目标机上远端内存访问,例如,计算被捕获的远端内存访问的时间延迟以及其他信息。
根据一个实施例,内存映射模块将所划分的多个虚拟内存空间配置为与目标机中相对应的多个节点的多个物理内存分别具有相同的大小。根据一个实施例,内存映射模块在宿主机中划分一个总虚拟内存空间,并将该总虚拟内存空间分为上述多个虚拟内存空间,其中该总虚拟内存空间的大小等于目标机中多个节点的物理内存大小的总和。根据一个实施例,内存映射模块将宿主机的该总虚拟内存空间的地址与目标机的多个节点的物理内存的地址一一映射,并将宿主机的该总虚拟内存空间分成等大小的上述多个虚拟内存空间,该多个虚拟内存空间按照地址增长的方式分别与目标机中多个节点的物理内存对应。
根据一个实施例,应用进程设置模块将将每个目标应用进程能够访问的进程地址空间设置为与该目标应用进程对应的虚拟内存空间的范围。根据一个实施例,应用进程设置模块将每个目标应用进程的配置信息中的物理内存大小设置为与该目标应用进程对应的虚拟内存空间的大小。根据一个实施例,应用进程设置模块按照在目标机上的目标机进程与多个节点之间的对应机制将宿主机中的目标应用进程设置到上述多个虚拟内存空间的对应虚拟内存空间上。根据一个实施例,应用进程设置模块按照负载均衡策略,将目标应用进程设置到宿主机中该多个虚拟内存空间的对应虚拟内存空间上,以使在宿主机中该多个虚拟内存空间的各个虚拟内存空间所对应的目标应用进程的工作量尽可能一致。根据一个实施例,应用进程设置模块按照顺序循环的方式,将目标应用进程一一设置到宿主机中多个虚拟内存空间上。
根据一个实施例,捕获模块捕获由于目标应用进程访问与之对应的虚拟内存空间之外的虚拟内存空间而产生的缺页中断。根据一个实施例,捕获模块捕获宿主机上由该应用进程引起的缺页中断,并判断引起该缺页中断的应用进程要访问的内存地址是否在与该应用进程对应的虚拟内存空间之外。根据一个实施例,捕获模块在宿主机的系统换页函数上添加探针,响应于该探针被触发而捕获宿主机上的缺页中断,判断引起该缺页中断的应用进程是否是目标应用进程;如果是,可选地,判断引起该缺页中断的应用进程要访问的内存地址是否在与该应用进程对应的虚拟内存空间之外。根据一个实施例,捕获模块在引起该缺页中断的目标应用进程要访问的内存地址在与该应用进程对应的虚拟内存空间之外时确定发生远端内存访问,并在引起该缺页中断的目标应用进程要访问的内存地址在与该应用进程对应的虚拟内存空间之内时确定未发生远端内存访问。
根据一个实施例,互连网络模拟模块根据目标机中多个节点之间的互连网络的模型,模拟与该捕获的访问对应的目标机上远端内存访问,例如计算与在宿主机中该捕获的访问对应的目标机上远端内存访问的时间延迟。根据一个实施例,可选地,互连网络模拟模块在所计算的时间延迟之后,将引起该缺页中断的应用进程的所访问地址所在的内存页加载到该应用进程的虚拟内存空间中。
图5是根据本发明实施例的用于模拟远端内存访问的装置。如图所示,该装置50包括:在宿主机中划分多个虚拟内存空间的单元5010,将每个目标应用进程的虚拟地址空间设置为在所划分的多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间的单元5020,捕获目标应用进程对与之对应的虚拟内存空间之外的虚拟内存空间的访问的单元5030,模拟所捕获的远端内存访问行为的单元5040。图5中的各个单元可以包括处理器、电子设备、硬件设备、电子部件、逻辑电路、存储器、或其任意组合等,或者可以用上述设备实现。
图6是根据本发明实施例实现的宿主机。如图所示,该宿主机6000包括:存储器6020,其提供内存地址空间;处理器6010,配置为:在存储器中划分多个虚拟内存空间;将每个目标应用进程的虚拟地址空间设置为在所划分的多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间;捕获目标应用进程对与之对应的虚拟内存空间之外的虚拟内存空间的访问。
本文所描述的方法的步骤可直接体现为硬件、由处理器执行的软件或两者的组合,软件可以位于存储介质中。根据本发明的一个实施例,本发明的宿主机可以通过处理器执行指令来实现远端内存访问的模拟。在存储器中存储用于实现上面结合图2和3所述的远端内存访问模拟方法的指令,处理器通过执行该指令来实现该远端内存访问的模拟方法。本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (32)
1.一种用于在宿主机上模拟目标机中远端内存访问的方法,包括:
在宿主机中划分多个虚拟内存空间;
将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该目标应用进程对应的一个虚拟内存空间;
捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问。
2.如权利要求1所述的方法,其中,宿主机中的所述多个虚拟内存空间分别对应于被模拟的目标机中多个节点的多个物理内存空间,在宿主机中执行的所述目标应用进程分别对应于在被模拟的目标机中执行的目标机进程。
3.如权利要求2所述的方法,其中,在宿主机中划分多个虚拟内存空间进一步包括:
在宿主机中划分一个总虚拟内存空间,该总虚拟内存空间的大小等于目标机中的所述多个节点的物理内存大小的总和;
将所述总虚拟内存空间分为所述多个虚拟内存空间。
4.如权利要求1所述的方法,其中,将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间进一步包括:
将每个目标应用进程能够访问的进程地址空间设置为与该目标应用进程对应的虚拟内存空间。
5.如权利要求1所述的方法,其中,将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间进一步包括:
将每个目标应用进程的配置信息中的物理内存大小设置为与该目标应用进程对应的虚拟内存空间的大小。
6.如权利要求1所述的方法,其中,捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问进一步包括:
捕获由于目标应用进程访问与之对应的虚拟内存空间之外的虚拟内存空间而产生的缺页中断。
7.如权利要求1所述的方法,其中,捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问进一步包括:
捕获宿主机上由目标应用进程引起的缺页中断;
判断引起所述缺页中断的目标应用进程要访问的内存地址是否在与该目标应用进程对应的虚拟内存空间之外。
8.如权利要求1所述的方法,其中,捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问进一步包括:
在宿主机的系统换页函数上添加探针;
响应于所述探针被触发,捕获宿主机上的缺页中断;
判断引起所述缺页中断的应用进程是否是目标应用进程;
如果是,则判断引起所述缺页中断的该目标应用进程要访问的内存地址是否在与该目标应用进程对应的虚拟内存空间之外。
9.如权利要求1所述的方法,还包括:
根据目标机中多个节点之间互连网络的模型,模拟与该捕获的访问对应的目标机上远端内存访问。
10.一种用于在宿主机上模拟目标机中远端内存访问的装置,包括:
在宿主机中划分多个虚拟内存空间的单元;
将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该目标应用进程对应的一个虚拟内存空间的单元;
捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问的单元。
11.如权利要求10所述的装置,其中,宿主机中的所述多个虚拟内存空间分别对应于被模拟的目标机中多个节点的多个物理内存空间,在宿主机中执行的所述目标应用进程分别对应于在被模拟的目标机中执行的目标机进程。
12.如权利要求11所述的装置,其中,在宿主机中划分多个虚拟内存空间的单元进一步包括:
在宿主机中划分一个总虚拟内存空间的单元,该总虚拟内存空间的大小等于目标机中的所述多个节点的物理内存大小的总和;
将所述总虚拟内存空间分为所述多个虚拟内存空间的单元。
13.如权利要求10所述的装置,其中,将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间的单元进一步包括:
将每个目标应用进程能够访问的进程地址空间设置为与该目标应用进程对应的虚拟内存空间的单元。
14.如权利要求10所述的装置,其中,将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间的单元进一步包括:
将每个目标应用进程的配置信息中的物理内存大小设置为与该目标应用进程对应的虚拟内存空间的大小的单元。
15.如权利要求10所述的装置,其中,捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问的单元进一步包括:
捕获由于目标应用进程访问与之对应的虚拟内存空间之外的虚拟内存空间而产生的缺页中断的单元。
16.如权利要求10所述的装置,其中,捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问的单元进一步包括:
捕获宿主机上由目标应用进程引起的缺页中断的单元;
判断引起所述缺页中断的目标应用进程要访问的内存地址是否在与该目标应用进程对应的虚拟内存空间之外的单元。
17.如权利要求10所述的装置,其中,捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问的单元进一步包括:
在宿主机的系统换页函数上添加探针的单元;
响应于所述探针被触发,捕获宿主机上的缺页中断的单元;
判断引起所述缺页中断的应用进程是否是目标应用进程的单元;
如果是,则判断引起所述缺页中断的该目标应用进程要访问的内存地址是否在与该目标应用进程对应的虚拟内存空间之外的单元。
18.如权利要求1所述的装置,还包括:
根据目标机中多个节点之间互连网络的模型,模拟与该捕获的访问对应的目标机上远端内存访问的单元。
19.一种用于模拟目标机中远端内存访问的模拟器,包括:
内存映射模块,用于在宿主机中划分多个虚拟内存空间;
应用进程设置模块,用于将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间;
捕获模块,用于捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问。
20.如权利要求19所述的模拟器,其中,宿主机中的所述多个虚拟内存空间分别对应于被模拟的目标机中多个节点的多个物理内存空间,在宿主机中执行的所述目标应用进程分别对应于在被模拟的目标机中执行的目标机进程。
21.如权利要求20所述的模拟器,其中,所述内存映射模块进一步用于:
在宿主机中划分一个总虚拟内存空间,该总虚拟内存空间的大小等于目标机中的所述多个节点的物理内存大小的总和;
将所述总虚拟内存空间分为所述多个虚拟内存空间。
22.如权利要求19所述的模拟器,其中,所述应用进程设置模块进一步用于:
将每个目标应用进程能够访问的进程地址空间设置为与该目标应用进程对应的虚拟内存空间。
23.如权利要求19所述的模拟器,其中,所述应用进程设置模块进一步用于:
将每个目标应用进程的配置信息中的物理内存大小设置为与该目标应用进程对应的虚拟内存空间的大小。
24.如权利要求19所述的模拟器,其中,所述捕获模块进一步用于:
捕获由于目标应用进程访问与之对应的虚拟内存空间之外的虚拟内存空间而产生的缺页中断。
25.如权利要求19所述的模拟器,其中,所述捕获模块进一步用于:
捕获宿主机上由目标应用进程引起的缺页中断;
判断引起所述缺页中断的目标应用进程要访问的内存地址是否在与该目标应用进程对应的虚拟内存空间之外。
26.如权利要求19所述的模拟器,其中,所述捕获模块进一步用于:
在宿主机的系统换页函数上添加探针;
响应于所述探针被触发,捕获宿主机上的缺页中断;
判断引起所述缺页中断的应用进程是否是目标应用进程;
如果是,则判断引起所述缺页中断的该目标应用进程要访问的内存地址是否在与该目标应用进程对应的虚拟内存空间之外。
27.如权利要求19所述的模拟器,还包括:
互连网络模拟模块,用于根据目标机中多个节点之间互连网络的模型,模拟与该捕获的访问对应的目标机上远端内存访问。
28.一种宿主机,其包括如权利要求19-27中的任何一个所述的模拟器。
29.一种宿主机,包括:
存储器,
处理器,配置为:在所述存储器中划分多个虚拟内存空间;将每个目标应用进程的虚拟地址空间设置为在所述多个虚拟内存空间中与该应用进程对应的一个虚拟内存空间;捕获目标应用进程对所述多个虚拟内存空间中与之对应的虚拟内存空间之外的虚拟内存空间的访问。
30.一种用于模拟远端内存访问的系统,包括:
存储器,用于存储指令;
处理器,用于执行该指令,以使得该系统能够执行权利要求1-9中任意一个权利要求所述的方法。
31.一种机器可读介质,其中存储指令,当机器执行该指令时,使得该机器能够执行权利要求1-9中任意一个权利要求所述的方法。
32.一种计算机程序,该计算机程序用于执行权利要求1-9中任意一个权利要求所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2011/077377 WO2012106908A1 (zh) | 2011-07-20 | 2011-07-20 | 多处理器体系结构远端内存访问的模拟方法及模拟器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102308282A true CN102308282A (zh) | 2012-01-04 |
Family
ID=45381250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800013167A Pending CN102308282A (zh) | 2011-07-20 | 2011-07-20 | 多处理器体系结构远端内存访问的模拟方法及模拟器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130024646A1 (zh) |
CN (1) | CN102308282A (zh) |
WO (1) | WO2012106908A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346234A (zh) * | 2013-08-09 | 2015-02-11 | 华为技术有限公司 | 一种内存访问的方法、设备及系统 |
CN104536764A (zh) * | 2015-01-09 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 程序运行方法和装置 |
CN104571934A (zh) * | 2013-10-18 | 2015-04-29 | 华为技术有限公司 | 一种内存访问的方法、设备和系统 |
CN105988871A (zh) * | 2015-01-27 | 2016-10-05 | 华为技术有限公司 | 一种远端内存分配方法、装置和系统 |
CN107466397A (zh) * | 2015-04-07 | 2017-12-12 | 微软技术许可有限责任公司 | 由主虚拟存储器支持的虚拟机 |
CN108572864A (zh) * | 2017-03-13 | 2018-09-25 | 龙芯中科技术有限公司 | 触发负载均衡调度的方法、装置及服务器 |
CN109117416A (zh) * | 2018-09-27 | 2019-01-01 | 贵州华芯通半导体技术有限公司 | 插槽间的数据迁移或交换的方法和装置以及多处理器系统 |
CN109769018A (zh) * | 2018-12-29 | 2019-05-17 | 联想(北京)有限公司 | 一种信息处理方法、服务器和共享主机 |
CN111459849A (zh) * | 2020-04-20 | 2020-07-28 | 网易(杭州)网络有限公司 | 一种内存的设置方法及装置、电子设备、存储介质 |
CN112948149A (zh) * | 2021-03-29 | 2021-06-11 | 江苏为是科技有限公司 | 一种远端内存共享方法、装置、电子设备及存储介质 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103547344B (zh) * | 2013-07-15 | 2016-03-09 | 华为技术有限公司 | 一种周跳的检测方法、装置及接收机 |
WO2015120170A1 (en) | 2014-02-05 | 2015-08-13 | Bigdatabio, Llc | Methods and systems for biological sequence compression transfer and encryption |
CN105786612B (zh) * | 2014-12-23 | 2019-05-24 | 杭州华为数字技术有限公司 | 一种资源管理方法及装置 |
WO2016130557A1 (en) | 2015-02-09 | 2016-08-18 | Bigdatabio, Llc | Systems, devices, and methods for encrypting genetic information |
US11275721B2 (en) * | 2015-07-17 | 2022-03-15 | Sap Se | Adaptive table placement in NUMA architectures |
US20170139849A1 (en) * | 2015-11-17 | 2017-05-18 | HGST Netherlands B.V. | Driverless storage device using serially-attached non-volatile memory |
US10567461B2 (en) * | 2016-08-04 | 2020-02-18 | Twitter, Inc. | Low-latency HTTP live streaming |
US10929309B2 (en) | 2017-12-19 | 2021-02-23 | Western Digital Technologies, Inc. | Direct host access to storage device memory space |
US11017126B2 (en) | 2017-12-19 | 2021-05-25 | Western Digital Technologies, Inc. | Apparatus and method of detecting potential security violations of direct access non-volatile memory device |
US11720283B2 (en) | 2017-12-19 | 2023-08-08 | Western Digital Technologies, Inc. | Coherent access to persistent memory region range |
US20190278715A1 (en) * | 2018-03-12 | 2019-09-12 | Nutanix, Inc. | System and method for managing distribution of virtual memory over multiple physical memories |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1492323A (zh) * | 2002-09-17 | 2004-04-28 | �Ҵ���˾ | 多处理器地址转换的高效仿真方法和系统 |
CN101477496A (zh) * | 2008-12-29 | 2009-07-08 | 北京航空航天大学 | 基于分布式内存虚拟化的numa结构的实现方法 |
CN101604283A (zh) * | 2009-06-11 | 2009-12-16 | 北京航空航天大学 | 一种基于Linux内核页表替换的内存访问模型追踪方法 |
WO2010111149A2 (en) * | 2009-03-26 | 2010-09-30 | Microsoft Corporation | Virtual non-uniform memory architecture for virtual machines |
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7523352B2 (en) * | 2005-09-09 | 2009-04-21 | International Business Machines Corporation | System and method for examining remote systems and gathering debug data in real time |
US7596654B1 (en) * | 2006-01-26 | 2009-09-29 | Symantec Operating Corporation | Virtual machine spanning multiple computers |
-
2011
- 2011-07-20 WO PCT/CN2011/077377 patent/WO2012106908A1/zh active Application Filing
- 2011-07-20 CN CN2011800013167A patent/CN102308282A/zh active Pending
-
2012
- 2012-07-20 US US13/554,827 patent/US20130024646A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1492323A (zh) * | 2002-09-17 | 2004-04-28 | �Ҵ���˾ | 多处理器地址转换的高效仿真方法和系统 |
CN101477496A (zh) * | 2008-12-29 | 2009-07-08 | 北京航空航天大学 | 基于分布式内存虚拟化的numa结构的实现方法 |
WO2010111149A2 (en) * | 2009-03-26 | 2010-09-30 | Microsoft Corporation | Virtual non-uniform memory architecture for virtual machines |
CN101604283A (zh) * | 2009-06-11 | 2009-12-16 | 北京航空航天大学 | 一种基于Linux内核页表替换的内存访问模型追踪方法 |
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015018351A1 (zh) * | 2013-08-09 | 2015-02-12 | 华为技术有限公司 | 一种内存访问的方法、设备及系统 |
CN104346234A (zh) * | 2013-08-09 | 2015-02-11 | 华为技术有限公司 | 一种内存访问的方法、设备及系统 |
US9772891B2 (en) | 2013-08-09 | 2017-09-26 | Huawei Technologies Co., Ltd. | Memory access method, device, and system |
CN104346234B (zh) * | 2013-08-09 | 2017-09-26 | 华为技术有限公司 | 一种内存访问的方法、设备及系统 |
CN104571934B (zh) * | 2013-10-18 | 2018-02-06 | 华为技术有限公司 | 一种内存访问的方法、设备和系统 |
CN104571934A (zh) * | 2013-10-18 | 2015-04-29 | 华为技术有限公司 | 一种内存访问的方法、设备和系统 |
CN104536764A (zh) * | 2015-01-09 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 程序运行方法和装置 |
CN105988871A (zh) * | 2015-01-27 | 2016-10-05 | 华为技术有限公司 | 一种远端内存分配方法、装置和系统 |
CN105988871B (zh) * | 2015-01-27 | 2020-06-02 | 华为技术有限公司 | 一种远端内存分配方法、装置和系统 |
CN107466397A (zh) * | 2015-04-07 | 2017-12-12 | 微软技术许可有限责任公司 | 由主虚拟存储器支持的虚拟机 |
CN108572864A (zh) * | 2017-03-13 | 2018-09-25 | 龙芯中科技术有限公司 | 触发负载均衡调度的方法、装置及服务器 |
CN109117416A (zh) * | 2018-09-27 | 2019-01-01 | 贵州华芯通半导体技术有限公司 | 插槽间的数据迁移或交换的方法和装置以及多处理器系统 |
CN109769018A (zh) * | 2018-12-29 | 2019-05-17 | 联想(北京)有限公司 | 一种信息处理方法、服务器和共享主机 |
CN111459849A (zh) * | 2020-04-20 | 2020-07-28 | 网易(杭州)网络有限公司 | 一种内存的设置方法及装置、电子设备、存储介质 |
CN111459849B (zh) * | 2020-04-20 | 2021-05-11 | 网易(杭州)网络有限公司 | 一种内存的设置方法及装置、电子设备、存储介质 |
CN112948149A (zh) * | 2021-03-29 | 2021-06-11 | 江苏为是科技有限公司 | 一种远端内存共享方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2012106908A1 (zh) | 2012-08-16 |
US20130024646A1 (en) | 2013-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102308282A (zh) | 多处理器体系结构远端内存访问的模拟方法及模拟器 | |
EP3754496B1 (en) | Data processing method and related products | |
Manousis et al. | Contention-aware performance prediction for virtualized network functions | |
Hestness et al. | Netrace: dependency-driven trace-based network-on-chip simulation | |
CN107967180B (zh) | 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统 | |
US7890314B2 (en) | Method for modeling performance of embedded processors having combined cache and memory hierarchy | |
KR102161192B1 (ko) | 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치 | |
CN109964207A (zh) | 用于时间行程调试和分析的基于高速缓存的跟踪 | |
Marin et al. | Simulating search engines | |
Wen et al. | An fpga-based hybrid memory emulation system | |
Zakharenko et al. | Characterizing the performance benefits of fused CPU/GPU systems using FusionSim | |
Quan et al. | A system-level simulation framework for evaluating task migration in MPSoCs | |
Kim et al. | Aurora: Virtualized accelerator orchestration for multi-tenant workloads | |
Lee et al. | GCoM: a detailed GPU core model for accurate analytical modeling of modern GPUs | |
JP4149762B2 (ja) | メモリ資源最適化支援方法、プログラム及び装置 | |
Tan et al. | GPUPool: A holistic approach to fine-grained gpu sharing in the cloud | |
CN116167310A (zh) | 一种验证多核心处理器缓存一致性的方法及装置 | |
Punniyamurthy et al. | GATSim: Abstract timing simulation of GPUs | |
Hwang et al. | {ARK}:{GPU-driven} Code Execution for Distributed Deep Learning | |
Li et al. | Breaking the boundary for whole-system performance optimization of big data | |
Fu et al. | Optimizing memory access traffic via runtime thread migration for on-chip distributed memory systems | |
CN109117247A (zh) | 一种基于异构多核拓扑感知的虚拟资源管理系统及方法 | |
Giorgi et al. | Translating timing into an architecture: the synergy of COTSon and HLS (domain expertise—designing a computer architecture via HLS) | |
Slimane et al. | HLSMN: High Level Multicore NUMA Simulator. | |
Fu et al. | Universal simulation engine (USE) a model-independent library for discrete event simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120104 |