CN113434371B - 内存访问信息的采集方法、计算设备及存储介质 - Google Patents
内存访问信息的采集方法、计算设备及存储介质 Download PDFInfo
- Publication number
- CN113434371B CN113434371B CN202110990806.XA CN202110990806A CN113434371B CN 113434371 B CN113434371 B CN 113434371B CN 202110990806 A CN202110990806 A CN 202110990806A CN 113434371 B CN113434371 B CN 113434371B
- Authority
- CN
- China
- Prior art keywords
- information
- memory
- virtual
- allocated memory
- host
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 298
- 238000000034 method Methods 0.000 title claims description 61
- 238000003860 storage Methods 0.000 title claims description 38
- 238000009826 distribution Methods 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 15
- 238000004458 analytical method Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- 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
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供一种内存访问信息的采集方法、计算设备及存储介质,在本申请实施例中,获取宿主机中预留内存的分配信息,预留内存可用于分配至部署在宿主机上的虚拟设备;根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问;根据确定的是否被访问的结果,采集被分配内存对应的访问信息。其中,根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问;根据确定的是否被访问的结果,采集被分配内存对应的访问信息,可以实现自动地以及准确地收集宿主机中预留内存的被虚拟设备访问的情况。从而可以对该访问信息进行监测,以便根据监测到的访问信息进行后续的统计和分析。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存访问信息的采集方法、计算设备及存储介质。
背景技术
在虚拟化场景下宿主机内存分配架构中,宿主机的大多数内存都被预留出来,以便将来可以分配给虚拟机使用。对于这部分预留内存,由于宿主机内核不可用,所以宿主机内核原来的功能就无法监测这部分预留内存的冷热情况,即被访问的情况。为了获取线上这部分预留内存的访问冷热度等情况,需要具备对这部分预留内存的访问冷热度情况等进行收集。
发明内容
本申请的多个方面提供一种内存访问信息的采集方法、计算设备及存储介质,用以能够较为快速以及准确地收集宿主机中预留内存被虚拟设备访问的情况。
本申请实施例提供一种内存访问信息的采集方法,包括:获取宿主机中预留内存的分配信息,所述预留内存可用于分配至部署在所述宿主机上的虚拟设备;根据所述分配信息,从对应被分配内存的页表中确定所述被分配内存是否被访问;根据确定的被访问的结果,采集被分配内存对应的访问信息。
本申请实施例还提供一种计算设备,包括:存储器、处理器;所述存储器,用于存储计算机程序;所述处理器,执行所述计算机程序,以用于:获取宿主机中预留内存的分配信息,所述预留内存可用于分配至部署在所述宿主机上的虚拟设备;根据所述分配信息,从对应被分配内存的页表中确定所述被分配内存是否被访问;根据确定的被访问的结果,采集被分配内存对应的访问信息。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现上述方法中的步骤。
在本申请实施例中,获取宿主机中预留内存的分配信息,预留内存可用于分配至部署在宿主机上的虚拟设备;根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问;根据确定的是否被访问的结果,采集被分配内存对应的访问信息。
其中,根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问;根据确定的是否被访问的结果,采集被分配内存对应的访问信息,可以实现自动地以及准确地收集宿主机中预留内存的被虚拟设备访问的情况。从而可以对该访问信息进行监测,以便根据监测到的访问信息进行后续的统计和分析。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例的内存访问信息的采集方法的流程示意图;
图2为本申请一示例性实施例的内存访问信息的采集的示意图;
图3为本申请一示例性实施例的内存访问信息的采集的示意图;
图4为本申请一示例性实施例的内存访问信息的采集***的结构示意图;
图5为本申请一示例性实施例提供的内存访问信息的采集装置的结构示意图;
图6为本申请一示例性实施例提供的计算设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据前文所述可知,对于宿主机的预留内存,由于其往往是将来给虚拟机使用的,所以宿主机内核不可用,则宿主机内核原来的一些功能就无法监测这部分预留内存的冷热情况,即被访问的情况。为了获取线上这部分预留内存的访问冷热度等情况,需要具备对这部分预留内存的访问冷热度情况等进行收集。
基于此,本申请实施例提供了一种内存访问信息的采集方法、计算设备及存储介质,可以能够快速以及准确地收集宿主机中预留内存被虚拟设备访问的情况。
下面结合方法实施例,针对内存访问信息的采集过程进行详细说明。
图1为本申请一示例性实施例的一种内存访问信息的采集方法的流程示意图。本申请实施例提供的该方法100由计算设备执行,如,宿主机等。该方法100包括以下步骤:
101:获取宿主机中预留内存的分配信息。
其中,预留内存可用于分配至部署在宿主机上的虚拟设备。
102:根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问。
103:根据确定的被访问的结果,采集被分配内存对应的访问信息。
需要说明的是,本申请实施例的执行主体是宿主机,也可以称为是物理机。其可以是云服务器的物理机或宿主机,也可以是普通服务器的物理机或宿主机。还可以是普通终端设备。其上有预留内存可供其它服务使用,如虚拟设备或其它进程服务使用。
以下针对上述步骤进行详细地阐述:
101:获取宿主机中预留内存的分配信息。
其中,预留内存可用于分配至部署在宿主机上的虚拟设备。虚拟设备可以是通过虚拟化技术部署在宿主机上的服务或进程。如虚拟机或容器等。除此以外,该预留内存还可以分配至其它服务或进程使用,但该预留内存是不被宿主机内核所使用的。
而预留内存是指宿主机通过将其预置的物理内存进行物理地址划分,使得一部分内存(如一段物理地址范围的内存)为宿主机内核所使用的,另一部分内存(如另一段物理地址范围的内存)是为虚拟设备等所使用的。而宿主机内核通过知晓的所使用的内存的物理地址,来将另一部分内存预留出来。
分配信息是指用于记录给虚拟设备等的配置信息。如可以包括被分配内存的物理地址的范围、对应的虚拟地址、所属进程等信息。虚拟地址可以是指虚拟设备的虚拟地址,所属进程可以是对应的虚拟设备或服务,如虚拟机。
该分配信息可以在为虚拟设备从预留内存中分配内存的时候将这些信息进行记录。
例如,宿主机在创建虚拟机的时候,可以为虚拟机分配对应的内存,从预留内存中划分一部分的物理地址的内存(也就是被分配内存)给对应的虚拟机。同时为该被分配内存记录上述分配信息。如,被分配内存的物理地址的范围、对应虚拟机的虚拟地址、所属进程(如,所属虚拟机,可以通过标识来实现)等信息。可以将这些分配信息存在一个预置位置上或者一个存储单元中,然后进行获取。
除此以外,宿主机通过可以触发指令、触发请求或触发条件等执行步骤101。该触发指令或触发请求可以是由用户来触发的,该用户可以是运维人员以及研发人员等。
例如,根据前文所述,用户可以通过电脑调用API(Application ProgrammingInterface,应用程序接口)接口,来触发宿主机去获取分配信息。宿主机通过API接收到该触发指令或触发请求来执行获取步骤。或者,宿主机可以定时进行获取分配信息,如一周或一天自动进行获取。
具体的,获取宿主机中预留内存的分配信息,包括:获取预留内存中被分配内存的记录信息,从记录信息中获取被分配内存对于宿主机的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系;根据物理地址,确定虚拟设备的虚拟地址。
例如,根据前文所述,通过前文所述的方式,宿主机可以获取到对应的分配信息,如存储单元中的记录信息,通过获取被分配内存在宿主机上的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系,然后根据该物理地址以及该对应关系,从记录信息中查找对应的虚拟机的虚拟地址。就不再过多赘述了。
具体的,为了方便获取信息,该存储单元可以是链表,也可以是数组等。即获取预留内存中被分配内存的记录信息,从记录信息中获取被分配内存对于宿主机的物理地址,包括:从链表中获取记录信息,从记录信息中获取被分配内存对于宿主机的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系。即宿主机可以从链表中获取到对应的分配信息,和前文所述的方式相似,就不再过多赘述了。
更具体的,获取预留内存中被分配内存的记录信息,从记录信息中获取被分配内存对于宿主机的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系,包括:遍历链表中的节点,从节点中读取被分配内存的记录信息以及,物理地址与虚拟设备的虚拟地址之间的对应关系;从读取到的记录信息中获取物理地址。
其中,链表通过多个节点进行信息的存储。每个节点可以称为一个结构体。即该链表可以是由多个结构体组成。在宿主机每次为对应的虚拟机分配内存的时候可以通过一个结构体进行分配信息的记录。但是一个虚拟机可以对应多个结构体,即一个虚拟机可以被宿主机进行多次内存的分配。
例如,根据前文所述,宿主机为从预留内存中分配出去的被分配内存在对应的链表中建立一个对应的结构体,即链表中的节点,并通过该结构体来记录这次分配的内存的物理地址的范围、对应虚拟机的虚拟地址、所属进程(如,所属虚拟机,可以通过标识来实现)以及对应关系等信息。从预留内存中分配出去的内存的分配信息都会被放到这个链表里面进行记录。
宿主机在获取分配信息的时候,可以从这个链表中遍历各个结构体,或者说遍历这个链表,然后依次获取到对应结构体中记录的分配信息。如前文所述,就不再过多赘述了。
需要说明的是,根据前文可知,可以通过触发的方式来进行获取分配信息。在触发后还可以通过模块来进行扫描功能的开启,设置扫描周期以及扫描持续时间等信息,从而在扫描周期到来后开始扫描,执行步骤101-103的具体实施过程。如图2所示,宿主机201在接收到触发请求或触发指令后,或者定时时间到来后,可以触发第二模块2013开启扫描功能,即向第一模块2011进行扫描,即执行步骤2016:开启扫描。第一模块2011也可以为从预留内存中分配出去的被分配内存在对应的链表2012中建立一个对应的结构体,就不再过多赘述了。
如图3所示,宿主机接收到触发请求或触发指令后,或者定时时间到来后,触发第二模块开启扫描功能,即执行步骤301:开启扫描,然后第二模块设置扫描周期以及扫描持续时间等参数,即执行步骤302:设置扫描周期等参数。在扫描周期对应的时间到来后,开始遍历对应的链表。即执行步骤304:遍历链表是否完成,如果否的话,则继续遍历链表,否则跳转到步骤302,为下一次扫描周期等参数进行设置,或者直接退出该扫描。其中,在扫描周期对应的时间到来前,需要确定扫描周期是否达到,即执行步骤303:扫描周期是否到达。如果是,则根据前文所述遍历链表。否则,就重复执行步骤303。
为了避免在从链表中获取分配信息的时候,其对应的分配信息被修改,可以通过锁的方式对链表进行保护,然后再进行信息的获取。同时,在扫描过程中为了避免长时间拿锁可能引起的死锁问题,通过副本信息来解锁扫描链表。
具体的,该方法100还包括:通过锁对被分配内存对应的链表进行保护,并对从节点读取到的记录信息进行备份,从备份后的记录信息中获取物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系;对链表进行解锁。
例如,根据前文所述,在读取链表前,先通过锁对该链表进行保护,在该锁的保护,遍历该链表,当根据顺序读取其中第一个结构体时,将该结构体中记录的分配信息进行备份。然后从备份的信息中根据前文所述的方式获取对应的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系,以使获取对应的虚拟地址等。然后在备份后,可以对该锁进行解锁,以使其它服务或进程对该链表进行读取和写入。
除此以外,还可以对加锁的有效时间进行控制,该预置时间内该锁是有效的,超过该预置时间,则锁会自动解锁。以免拿锁时间过长影响其它服务或进程对该链表的使用,以及影响虚拟设备的关闭等。
如图3所述,在对链表加锁后,可以开始遍历链表,由于刚开始遍历的时候,是从第一个结构体开始选取的,所以是未完成遍历的,那么就是从0开始选取第一个结构体,对于0而言,是下一个结构体,则执行步骤305:选取下一个结构体。然后备份该结构体中的分配信息,也就是数据,即执行步骤306:备份结构体中的数据。然后从该备份数据或备份信息中获取上述物理地址,然后确定是否遍历完该结构体中的每个物理地址,即执行步骤307:是否遍历完每一个物理地址,否的话执行步骤308:获取物理地址对应的虚拟地址。如果是的话,则跳转到步骤304,就不再赘述。
102:根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问。
其中,页表是指一个数据结构,用于记录内存的逻辑地址,即虚拟地址与物理地址的映射关系。更具体的说是,是针对内存页的页表。为了方便管理,可以将内存划分到更小的单位,可以将被分配内存的物理地址继续按照预置大小进行划分,对应划分出来的虚拟地址称为内存页,其也对应一个划分出来的物理地址。
对于宿主机而言,其为每个进程建立对应的内核页表。同时为虚拟设备,如虚拟机,基于内核页表创建对应的EPT内存页表(也称为扩展页表)。
例如,根据前文所述,宿主机可以通过第二模块将获取到的虚拟机的虚拟地址去遍历查询EPT内存页表,或者内核页表,确定对应的页表是否存在,如果存在,可以从对应的页表中查找到是否被访问的信息。
具体的,根据分配信息,从对应被分配内存的内存页表中确定被分配内存是否被访问,包括:根据虚拟设备的虚拟地址,查询宿主机针对于虚拟设备建立的内存页表;当查询到内存页表,则确定内存页表中表示被访问的标志位对应的置位信息;根据置位信息确定是否被访问。
例如,根据前文所述,宿主机可以通过第二模块将获取到的虚拟机的虚拟地址去遍历查询EPT内存页表,确定对应的EPT内存页表是否存在,如图3所示,即执行步骤309:是否成功查询内存页表。如果存在,可以从对应的EPT内存页表中查找到对应的access位(表示被访问的标志位),确定该access位是否被置位,即执行步骤310:确定标志位是否被置位。
需要说明的是,在查询上述EPT内存页表前,可以先确定该页表是否存在。由于该页表是宿主机创建的,所以宿主机知晓都创建了哪些页表,即虚拟机对应的该页表是否存在,从而可以确定该页表是否存在。
对于查询内核页表也是相似的,就不再赘述了。此外,对于内存页表可能为大页(如1G千兆或2M兆)或小页(4K千字节),在遍历页表时,需要根据页表的大小来查找对应层级页表的access标志情况。
而未查询到上述EPT内存页表,表明该虚拟地址对应的EPT内存页表存在问题,可能是在使用备份进行扫描的时候,该原始结构体中已经被释放,导致其页表也被释放,因此查询失败。此时直接跳过该结构体的扫描,回到步骤304和305,继续选取下一个结构体实现后续扫描。
具体的,该方法100还包括:当未查询到内存页表,在通过锁对被分配内存对应的链表进行保护的情况下,遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
例如,根据前文所述,当宿主机通过第二模块未查询到EPT内存页表,会接收到表示未查询到的信息,则重新选择上述链表中的下一个结构体,即如图3所示,在步骤309符合否的条件下,跳转到步骤304,如果未完成链表的遍历,则执行步骤305重新执行,选择上述链表中的下一个结构体。就不再重复赘述了。
应理解,此时在选择下一个结构体的时候,如果链表的加锁还在,则无需重新加锁,如果当前已经解锁,则需要重新加锁。
103:根据确定的被访问的结果,采集被分配内存对应的访问信息。
其中,对应的访问信息是指表示为是否被访问的信息,如1表示为被访问,0表示为未被访问。
例如,根据前文所述,宿主机通过第二模块确定如果查询到EPT内存页表中的access位置位为1,则确定该内存页被访问过。如果为0则确定未被访问。然后这对应物理地址的是否被访问过的信息进行记录。
具体的,根据确定的是否被访问的结果,采集被分配内存对应的访问信息,包括:当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
例如,宿主机通过第二模块确定如果查询到EPT内存页表中的access位置位为1,即已置位信息,则确定该内存页被访问过。然后通过第二模块,在Bitmap位图中对应于该物理地址的位置设置为1。
其中,如图2所示,第二模块2013通过链表2012设置Bitmap位图2014,即执行步骤2017:采集访问信息。
如图3所示,即执行了步骤312:将位图的对应位设置为“1”。
此外,在本次扫描中,需要清空该页表的标志位,否则随着时间的推演很可能所有标志位都会被使用到而置1,从而影响其它扫描周期,不能反映出其它当前这个扫描周期内是否有被访问的情况。
具体的,该方法100还包括:当置位信息为已置位信息,清除掉已置位信息,将置位信息恢复到默认状态。
例如,根据前文所述,宿主机通过第二模块确定如果查询到EPT内存页表中的access位置位为1,清除掉该标志位,恢复到默认状态,该默认状态可以为0,即未被访问。即在步骤310符合是的条件下,执行了步骤311:清理标志位。需要说明的是,可以在清理完标志位后,在设置位图中的对应位,即执行步骤312,就不再赘述。
但当上述EPT内存页表中的标志位置位为0,则可以通过其它页表来继续查询,如通过内核页面来继续查询。
具体的,该方法100还包括:当置位信息为未置位信息,根据虚拟设备的虚拟地址,查询宿主机建立的内核页表;当查询到内核页表,则确定内核页表中表示被访问的标志位对应的置位信息;当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
例如,根据前文所述,宿主机通过第二模块确定如果查询到EPT内存页表中的access位置位为0,则通过虚拟机的虚拟地址查询内核页表,当查询到内核页表存在,则确定内核页表中对应的access位的置位信息,如置位信息是为1,则属于已置位信息,确定对应的内存页已被访问过。根据前文所述的方式,通过第二模块,在Bitmap位图中对应于该物理地址的位置设置为1。
该处的实现方式与前文相似。就不再过多赘述了。其中,如图3所示,当宿主机通过第二模块确定如果查询到EPT内存页表中的access位置位为0,通过虚拟机的虚拟地址查询内核页表,则步骤310在否的情况下跳转到步骤314,执行步骤314:是否成功查询内核页表。如果是成功查询到内核页表,确定内核页表中对应的access位的置位信息,即执行步骤315:确定标志位是否被置位。当是被置位,则执行步骤312:将位图的对应位设置为“1”。就不再过多赘述了。
此外,在本次扫描中,需要清空该内核页表的标志位,否则随着时间的推演很可能所有标志位都会被使用到而置1,从而影响其它扫描周期,不能反映出其它当前这个扫描周期内是否有被访问的情况。
具体的,该方法100还包括:当置位信息为已置位信息,清除掉已置位信息,将置位信息恢复到默认状态。
例如,根据前文所述,宿主机通过第二模块确定如果查询到内核页表中的access位置位为1,清除掉该标志位,恢复到默认状态,该默认状态可以为0,即未被访问。即在步骤315符合是的条件下,执行了步骤316:清理标志位。需要说明的是,可以在清理完标志位后,在设置位图中的对应位,即执行步骤312,就不再赘述。
当确定内核页表中对应的access位的置位信息是未被置位,则确定对应的内存页未被访问过。
具体的,该方法100还包括:当置位信息为未置位信息,则确定访问信息为未访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定未访问信息。
例如,根据前文所述,宿主机通过第二模块确定内核页表中对应的access位的置位信息,如置位信息是为0,则属于未置位信息,确定对应的内存页未被访问过。根据前文所述的方式,通过第二模块,在Bitmap位图中对应于该物理地址的位置设置为0。即在步骤315符合否的条件下,执行了步骤313:将位图的对应位设置为“0”。
如果未查询到内核页表,很可能也是当前结构体已经被释放,导致进程对应其内存页表也被释放,因此查询失败。此时可以直接跳过该结构体的扫描,回到步骤304和305,继续选取下一个结构体实现后续扫描。
具体的,该方法100还包括:当未查询到内核页表,在通过锁对被分配内存对应的链表进行保护的情况下,遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
例如,根据前文所述,当宿主机通过第二模块未查询到内核页表,会接收到表示未查询到的信息,则重新选择上述链表中的下一个结构体,即如图3所示,在步骤314符合否的条件下,跳转到步骤304,如果未完成链表的遍历,则执行步骤305重新执行,选择上述链表中的下一个结构体。就不再重复赘述了。
应理解,此时如果链表的加锁还在,则无需重新加锁,如果当前已经解锁,则需要重新加锁。
还需要说明的是,直至遍历完该结构体的每个物理地址,使得步骤307符合是的条件,跳转至步骤304,直至遍历完链表中的所有结构体,则符合步骤304的否的条件,跳转到步骤302,就不再过多赘述了。
此外,当扫描时间过长,而设置的扫描持续时间已到达,则退出扫描。可以重新扫描,也可以不再扫描。每次扫描后记录的访问信息会记录到一张大的Bitmap位图中,表示这轮扫描周期后的内存的冷热情况。
由于被分配内存的冷热情况,即被访问的情况是不断在变化的,为了获取到这种变化,需要周期性的扫描这些被分配内存。同时,产生的内存的冷热情况的数据随着时间的推移也会变得非常巨大,因此需要把这些数据及时且高效的传递到远端存储中去,避免宿主机的磁盘被写爆。
具体的,该方法100还包括:将采集到的访问信息进行压缩,并将压缩后的访问信息进行编码;将编码后的信息发送至存储设备进行存储。
例如,根据前文所述,在内存较大的宿主机上,最终的Bitmap位图占用的存储也很大。为了高效传递和存储,首先宿主机可以采用linux(是一种操作***)内核自带的开源lzo1x压缩算法对Bitmap位图进行压缩。将压缩后的Bitmap位图进行base64(一种编码方式)编码,得到与文本格式和网络数据格式兼容较好的编码。如图2所示,宿主机201将压缩以及编码后的位图传输至通过宿主机内核中的一个第三模块2015,如offload卸载模块,即执行步骤2018:下发位图。通过对应硬件传输通道将上述压缩以及编码后的位图传输至硬件加速卡203中的第一日志2033中,如冷热页日志,即执行步骤2031:传输位图。除此以外还可以传输相关的虚拟设备的内存的虚拟地址范围等等信息,存储为该台宿主机的冷热页日志。
然后,硬件加速卡203可以将接收到上述压缩以及编码后的位图与时间、宿主机标识等其它信息整理成统一预置的标准格式,一并存储在日志文件中。然后通过硬件加速卡203将该标准格式的日志文件发送至远端存储设备202(如数据库服务器等)中的第二日志2021。即执行步骤2032:发送处理后的位图,即标准格式的日志文件,至远端存储设备202。
需要说明的是,硬件加速卡是插在宿主机上的硬件卡,其可以具有存储、计算、网络等功能,其可以帮助宿主机发送数据,存储数据等。
上述标准格式的日志文件可以被统一采集,以供后续的数据分析。需要进行数据分析和统计时,从压缩位图或base64编码位图中解码得到原始Bitmap位图的数据,使用C语言库加速的python统计函数,统计出一段时间内所有物理内存页的利用率,进而按照不同的利用率计算出冷热页比例。可以确定出虚拟设备的使用情况,是否存在虚拟设备的异常情况等,以及是否需要再为虚拟设备进行内存的分配等。
图4为本申请一示例性实施例提供的一种内存访问信息的采集***的结构示意图。如图4所示,该***400可以包括:第一设备401以及第二设备402。除此以外还可以包括第三设备403以及第四设备404。
其中,第一设备401是指可以在网络虚拟环境中提供计算处理服务的设备,可以是指利用网络进行内存访问信息的采集的设备。在物理实现上,第一设备401可以是任何能够提供计算服务,可以响应服务请求,并进行内存访问信息的采集,例如可以是云服务器、云主机、虚拟中心、常规服务器、物理机等等。第一设备401的构成主要包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似。
第二设备402是指可以在网络虚拟环境中提供计算处理服务的设备,可以是指利用网络进行数据存储的设备。在物理实现上,第二设备402可以是任何能够提供计算服务,可以响应服务请求,并进行数据存储,例如可以是云服务器、云主机、虚拟中心、常规服务器等等。第二设备402的构成主要包括处理器、硬盘、内存、***总线等,和通用的计算机架构类似。
第三设备403可以是插在第一设备401上的硬件,其可以具有存储、计算、网络等功能,其可以帮助第一设备401发送数据,存储数据等。第三设备403可以为硬件加速卡。
第四设备404可以是有一定计算能力的设备,可以实现向第一设备401发送数据的功能,也可以接收第一设备401发送的数据。第四设备404的基本结构可以包括:至少一个处理器。处理器的数量可以取决于具有一定计算能力装置的配置和类型。具有一定计算能力装置也可以包括存储器,该存储器可以为易失性的,例如RAM,也可以为非易失性的,例如只读存储器(Read-Only Memory,ROM)、闪存等,或者也可以同时包括两种类型。存储器内通常存储有操作***(Operating System,OS)、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,具有一定计算能力装置还包括一些基本配置,例如网卡芯片、IO总线、显示组件以及一些***设备等。可选地,一些***设备可以包括,例如键盘、输入笔等。其它***设备在本领域中是众所周知的,在此不做赘述。可选地,第四设备404可以为智能终端,例如,手机、台式电脑、笔记本、平板电脑等。
具体的,第一设备401,获取宿主机中预留内存的分配信息,预留内存可用于分配至部署在宿主机上的虚拟设备;根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问;根据确定的被访问的结果,采集被分配内存对应的访问信息。
第四设备404,发送触发触请求至第一设备401,以使第一设备401接收到该触发请求后,执行获取宿主机中预留内存的分配信息的步骤。
此外,第一设备401,将采集到的访问信息进行压缩,并将压缩后的访问信息进行编码;将编码后的信息发送至第二设备402进行存储。
具体的,第一设备401,通过第三设备403将编码后的信息发送至第二设备402进行存储。
具体的,第一设备401,获取预留内存中被分配内存的记录信息,从记录信息中获取被分配内存对于宿主机的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系;根据物理地址以及对应关系,确定虚拟设备的虚拟地址。
具体的,第一设备401,遍历链表中的节点,从节点中读取被分配内存的记录信息;从读取到的记录信息中获取物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系。
此外,第一设备401,通过锁对被分配内存对应的链表进行保护,并对从节点读取到的记录信息进行备份,从备份后的记录信息中获取物理地址以及,所述物理地址与所述虚拟设备的虚拟地址之间的对应关系;对链表进行解锁。
具体的,第一设备401,根据虚拟设备的虚拟地址,查询宿主机针对于虚拟设备建立的内存页表;当查询到内存页表,则确定内存页表中表示被访问的标志位对应的置位信息;根据置位信息确定是否被访问。
此外,第一设备401,当未查询到内存页表,则在通过锁对被分配内存对应的链表进行保护的情况下,遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
具体的,第一设备401,当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
此外,第一设备401,当置位信息为未置位信息,根据虚拟设备的虚拟地址,查询宿主机建立的内核页表;当查询到内核页表,则确定内核页表中表示被访问的标志位对应的置位信息;当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
此外,第一设备401,当置位信息为未置位信息,则确定访问信息为未访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定未访问信息。
此外,第一设备401,当未查询到内核页表,在通过锁对被分配内存对应的链表进行保护的情况下,并遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
需要说明的是,在***400中未能完全阐述的内容请参见前文方法100中的内容,其具体的实施方式也请参见前文所述的方法100的具体实施方式,此处就不再赘述。
在本申请实施例的内存访问信息的收集场景中,如图4所示,用户可以通过第四设备404,如电脑,通过调用预置的API接口,向第一设备401发送触发请求,如开启扫描请求,即执行步骤411:发送开启扫描请求,至第一设备401,如云服务器的宿主机,或物理机。宿主机接收到该请求后,可以开启扫描。
宿主机通过调用第二模块(如,模块A)开启扫描功能,设置扫描周期以及扫描持续时间等信息,从而在扫描周期到来后开始扫描。在扫描周期对应的时间到来后,开始在第一模块(如模块B)中遍历对应的链表。在读取链表前,先通过锁对该链表进行保护,在该锁的保护,遍历该链表,当根据顺序读取其中第一个结构体时,将该结构体中记录的分配信息进行备份。然后从备份的信息中根据前文所述的方式获取对应的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系,以使获取对应的虚拟地址等。然后在备份后,可以对该锁进行解锁,以使其它服务或进程对该链表进行读取和写入。
宿主机可以通过第二模块将获取到的虚拟机的虚拟地址去遍历查询EPT内存页表,或者内核页表,确定对应的页表是否存在,如果存在,可以从对应的EPT内存页表中查找到对应的access位(表示被访问的标志位),确定该access位是否被置位。宿主机通过第二模块确定如果查询到EPT内存页表中的access位置位为1,则确定该内存页被访问过。如果为0则确定未被访问。然后通过第二模块,在Bitmap位图中对应于该物理地址的位置设置为1。宿主机通过第二模块确定如果查询到EPT内存页表中的access位置位为1,清除掉该标志位,恢复到默认状态,该默认状态可以为0,即未被访问。
但当上述EPT内存页表中的标志位置位为0,通过虚拟机的虚拟地址查询内核页表,当查询到内核页表存在,则确定内核页表中对应的access位的置位信息,如置位信息是为1,则属于已置位信息,确定对应的内存页已被访问过。根据前文所述的方式,通过第二模块,在Bitmap位图中对应于该物理地址的位置设置为1。宿主机通过第二模块确定如果查询到内核页表中的access位置位为1,清除掉该标志位,恢复到默认状态,该默认状态可以为0,即未被访问。当宿主机通过第二模块确定内核页表中对应的access位的置位信息,如置位信息是为0,则属于未置位信息,确定对应的内存页未被访问过。根据前文所述的方式,通过第二模块,在Bitmap位图中对应于该物理地址的位置设置为0。
当宿主机通过第二模块未查询到EPT内存页表,会接收到表示未查询到的信息,则重新选择上述链表中的下一个结构体。当宿主机通过第二模块未查询到内核页表,会接收到表示未查询到的信息,则重新选择上述链表中的下一个结构体。直至该链表被全部遍历完成。
在内存较大的宿主机上,最终的Bitmap位图占用的存储也很大。为了高效传递和存储,首先宿主机可以采用linux(是一种操作***)内核自带的开源lzo1x压缩算法对Bitmap位图进行压缩。将压缩后的Bitmap位图进行base64(一种编码方式)编码,得到与文本格式和网络数据格式兼容较好的编码。宿主机将压缩以及编码后的位图传输至通过宿主机内核中的一个第三模块,如offload卸载模块,传输位图,通过对应硬件传输通道将上述压缩以及编码后的位图传输至第三设备403,如硬件加速卡中的第一日志中,如冷热页日志。即执行步骤412:发送压缩后的位图。
然后,硬件加速卡可以将接收到上述压缩以及编码后的位图与时间、宿主机标识等其它信息整理成统一预置的标准格式,一并存储在日志文件中。然后通过硬件加速卡将该标准格式的日志文件发送至第二设备402,如数据库服务器中的第二日志。即执行步骤413:发送预置格式的位图。
此处未详细记载的内容可以参考前文所述的内容,就不再赘述。
在上述本实施例中,第三设备403以及第二设备402进行网络连接。第一设备401以及第四设备404进行网络连接。若上述网络连接是通信连接,该移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax、5G等中的任意一种。
图5为本申请一示例性实施例提供的一种内存访问信息的采集装置的结构框架示意图。该装置500可以应用于宿主机或物理机。该装置500包括:获取模块501、确定模块502、采集模块503;以下针对各个模块的功能进行详细的阐述:
获取模块501,用于获取宿主机中预留内存的分配信息。
其中,预留内存可用于分配至部署在宿主机上的虚拟设备。
确定模块502,用于根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问。
采集模块503,用于根据确定的被访问的结果,采集被分配内存对应的访问信息。
此外,该装置500还包括:压缩模块,用于将采集到的访问信息进行压缩,并将压缩后的访问信息进行编码;发送模块,用于将编码后的信息发送至存储设备进行存储。
具体的,获取模块501,包括:获取单元,用于获取预留内存中被分配内存的记录信息,从记录信息中获取被分配内存对于宿主机的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系;第一确定单元,用于根据物理地址以及对应关系,确定虚拟设备的虚拟地址。
具体的,获取单元,用于遍历链表中的节点,从节点中读取被分配内存的记录信息;从读取到的记录信息中获取物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系。
此外,该装置500还包括:加锁模块,用于通过锁对被分配内存对应的链表进行保护,并对从节点读取到的记录信息进行备份,从备份后的记录信息中获取所述物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系;解锁模块,用于对链表进行解锁。
具体的,确定模块502,包括:查询单元,用于根据虚拟设备的虚拟地址,查询宿主机针对于虚拟设备建立的内存页表;第二确定单元,用于当查询到内存页表,则确定内存页表中表示被访问的标志位对应的置位信息;第二确定单元,用于根据置位信息确定是否被访问。
此外,该装置500还包括:遍历模块,用于当未查询到内存页表,则在通过锁对被分配内存对应的链表进行保护的情况下,遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
具体的,采集模块503,用于当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
此外,该装置500还包括:查询模块,用于当置位信息为未置位信息,根据虚拟设备的虚拟地址,查询宿主机建立的内核页表;确定模块502,还用于当查询到内核页表,则确定内核页表中表示被访问的标志位对应的置位信息;确定模块502,还用于当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
此外,确定模块502,还用于当置位信息为未置位信息,则确定访问信息为未访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定未访问信息。
此外,遍历模块,用于当未查询到内核页表,在通过锁对被分配内存对应的链表进行保护的情况下,并遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
此外,该装置500还包括:清除模块,用于当置位信息为已置位信息,清除掉已置位信息,将置位信息恢复到默认状态。
本装置500中未能详尽的内容请参考前文所述,就不再赘述。
以上描述了图5所示的装置500的内部功能和结构,在一个可能的设计中,图5所示的装置500的结构可实现为计算设备,如,宿主机或物理机。如图6所示,该设备600可以包括:存储器601、处理器602;
存储器601,用于存储计算机程序。
处理器602,用于执行计算机程序,以用于:获取宿主机中预留内存的分配信息,预留内存可用于分配至部署在宿主机上的虚拟设备;根据分配信息,从对应被分配内存的页表中确定被分配内存是否被访问;根据确定的被访问的结果,采集被分配内存对应的访问信息。
此外,处理器602,还用于将采集到的访问信息进行压缩,并将压缩后的访问信息进行编码;将编码后的信息发送至存储设备进行存储。
具体的,处理器602,具体用于:获取预留内存中被分配内存的记录信息,从记录信息中获取被分配内存对于宿主机的物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系;根据物理地址以及对应关系,确定虚拟设备的虚拟地址。
具体的,处理器602,具体用于:遍历链表中的节点,从节点中读取被分配内存的记录信息;从读取到的记录信息中获取所述物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系。
此外,处理器602,还用于:通过锁对被分配内存对应的链表进行保护,并对从节点读取到的记录信息进行备份,从备份后的记录信息中获取物理地址以及,物理地址与虚拟设备的虚拟地址之间的对应关系;对链表进行解锁。
具体的,处理器602,具体用于:根据虚拟设备的虚拟地址,查询宿主机针对于虚拟设备建立的内存页表;当查询到内存页表,则确定内存页表中表示被访问的标志位对应的置位信息;根据置位信息确定是否被访问。
此外,处理器602,还用于:当未查询到内存页表,则在通过锁对被分配内存对应的链表进行保护的情况下,遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
具体的,处理器602,具体用于:当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
此外,处理器602,还用于:当置位信息为未置位信息,根据虚拟设备的虚拟地址,查询宿主机建立的内核页表;当查询到内核页表,则确定内核页表中表示被访问的标志位对应的置位信息;当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
此外,处理器602,还用于:当置位信息为未置位信息,则确定访问信息为未访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定未访问信息。
此外,处理器602,还用于:当未查询到内核页表,在通过锁对被分配内存对应的链表进行保护的情况下,并遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
此外,处理器602,还用于:当置位信息为已置位信息,清除掉已置位信息,将置位信息恢复到默认状态。
另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图1-3方法实施例中一内存访问信息的采集方法的步骤。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102、103等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程多媒体数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程多媒体数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程多媒体数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程多媒体数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种内存访问信息的采集方法,其特征在于,包括:
获取宿主机中预留内存的分配信息,所述预留内存可用于分配至部署在所述宿主机上的虚拟设备;
根据所述分配信息,从对应被分配内存的页表中确定所述被分配内存是否被访问;
根据确定的被访问的结果,采集被分配内存对应的访问信息;
所述获取宿主机中预留内存的分配信息,包括:根据记录信息,获取被分配内存对于宿主机的物理地址以及所述虚拟设备的虚拟地址。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将采集到的访问信息进行压缩,并将压缩后的访问信息进行编码;
将编码后的信息发送至存储设备进行存储。
3.根据权利要求1所述的方法,其特征在于,所述根据记录信息,获取被分配内存对于宿主机的物理地址以及所述虚拟设备的虚拟地址,包括:
获取所述预留内存中被分配内存的记录信息,从所述记录信息中获取被分配内存对于宿主机的物理地址以及,所述物理地址与所述虚拟设备的虚拟地址之间的对应关系;
根据所述物理地址以及所述对应关系,确定所述虚拟设备的虚拟地址。
4.根据权利要求3所述的方法,其特征在于,所述获取所述预留内存中被分配内存的记录信息,从所述记录信息中获取被分配内存对于宿主机的物理地址以及,所述物理地址与所述虚拟设备的虚拟地址之间的对应关系,包括:
遍历链表中的节点,从节点中读取被分配内存的记录信息;
从读取到的记录信息中获取所述物理地址以及,所述物理地址与所述虚拟设备的虚拟地址之间的对应关系。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
通过锁对被分配内存对应的链表进行保护,并对从所述节点读取到的记录信息进行备份,从备份后的记录信息中获取所述物理地址以及,所述物理地址与所述虚拟设备的虚拟地址之间的对应关系;
对所述链表进行解锁。
6.根据权利要求1所述的方法,其特征在于,所述根据所述分配信息,从对应被分配内存的页表中确定所述被分配内存是否被访问,包括:
根据虚拟设备的虚拟地址,查询宿主机针对于虚拟设备建立的内存页表;
当查询到所述内存页表,则确定所述内存页表中表示被访问的标志位对应的置位信息;
根据所述置位信息确定是否被访问。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当未查询到所述内存页表,则在通过锁对被分配内存对应的链表进行保护的情况下,遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
8.根据权利要求1或6所述的方法,其特征在于,所述根据确定的是否被访问的结果,采集被分配内存对应的访问信息,包括:
当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当置位信息为未置位信息,根据虚拟设备的虚拟地址,查询宿主机建立的内核页表;
当查询到所述内核页表,则确定所述内核页表中表示被访问的标志位对应的置位信息;
当置位信息为已置位信息,则确定访问信息为已访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定已访问信息。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当置位信息为未置位信息,则确定访问信息为未访问信息,针对被分配内存对于宿主机的物理地址,在位图中对应位置确定未访问信息。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当未查询到所述内核页表,在通过锁对被分配内存对应的链表进行保护的情况下,并遍历链表中的节点,从对应的下一个节点中读取被分配内存的记录信息。
12.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述置位信息为已置位信息,清除掉所述已置位信息,将所述置位信息恢复到默认状态。
13.一种计算设备,包括:存储器、处理器;
所述存储器,用于存储计算机程序;
所述处理器,执行所述计算机程序,以用于:
获取宿主机中预留内存的分配信息,所述预留内存可用于分配至部署在所述宿主机上的虚拟设备;
根据所述分配信息,从对应被分配内存的页表中确定所述被分配内存是否被访问;
根据确定的被访问的结果,采集被分配内存对应的访问信息;
根据记录信息,获取被分配内存对于宿主机的物理地址以及所述虚拟设备的虚拟地址。
14.一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现权利要求1-12任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110990806.XA CN113434371B (zh) | 2021-08-26 | 2021-08-26 | 内存访问信息的采集方法、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110990806.XA CN113434371B (zh) | 2021-08-26 | 2021-08-26 | 内存访问信息的采集方法、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434371A CN113434371A (zh) | 2021-09-24 |
CN113434371B true CN113434371B (zh) | 2022-01-25 |
Family
ID=77798097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110990806.XA Active CN113434371B (zh) | 2021-08-26 | 2021-08-26 | 内存访问信息的采集方法、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434371B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579253A (zh) * | 2022-02-24 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 内存扫描方法及装置 |
CN114661557A (zh) * | 2022-04-02 | 2022-06-24 | 阿里巴巴(中国)有限公司 | 记录内存冷热状态的方法和装置 |
CN115794397A (zh) * | 2022-11-29 | 2023-03-14 | 阿里云计算有限公司 | 冷热页管理加速设备、方法、mmu、处理器及电子设备 |
CN118051189B (zh) * | 2024-04-15 | 2024-07-02 | 阿里云计算有限公司 | 内存访存的优化方法、装置、设备、介质及程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN112925606A (zh) * | 2019-12-06 | 2021-06-08 | 阿里巴巴集团控股有限公司 | 一种内存管理方法、装置及设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662869B (zh) * | 2012-04-01 | 2015-08-26 | 龙芯中科技术有限公司 | 虚拟机中的内存访问方法和装置及查找器 |
CN104063281B (zh) * | 2013-03-21 | 2018-04-10 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
CN104281532B (zh) * | 2014-05-15 | 2017-04-12 | 浙江大学 | 一种基于numa架构的虚拟机内存访问监测方法 |
CN105022696B (zh) * | 2015-07-21 | 2017-12-29 | 浙江大学 | 一种基于内存访问热度的大内存页整合方法 |
CN107168771A (zh) * | 2017-04-24 | 2017-09-15 | 上海交通大学 | 一种非一致性内存访问架构下的虚拟机调度装置及方法 |
CN107273212A (zh) * | 2017-06-23 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种动态分配内存的方法及*** |
CN110134514B (zh) * | 2019-04-18 | 2021-04-13 | 华中科技大学 | 基于异构内存的可扩展内存对象存储*** |
CN110134492B (zh) * | 2019-04-18 | 2021-04-13 | 华中科技大学 | 一种异构内存虚拟机不停机的内存页面迁移*** |
CN112464221A (zh) * | 2019-09-09 | 2021-03-09 | 北京奇虎科技有限公司 | 内存访问行为的监控方法及*** |
CN112463287A (zh) * | 2019-09-09 | 2021-03-09 | 北京奇虎科技有限公司 | 基于插桩的访问请求处理方法及*** |
CN113032086A (zh) * | 2019-12-25 | 2021-06-25 | 中兴通讯股份有限公司 | 虚拟机部署及热迁移方法、vmm升级方法、服务器 |
CN111752674B (zh) * | 2020-05-20 | 2023-08-01 | 上海仪电(集团)有限公司中央研究院 | Linux***环境中的技术架构、内存分配方法、设备及介质 |
CN112241310B (zh) * | 2020-10-21 | 2023-01-31 | 海光信息技术股份有限公司 | 页表管理、信息获取方法、处理器、芯片、设备及介质 |
-
2021
- 2021-08-26 CN CN202110990806.XA patent/CN113434371B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
CN112925606A (zh) * | 2019-12-06 | 2021-06-08 | 阿里巴巴集团控股有限公司 | 一种内存管理方法、装置及设备 |
Non-Patent Citations (3)
Title |
---|
"Live Migration of Virtual Machine with Pre-Record and Use PDoPMP to Analyse Memory Access Trend";Zhongyuan Shan等;《2017 18th International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT)》;20180329;第183-190页 * |
"基于国产ARM虚拟化平台的动态内存调度设计";张勋臣等;《信息通信》;20201231;第2020年卷(第12期);第63-67页 * |
"面向同驻虚拟机的高效共享内存文件***";沙行勉等;《计算机学报》;20190430;第42卷(第4期);第800-819页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113434371A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434371B (zh) | 内存访问信息的采集方法、计算设备及存储介质 | |
US9846540B1 (en) | Data durability using un-encoded copies and encoded combinations | |
US11068405B2 (en) | Compression of host I/O data in a storage processor of a data storage system with selection of data compression components based on a current fullness level of a persistent cache | |
CN110554834A (zh) | 文件***数据访问方法和文件*** | |
US20060064441A1 (en) | Storage apparatus, storage control method, and computer product | |
CN113296696A (zh) | 一种数据的访问方法、计算设备及存储介质 | |
CN111061752B (zh) | 数据处理方法、装置及电子设备 | |
CN107590019B (zh) | 一种数据存储的方法和装置 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN112019788B (zh) | 数据存储方法、装置、***及存储介质 | |
CN113032335A (zh) | 文件访问方法、装置、设备及存储介质 | |
CN111381779A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN103197987A (zh) | 一种数据备份的方法、数据恢复的方法及*** | |
CN111435286B (zh) | 一种数据存储方法、装置和*** | |
CN114676130A (zh) | 时序数据的存储方法、计算设备及存储介质 | |
CN109144403B (zh) | 一种用于云盘模式切换的方法与设备 | |
CN114328007B (zh) | 一种容器备份还原方法、装置及其介质 | |
CN115203190A (zh) | 一种垃圾对象删除的方法、装置及介质 | |
CN111435302B (zh) | 一种应用程序的处理方法及装置 | |
CN115840662A (zh) | 一种数据备份***及装置 | |
CN108415982B (zh) | 数据库的处理方法和装置 | |
CN117950597B (zh) | 数据修改写方法、数据修改写装置以及计算机存储介质 | |
CN117632953B (zh) | 数据循环存储方法、装置、服务器及存储介质 | |
CN116010430B (zh) | 数据恢复方法、数据库***、计算机设备和存储介质 | |
CN117472296B (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 |