CN102609254A - 获取对象级访存行为的方法及装置 - Google Patents
获取对象级访存行为的方法及装置 Download PDFInfo
- Publication number
- CN102609254A CN102609254A CN2012100179629A CN201210017962A CN102609254A CN 102609254 A CN102609254 A CN 102609254A CN 2012100179629 A CN2012100179629 A CN 2012100179629A CN 201210017962 A CN201210017962 A CN 201210017962A CN 102609254 A CN102609254 A CN 102609254A
- Authority
- CN
- China
- Prior art keywords
- memory access
- information
- page table
- virtual address
- physical address
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种软硬件结合方式来获取对象级访存行为的方法。该方法通过硬件侦听的方式获取每个访存请求中关于物理地址、读/写、到达时间的信息;获取进程页表信息,实时监控并记录内核更新页表的操作;实时监控进程的动态分配和释放内存的操作,获取对象的虚拟地址空间信息。并通过整合上述信息得到了精确的对象级访存行为,为程序调试和性能调优提供丰富的访存信息。而且该方法不会对程序的执行造成干扰,不会引入额外开销。
Description
技术领域
本发明涉及程序分析和优化,尤其涉及获取访存行为的方法。
背景技术
在进行程序行为分析、程序调试和性能调优时,对象(或变量)级访存行为分析能够帮助程序员深入理解程序的性能瓶颈,为程序访存性能的优化提供指导,也是进行存储系统结构设计和优化的基础。
目前获取或分析对象级访存行为的方式有:模拟器,代码插桩,性能计数器,以及硬件侦听。模拟器通过灵活控制程序的运行并在指定的地方添加代码或模块收集所需要的信息,但是模拟器的速度较慢,难以获取程序完整执行的访存行为,而且模拟器的精度与真实机器存在差距。代码插桩方式使用即时编译技术在程序运行过程当中,重新编排原程序的代码并在指定的插桩点位置插入收集信息的代码。但是代码插桩的扩展性不好,无法用于大规模的应用,而且会引入额外的访存开销及缓存(Cache)污染,对于细粒度的代码插桩,性能开销也比较大。性能计数器是现代处理器提供的用于统计程序执行过程中的丰富的事件信息,可以高效地获得系统的访存行为特征。但是性能计数器只能获取一些统计信息,而无法获取应用完整的访存序列,无法对应用访存行为做更深入的分析。硬件侦听工具一般插在总线上侦听访存命令,可以得到完整的访存地址序列(Trace),而且不会带来访存干扰和运行开销。但是硬件侦听方式只能获取底层的物理地址,不能获取高层事件信息,无法获取对象级的访存行为。
发明内容
因此,本发明的目的在于解决纯软件方式获取访存行为存在的干扰和较大的性能开销而硬件侦听方式无法获取高层语义信息的问题,通过软硬件结合方式获取对象级访存行为,既能降低开销又能提高精度。
本发明的目的是通过以下技术方案实现的:
一方面,本发明提供了一种获取对象级访存行为的方法,包括:
步骤1)通过硬件侦听的方式捕获内存总线上的所有访存请求,获取每个访存请求中关于物理地址、读/写、到达时间的信息;
步骤2)获取进程页表信息并实时监控和记录内核更新页表的操作;
步骤3)实时监控进程的动态分配和释放内存的操作,获取对象的虚拟地址空间信息,所述对象的虚拟地址空间信息包括对象标识、对象的起始虚拟地址和对象的大小;
步骤4)基于所获取的物理地址和到达时间信息、进程页表信息和对象的虚拟地址空间信息来获得对象的访存物理地址序列和访存虚拟地址序列。
上述方法中,步骤1)还可以包括将所获取的物理地址和到达时间信息发送并保存到另一计算装置的步骤。
上述方法中,步骤2)可以包括以下步骤:
在该方法开始时获取初始的进程页表信息,所述进程页表信息包括:进程标识、物理地址、虚拟地址;
监控内核更新页表的操作,记录每次页表更新操作的相关信息;
在检测到页表更新操作的同时,将一个访问特定保留物理地址空间的同步访存请求发送到内存总线上。
上述方法中,在步骤2)可以通过修改操作系统中更新页表操作的函数来记录每次页表更新操作的相关信息,该信息包括进程标识,物理地址,虚拟地址。
上述方法中,所述特定保留物理地址空间仅允许所述同步访存请求进行访问,而不允许操作系统对其进行访问。
上述方法中,步骤3)可以通过重载用于分配内存和释放内存的相关动态库函数来将对象的标识符、对象的起始地址和对象的大小的信息保存到文件中以获取对象的虚拟地址空间信息。
上述方法中,步骤3)还可以通过分析可执行程序的符号表信息来获得静态分配对象及全局对象的虚拟地址空间信息。
上述方法中,步骤4)可以包括以下步骤:
步骤(4-1)根据所获取的进程页表信息重新构造进程页表;
步骤(4-2)依次对于每个物理地址,判断该物理地址是否属于为同步访存请求保留的物理地址空间,如果是,则读取所记录的与该同步访问请求相应的页表更新操作的相关信息来更新进程页表;否则查询进程页表,得到该物理地址所对应的虚拟地址和进程号;并匹配该虚拟地址落在哪个对象的虚拟地址空间;
步骤(4-3)整合得到每个对象的访存物理地址序列和访存虚拟地址序列。
又一个方面,本发明提供了一种获取对象级访存行为的装置,该装置包括:
硬件侦听器,用于通过硬件侦听的方式捕获内存总线上的所有访存请求,获取每个访存请求中关于物理地址、读/写、到达时间的信息;
内核监控器,用于获取进程页表信息并实时监控和记录内核更新页表的操作;
进程监控器,用于实时监控进程的动态分配和释放内存的操作,获取对象的虚拟地址空间信息,所述对象的虚拟地址空间信息包括对象标识、对象的起始虚拟地址和对象的大小;
整合器,用于基于所获取的物理地址和到达时间信息、进程页表信息和对象的虚拟地址空间信息来获得对象的访存物理地址序列和访存虚拟地址序列。
与现有技术相比,本发明的优点在于:
使用硬件侦听的方式获取访存请求中的物理地址,不会对程序的执行造成干扰,不会引入额外开销。通过修改内核,捕获更新页表的操作并将页表信息导出来,能够准确地离线重构进程页表。同时,在进程执行过程中采用重载动态库的方式捕获对象的内存地址空间信息。通过整合上述信息得到了精确的对象级访存行为,为程序调试和性能调优提供丰富的访存信息。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例的获取对象级访存行为的方法的流程示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在介绍本发明之前,首先对对象级访存行为进行简单介绍。通常,通过对访存行为的分析可以有助于进行程序分析和优化。例如,通过获取进程执行过程中的所有访存地址序列,可以分析进程的访存行为特征,比如是否连续,或者为固定步长的访存模式,或者为随机的访存,这可用于指导程序的访存优化。而获取对象级访存行为是指获取进程执行过程中每个对象的所有访存地址序列,即每个对象的访存物理地址序列和访存虚拟地址序列。通过获取每个对象的地址空间,可以得到每个访存请求是由哪个对象发出的,分析每个对象的访存行为特征,这可用于更细粒度的程序优化,如将不同访存模式的对象放到不同的缓存(Cache)空间中,防止随机访存的对象干扰规律访存的对象。
在本发明的实施例中,通过捕获并解析访存请求来获取对象级访存行为。对于每个访存请求主要获取以下信息:<物理地址,读/写,到达时间,进程标识,虚拟地址,对象标识>,其中物理地址为本次访存请求访问的物理地址,读/写指示本次访存是读请求还是写请求,到达时间为访存请求达到内存命令总线的时间,进程标识为发送本次访存请求的进程标识(pid),虚拟地址为本次访存请求在对应进程虚拟地址空间中的虚地址,对象标识为发送本次访存请求的对象标识。在下文中也可以将这些信息统称为访存信息。
在本发明的一个实施例中,提出了一种采用软硬件结合的方式来获取对象级访存行为的方法。该方法在硬件方面通过硬件侦听器获取包括操作系统,所有进程,以及所有其他发送到内存命令总线上的访存请求。通过这种硬件侦听方式可以得到每个访存请求中的关于物理地址,读/写,到达时间的信息。同时该方法在软件方面,通过获取进程页表信息并在内核中监测对所有进程的页表更新操作;并且在进程执行过程中,监测每个对象的动态分配/释放内存操作,获取每个对象的虚拟地址空间信息(例如,每个对象起始地址和大小信息)。然后,离线整合上述所获取信息来获得对象级的访存行为。例如,可以通过根据进程页表信息重构指定进程的页表,使用每个访存请求中的物理地址查询重构的进程页表,获取该访存请求中的关于进程标识和虚拟地址的信息;再判断所获得的虚拟地址属于哪个对象的虚拟地址空间,这样得到访存请求中的关于对象标识的信息。从而通过该方法可以得到在进程执行过程中每个对象的访存地址序列,即每个对象的访存物理地址序列和访存虚拟地址序列。
图1给出了根据本发明实施例的获取对象级访存行为的方法的流程示意图。如图1所示,该方法主要包括以下步骤:
步骤1),通过硬件侦听的方式捕获所有访存请求,获取每个访存请求中关于物理地址、读/写、到达时间的信息(10)。
在一个实施例中,可以通过将硬件侦听器直接插在被监测计算机主板上的内存双列直插内存模块(DIMM)插槽上,通过监测内存命令总线上接收到的所有访存请求信号,捕获包括操作系统在内的所有进程的访存请求。其中,硬件侦听器例如可以是专利号为200510008612.6的一种内存监测分析装置。当然也可以使用其他现有的硬件侦听方法来获得访存请求中的关于物理地址、读/写,到达时间的信息。采用这种硬件侦听方式由于直接侦听内存命令总线,因此可以检测和捕获包括CPU,IO外设等所有发送到内存的请求。从而获取包括操作系统在内的所有进程的访存物理地址序列。而且不需要修改程序,不会对程序的执行造成干扰,也不会引入额外开销。
还可以将所捕获的访存请求序列发送到另一台接收机并保存到文件中以便离线分析,统计程序的访存行为特征。但是硬件侦听的方式不能区别访存请求来自哪个进程,也就是其不能获取访存请求中关于进程标识,虚拟地址,对象标识的信息。为了能将来自操作系统及不同进程的访存请求区分开来,还需要获取进程的页表信息,通过查询页表,就能够得到每个访存请求所在进程的标识(pid),及访存请求中的虚拟地址信息。之所以将所捕获的访存地址序列发送到另一台接收机上进行保存,是因为这样保存地址序列的过程就不会干扰进程的执行。
步骤2)获取进程页表信息并实时监控和记录内核更新页表的操作(20)。
进程页表信息包括进程标识(pid),物理地址,虚拟地址等信息。在内核中,每个进程都维护一张页表,用于从访存虚拟地址查询得到物理地址。首先要获取初始的进程页表信息,也就是在开始执行本申请的方法时,即在开始监控时,获取当时内核中所有进程的页表信息。
由于进程的页表是动态变化的,并且由内核负责更新维护所有进程的页表信息。每次页表更新操作都需要陷入到内核态进行。所以需要在进程的执行过程中监控所有对进程页表的更新操作,并记录对进程页表的所有更新操作的相关信息,每个更新操作的相关信息包括对哪个页表项进行更新,属于哪个进程,更新后的物理地址,虚拟地址,以及记录更新页表的操作的发生时间。
在一个实施例中,可以通过修改操作系统内核中更新页表操作的函数,如native_set_pte_at,native_pte_clear,将每次页表更新操作中的进程标识,物理地址,虚拟地址记录并保存在文件中,用于后续的离线分析。而且为了提高性能,可以不直接将所捕获的页表信息写到文件中,而是先写到内存缓冲区(例如,页表数据缓冲区)中,等缓冲区满后再一次性写到文件中。
另外,在后续的离线分析中,为了保证重新动态构建的进程页表与硬件获取的物理内存地址序列在时间上保持同步,还需要记录每次页表更新操作发生的时间。在一个实施例中,提供了一种利用硬件时钟进行同步的方法。该方法通过硬件侦听方式来获取更新操作发生的时间。也就是在检测到页表更新操作的同时,将一个访问特定保留物理地址空间的访存请求发送到内存总线上,硬件侦听器可捕获该访存请求并获得其中的物理地址和时间信息。这个特定的访存请求也可以称为同步访存请求,其不经过缓存,直接被发送到内存总线。该同步访存请求访问的是特殊预留的空间,例如,预留一段很小的物理内存空间,比如4GB的物理内存只需要保留64MB的空间,只占总空间的1.56%,所以不会影响系统及其他程序的执行。而且不允许操作系统直接访问或使用这段预留的物理地址空间。在操作系统启动后,将这段空间通过ioremap映射到内核空间,并指定为不过缓存(Uncache),以仅用于同步访存请求的访问,而不受到其他访问(比如操作系统)的干扰,硬件侦听器检测到对这段保留空间的访存就能识别出该访存请求为同步访存请求。也就是说,在硬件侦听器所捕获的访存请求中,只要其中的物理地址属于这段特殊预留的空间,就可以判断出该访存请求是同步访存请求,其中的时间信息可以表示页表更新操作发生的时间,也就是表示这时发生了页表更新操作。在后续的离线分析中,判断所获取的物理地址序列中每个物理地址,如果该物理地址属于所述特定保留物理地址空间,则读取一次所记录的页表更新操作的相关信息更新重构的进程页表;否则查询进程页表得到该物理地址对应的虚拟地址和进程标识。
步骤3)实时监控进程的动态分配和释放内存的操作,获取对象的虚拟地址空间信息(30)。
对象的虚拟地址空间信息包括对象标识符、对象的起始虚拟地址和大小。为了获取对象的虚拟地址空间信息,可以在每次进程分配动态空间时,将分配的每个对象的起始虚拟地址和大小以及对象标识符都记录下来。在一个实施例中,可以通过重载内存的分配和释放的相关动态库函数,例如,glibc库中的malloc,calloc,realloc,free函数,来获取对象的虚拟地址空间信息。这是因为动态分配对象的地址空间是通过malloc,calloc,realloc函数实现的,调用这些函数时需要指定对象的大小,而这些函数返回对象的起始地址。这样通过重载这些函数,在每次动态分配对象的地址空间时,都将对象的起始地址和大小记录下来并保存到文件中。可以通过设置Linux系统中的LD_PRELOAD环境变量在程序运行之前将重载过的动态库预先加载到进程的地址空间,实现获取对象的虚拟地址空间信息。这样,不会影响其他程序的行为,除非程序在执行之前强制优先加载重载过的动态库,否则都将使用默认的glibc库。
这种方式可以获取运行时动态分配的对象的虚拟地址空间信息。实际上较大的对象都是在运行时为其动态分配空间的,而进程的主要访存行为都是由于访问这些大对象引起的。但是,为了监测对象虚拟地址空间的完整性,还可以通过分析可执行程序的符号表信息来监测静态分配对象及全局对象的虚拟地址空间信息。
步骤4)基于经上述步骤获得的信息(访存物理地址序列、进程页面信息和对象的虚拟地址空间信息)来获取对象级访存行为。
在一个实施例中,步骤4)可以包括以下步骤:
步骤(4-1)根据所获取的初始的进程页表信息重新构造进程页表(40)。
步骤(4-2)对于每个物理地址,判断该物理地址是否属于为同步访存请求保留的物理地址空间,如果是,则读取所记录的与该同步访问请求相应的页表更新操作的相关信息来更新进程页表;否则查询进程页表,得到该物理地址所对应的虚拟地址和进程号;并匹配该虚拟地址落在哪个对象的虚拟地址空间(50)。
步骤(4-3)整合得到每个对象的访存物理地址序列和访存虚拟地址序列(60)。
从而根据所获得的对象级访存行为,可以分析每个对象的访存行为特征,进行更细粒度的程序优化,如将不同访存模式的对象放到不同的缓存(Cache)空间中,防止随机访存的对象干扰规律访存的对象等。
对于没有符号表和源码的程序,通过上述方法仍然可以得到所有动态分配地址空间的对象(这是程序访存的主要来源)的访存序列,只是无法将导致访问对象的访存行为精确定位到源码的位置,对于这种情况,可以通过分析不同代码区段(比如,将每个函数看作一个源码区段)的访存特征(这可以通过反汇编,Pin等工具实现),然后与获取的对象访存行为特征进行匹配,这样就能大概定位出对象访存行为所在源码的区段位置,例如是由哪个函数发出来的访存请求,定位到函数以后,还可以将函数代码区段进一步细分成基本块代码区段,从而定位出基本块的代码区段。
可见,本发明的方法使用硬件侦听的方式获取访存请求中的物理地址,不会对程序的执行造成干扰,不会引入额外开销。通过修改内核,捕获更新页表的操作并将页表信息导出来,能够准确地离线重构进程页表。同时,在进程执行过程中采用重载动态库的方式捕获对象的内存地址空间信息。通过整合上述信息得到了精确的对象级访存行为,为程序调试和性能调优提供丰富的访存信息。
在本发明的又一个实施例中,还提供了一种获取对象级访存行为的装置。该装置包括硬件侦听器、内核监控器、进程监控器和整合器。其中,硬件侦听器用于通过硬件侦听的方式捕获内存总线上的所有访存请求,获取每个访存请求中关于物理地址、读/写、到达时间的信息。内核监控器,获取进程页表信息并实时监控和记录内核更新页表的操作。进程监控器实时监控进程的动态分配和释放内存的操作,获取对象的虚拟地址空间信息。所述对象的虚拟地址空间信息包括对象标识、对象的起始虚拟地址和对象的大小。整合器基于所获取的物理地址和到达时间信息、进程页表信息和对象的虚拟地址空间信息来获得对象的访存物理地址序列和访存虚拟地址序列。
虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。
Claims (9)
1.一种获取对象级访存行为的方法,所述方法包括:
步骤1)通过硬件侦听的方式捕获内存总线上的所有访存请求,获取每个访存请求中关于物理地址、读/写、到达时间的信息;
步骤2)获取进程页表信息并实时监控和记录内核更新页表的操作;
步骤3)实时监控进程的动态分配和释放内存的操作,获取对象的虚拟地址空间信息,所述对象的虚拟地址空间信息包括对象标识、对象的起始虚拟地址和对象的大小;
步骤4)基于所获取的物理地址和到达时间信息、进程页表信息和对象的虚拟地址空间信息来获得对象的访存物理地址序列和访存虚拟地址序列。
2.根据权利要求1所述的方法,步骤1)还包括将所获取的物理地址和到达时间信息发送并保存到另一计算装置的步骤。
3.根据权利要求1或2所述的方法,步骤2)包括以下步骤:
在该方法开始时获取初始的进程页表信息,所述进程页表信息包括:进程标识、物理地址、虚拟地址;
监控内核更新页表的操作,记录每次页表更新操作的相关信息;
在检测到页表更新操作的同时,将一个访问特定保留物理地址空间的同步访存请求发送到内存总线上。
4.根据权利要求3所述的方法,在步骤2)通过修改操作系统中更新页表操作的函数来记录每次页表更新操作的相关信息,该信息包括进程标识,物理地址,虚拟地址。
5.根据权利要求3所述的方法,其中,所述特定保留物理地址空间仅允许所述同步访存请求进行访问,而不允许操作系统对其进行访问。
6.根据权利要求1所述的方法,步骤3)通过重载用于分配内存和释放内存的相关动态库函数来将对象的标识符、对象的起始地址和对象的大小的信息保存到文件中以获取对象的虚拟地址空间信息。
7.根据权利要求6所述的方法,步骤3)还包括通过分析可执行程序的符号表信息来获得静态分配对象及全局对象的虚拟地址空间信息的步骤。
8.根据权利要求3所述的方法,步骤4)包括以下步骤:
步骤(4-1)根据所获取的进程页表信息重新构造进程页表;
步骤(4-2)依次对于每个物理地址,判断该物理地址是否属于为同步访存请求保留的物理地址空间,如果是,则读取所记录的与该同步访问请求相应的页表更新操作的相关信息来更新进程页表;否则查询进程页表,得到该物理地址所对应的虚拟地址和进程号;并匹配该虚拟地址落在哪个对象的虚拟地址空间;
步骤(4-3)整合得到每个对象的访存物理地址序列和访存虚拟地址序列。
9.一种获取对象级访存行为的装置,该装置包括:
硬件侦听器,用于通过硬件侦听的方式捕获内存总线上的所有访存请求,获取每个访存请求中关于物理地址、读/写、到达时间的信息;
内核监控器,用于获取进程页表信息并实时监控和记录内核更新页表的操作;
进程监控器,用于实时监控进程的动态分配和释放内存的操作,获取对象的虚拟地址空间信息,所述对象的虚拟地址空间信息包括对象标识、对象的起始虚拟地址和对象的大小;
整合器,用于基于所获取的物理地址和到达时间信息、进程页表信息和对象的虚拟地址空间信息来获得对象的访存物理地址序列和访存虚拟地址序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210017962.9A CN102609254B (zh) | 2012-01-19 | 2012-01-19 | 获取对象级访存行为的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210017962.9A CN102609254B (zh) | 2012-01-19 | 2012-01-19 | 获取对象级访存行为的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102609254A true CN102609254A (zh) | 2012-07-25 |
CN102609254B CN102609254B (zh) | 2015-04-22 |
Family
ID=46526653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210017962.9A Active CN102609254B (zh) | 2012-01-19 | 2012-01-19 | 获取对象级访存行为的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609254B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631825A (zh) * | 2012-08-28 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 数据服务器、数据存取系统及数据存取方法 |
CN104063281A (zh) * | 2013-03-21 | 2014-09-24 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
WO2016082191A1 (zh) * | 2014-11-28 | 2016-06-02 | 华为技术有限公司 | 访问文件的方法和装置 |
CN109408429A (zh) * | 2018-11-01 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种低速接口的缓存方法与装置 |
CN109426739A (zh) * | 2017-09-01 | 2019-03-05 | 龙芯中科技术有限公司 | 处理器和空指针攻击检测方法 |
WO2019062420A1 (zh) * | 2017-09-28 | 2019-04-04 | 华为技术有限公司 | 监控进程的方法和装置 |
CN111512290A (zh) * | 2017-12-27 | 2020-08-07 | 华为技术有限公司 | 文件页表管理技术 |
CN112269716A (zh) * | 2020-06-01 | 2021-01-26 | 中国科学院信息工程研究所 | 灵活定义的处理器异常访问实时监测方法及电子装置 |
CN114996024A (zh) * | 2022-07-29 | 2022-09-02 | 阿里巴巴(中国)有限公司 | 内存带宽监测方法、服务器和计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080065854A1 (en) * | 2006-09-07 | 2008-03-13 | Sebastina Schoenberg | Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor |
CN101334751A (zh) * | 2007-06-29 | 2008-12-31 | 联想(北京)有限公司 | 虚拟机监视器识别客户操作系统中进程的方法及装置 |
-
2012
- 2012-01-19 CN CN201210017962.9A patent/CN102609254B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080065854A1 (en) * | 2006-09-07 | 2008-03-13 | Sebastina Schoenberg | Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor |
CN101334751A (zh) * | 2007-06-29 | 2008-12-31 | 联想(北京)有限公司 | 虚拟机监视器识别客户操作系统中进程的方法及装置 |
Non-Patent Citations (1)
Title |
---|
YUNGANG BAO等: "HMTT:A Platform Independent Full-System Memory Trace Monitoring System", 《PROCEEDINGS OF THE 2008 ACM SIGMETRICS INTERNATIONAL CONFERENCE ON MEASUREMENT AND MODELING OF COMPUTER SYSTEMS》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631825A (zh) * | 2012-08-28 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 数据服务器、数据存取系统及数据存取方法 |
CN104063281A (zh) * | 2013-03-21 | 2014-09-24 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
CN104063281B (zh) * | 2013-03-21 | 2018-04-10 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
WO2016082191A1 (zh) * | 2014-11-28 | 2016-06-02 | 华为技术有限公司 | 访问文件的方法和装置 |
CN105830022A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 访问文件的方法和装置 |
CN105830022B (zh) * | 2014-11-28 | 2019-03-08 | 华为技术有限公司 | 访问文件的方法和装置 |
CN109426739B (zh) * | 2017-09-01 | 2020-10-30 | 龙芯中科技术有限公司 | 处理器和空指针攻击检测方法 |
CN109426739A (zh) * | 2017-09-01 | 2019-03-05 | 龙芯中科技术有限公司 | 处理器和空指针攻击检测方法 |
WO2019062420A1 (zh) * | 2017-09-28 | 2019-04-04 | 华为技术有限公司 | 监控进程的方法和装置 |
CN109583190A (zh) * | 2017-09-28 | 2019-04-05 | 华为技术有限公司 | 监控进程的方法和装置 |
CN109583190B (zh) * | 2017-09-28 | 2020-11-27 | 华为技术有限公司 | 监控进程的方法和装置 |
US11972116B2 (en) | 2017-09-28 | 2024-04-30 | Huawei Technologies Co., Ltd. | Process monitoring method and apparatus |
CN111512290A (zh) * | 2017-12-27 | 2020-08-07 | 华为技术有限公司 | 文件页表管理技术 |
CN111512290B (zh) * | 2017-12-27 | 2023-09-22 | 华为技术有限公司 | 文件页表管理技术 |
CN109408429A (zh) * | 2018-11-01 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种低速接口的缓存方法与装置 |
CN112269716A (zh) * | 2020-06-01 | 2021-01-26 | 中国科学院信息工程研究所 | 灵活定义的处理器异常访问实时监测方法及电子装置 |
CN114996024A (zh) * | 2022-07-29 | 2022-09-02 | 阿里巴巴(中国)有限公司 | 内存带宽监测方法、服务器和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102609254B (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102609254B (zh) | 获取对象级访存行为的方法及装置 | |
US8457943B2 (en) | System and method for simulating a multiprocessor system | |
US10394714B2 (en) | System and method for false sharing prediction | |
US9081629B2 (en) | Excluding counts on software threads in a state | |
CN102693188B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
CN101403983A (zh) | 基于虚拟机的多核处理器的资源监控方法及系统 | |
CN103154908A (zh) | 用于事务存储器的最后分支记录指示符 | |
CN104809039A (zh) | 基于物理内存分配映射的内存检测方法 | |
CN103109276A (zh) | 系统测试方法 | |
CN102301343A (zh) | 软件监测方法、装置以及系统 | |
US20160188441A1 (en) | Testing multi-threaded applications | |
KR20180096780A (ko) | 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치 | |
US20160188456A1 (en) | Nvram-aware data processing system | |
US20120233410A1 (en) | Shared-Variable-Based (SVB) Synchronization Approach for Multi-Core Simulation | |
Di Gennaro et al. | OS-based NUMA optimization: Tackling the case of truly multi-thread applications with non-partitioned virtual page accesses | |
US20180157605A1 (en) | Configuration of a memory controller for copy-on-write | |
US8635501B2 (en) | Detecting memory hazards in parallel computing | |
Lee et al. | Lightweight memory tracing for hot data identification | |
CN105573885A (zh) | 一种监测并统计底层硬件行为的方法及装置 | |
CN112256395B (zh) | 安全内存分配、虚拟cpu调度方法及相关装置 | |
KR20200077297A (ko) | 멀티 프로세스/멀티 스레드에서 사용하는 공유 메모리에 대한 원자성 위반 결함 탐지 방법 및 장치 | |
Pasqualin et al. | Characterizing the sharing behavior of applications using software transactional memory | |
Ashraf et al. | Intra-application data-communication characterization | |
Chen et al. | An activity-sensitive contention delay model for highly efficient deterministic full-system simulations | |
US20190042341A1 (en) | Simulator based detection of a violation of a coherency protocol in an incoherent shared memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |