一种基于numa架构的虚拟机内存访问监测方法

文档序号:6625872阅读:343来源:国知局
一种基于numa架构的虚拟机内存访问监测方法
【专利摘要】本发明公开了一种基于NUMA架构的虚拟机内存访问监测方法,本发明的虚拟机内存访问监测方法中采用段页式的访问监测方法,并利用内存分布表和virtual bitmap相结合的方式记录各个虚拟机的内存访问状态,以内存分布表来记录初始情况下虚拟机分配的内存的访问状态,以virtual bitmap来记录虚拟机中内存分布表中不存在的内存的访问情况。本发明的虚拟机内存访问监测方法大大提高了监测的实时性,且弥补了传统的基于页表的记录不能进行动态内存记录的确定,也克服了基于bitmap监测导致的占用存储空间大的问题。
【专利说明】—种基于NUMA架构的虚拟机内存访问监测方法

【技术领域】
[0001]本发明涉及网络【技术领域】,特别涉及一种基于NUMA架构的虚拟机内存访问监测方法。

【背景技术】
[0002]NUMA(Non-Uniform Memory Access, NUMA)架构由多个通过内部互连网络连接的处理节点组成,每个节点上可以配置一个或者多个处理器,内存在物理上分布于各个节点,但在逻辑上进行全局统一编址,每个节点内部的处理器共享内存。处理器可以通过互连网络访问并在cache中缓存远程的内存数据。NUMA系统的节点内一般采用总线监听方式来保持cache —致性,节点间用硬件来实现基于目录的cache —致性。
[0003]以NUMA架构为基础的多核与内存硬件技术,为高性能计算机系统提供了重要的硬件支持。随着虚拟计算机技术的发展,基于NUMA架构的虚拟机成为虚拟计算机领域研究的热点。与运行带有物理NUMA硬件的非虚拟化计算机相比,利用虚拟NUMA能够部署更大和更多关键业务的工作负载,这些工作负载可在不使虚拟化环境性能明显下降的情况下运行。
[0004]在NUMA架构下的虚拟机系统,个虚拟机的可能分布在不同的NUMA节点。大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制,将虚拟机的地址空间划分成称为页(page)的单位,而相应的物理地址空间(物理内存)也被进行划分,单位是页帧(frame),页和页帧的大小必须相同,相互映射关系。在构建虚拟机系统时,为每个虚拟机分配内存即相应的numa_maps信息,numa_maps信息中包括每个虚拟机的内存分布情况,该分布情况相应的以页为基本单位进行管理,根据该numa_maps信息即得到各个虚拟机的内存分布信息,根据numa_maps信息构建得到相应虚拟机的内存分布表,NUMA架构下每个节点(NUMAfA)具有独立的物理内存,且根据页与页帧的映射关系,确定各页所在的节点。为方便管理,将物理地址连续的若干页组分一个段(即内存段)。
[0005]由于NUMA架构下远近端内存访问开销相差很大,过多远端内存访问会造成系统性能急剧下滑。对跨节点的内存访问进行监测,可以识别出热点跨节点数据访问页面,动态调整内存分布情况,提升本地内存访问比例,提升系统整体性能。为了提升NUMA物理机的各个节点内存访问的均衡,系统需要监测记录虚拟机的内存访问状况,来为系统进行负载均衡提供决策依据。
[0006]传统的方法通过bitmap或页表的方法监测记录虚拟机的内存访问状况,但是存在以下问题:
[0007](a)采用bitmap来记录内存访问记录,会浪费很大的空间,且不能直接感知内存所在NUMA节点,需要间接通过系统调用来查询当前内存的所在节点信息;
[0008](b)由于balloon、Transcendent Memory等内存复用机制,虚拟机的部分内存是动态变化的,若通过传统页表的方法,不能统计最近一段时间的访问次数,同时出现内存复用时,不能记录这些动态内存记录。


【发明内容】

[0009]针对现有技术的不足,本发明提供了一种NUMA架构的虚拟机内存访问监测方法。
[0010]一种基于NUMA架构的虚拟机内存访问监测方法,包括:
[0011 ] (I)获取虚拟机的numa_maps信息,并根据虚拟机的numa_maps信息的构建各个虚拟机的内存分布表;
[0012]所述的内存分布表包括各个虚拟机所占用的内存段的段号、页表起始地址、各个内存段的页表大小、所在的节点,以及各个内存段中每一页的访问状态队列,初始时每一页的访问状态队列中所有元素全为O ;
[0013](2)获取各个虚拟机每次访问的内存访问地址,针对每一个虚拟机的每个内存访问地址,判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中:
[0014]若在,则确定该内存访问地址对应的页,并将内存分布表中该页的访问状态队列中的第一位不为O的元素置为I ;
[0015]否则,根据该内存访问地址和内存分布表构建virtual bitmap,确定该内存访问地址对应的地址位,并将virtual bitmap中该地址位的访问状态队列中第一个不为O的元素置为I ;
[0016](3)每隔一定的时间间隔,根据内存分布表中各页的访问状态队列和Virtualbitmap各地址位的访问状态队列,确定当前虚拟机的热点内存:
[0017]若存在所有元素全为I的访问队列,则以该访问队列对应的页或地址位作为相应时间间隔内当前虚拟机的热点内存,并输出热点内存列表;
[0018]否则,认为相应时间间隔内当前虚拟机不存在热点内存。
[0019]本发明的每个内存分布表包括相应的虚拟机的内存段的段号、该内存段对应的页表起始地址、各个内存段的页表大小、所在的节点,以及各页的访问状态队列。访问状态队列中的每一个元素表示该页的访问状态,本发明中“O”作表示未被访问,以“ I”表示被访问。根据访问状态队列中为“I”的元素的个数,即可得虚拟机访问该页的次数。访问状态队列大小(即包括的元素个数)可根据实际应用情况设定,初始情况下访问状态队列中所有元素的均为“0”,表示该页未被访问。
[0020]本发明中步骤(2)中获取虚拟机每次访问的内存访问地址,包括复用内存访问地址,通过perf采集得到。且当该访问地址在当前虚拟机的内存分布表对应的内存中时,通过以下方法确定该内存访问地址对应的页:根据二分查找法的结果,确定该内存访问地址所在的内存段,然后用内存访问地址减去该内存段的起始地址,从而得到该内存访问地址在内存段对应的页。
[0021]本发明中采用一种段页式的访问监测方法,大大提高了监测的实时性,且采用内存分布表和virtual bitmap相结合的方式记录各个虚拟机的内存访问状态,以内存分布表来记录初始情况下虚拟机分配的内存的访问状态,以virtual bitmap来记录虚拟机中内存分布表中不存在的内存的访问情况,弥补了传统的基于页表(内存分布表)的记录不能进行动态内存记录的确定,反过来,通过内存分布表克服了基于bitmap监测导致的占用存储空间大的问题。
[0022]所述的虚拟机内存访问监测方法中,针对内存分布表中的每一页或Virtualbitmap中的每一个地址位,若访问状态阵列中最后一个为I的元素对应的访问时间等于的设定时间阈值,则将该访问状态队列中所有为I的元素置为O。
[0023]在监测过程中时按照虚拟机的访问顺序依次对各个元素置“ I ”,访问状态队列中最后一个为“I”的元素即对应该于虚拟机最后一次访问该页。通过设定时间阈值对访问队列进行清零(所有为I的元素置为O),便于利用内存分布表进行内存调控。
[0024]每一个访问状态队列的元素个数为10?15。
[0025]访问状态队列的大小关系到监测的灵敏度,可根据实际应用情况调节。
[0026]所述步骤(2)中根据内存分布表中页表起始地址,采用二分查找法判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中。
[0027]作为优选,所述步骤(2)中二分查找法的结果包括该内存访问地址所在的内存段的段号,下一次采用二分查找法进行查找时,从该段号的下一个段号开始进行搜索。
[0028]采用二分查找法能够提高搜索效率,且能够确定该内存访问地址对应的内存段的段号,且每次二分查找法进行搜索时的从上一次二分查找法的结果对应的下一段开始搜索,进一步提高搜索效率。
[0029]所述步骤(2)中通过以下方法构建virtual bitmap:
[0030](2-1)根据公式:

η
[0031]B = YjMjZn

i=l
[0032]确定待构建virtual bitmap中每个地址位的大小B,其中,Iiii为内存分布表中第i个内存段的页表大小,η为当前虚拟机所占用的内存段的个数,i = O, I, 2……,η-1 ;
[0033](2-2)根据公式:
[0034]C= (A-B)/2,
[0035]确定virtual bitmap的地址上界,A为当前虚拟机的内存访问地址;
[0036](2-3)按照确定的待构建virtual bitmap的地址位的大小B和地址上界C构建virtual bitmap,且virtual bitmap中每个地址位对应有一个访问状态队列。
[0037]根据内存分布表中各个内存段的大小确定virtual bitmap中每个地址位,能够保证管理的均衡性,得到virtual bitmap的地址上界和每个地址为的大小后,即可得到virtual bitmap 的地址上界,进而构建 virtual bitmap。
[0038]所述步骤(2-2)还包括更新地址上界:
[0039](2-21)根据上一个virtual bitmap的大小和地址上界计算上一个virtualbitmap的地址下界D ;
[0040](2-22)根据上一个virtual bitmap地址下界D,判断待构建virtual bitmap与上一个virtual bitmap的地址下界是否有重合:
[0041]若不重合,则不更新地址上界C ;
[0042]若重合,则更新地址上界C,更新后的地址上界C为:
[0043]C = D+k,
[0044]其中,k是virtual bitmap的扩展估计偏移量,根据公式:
[0045]k = s.In (Vm) _s.In (Vs)
[0046]计算得到,Vm是所述的NUMA架构中内存分布表中访问状态为O的比例,Vs是上一个Virtual bitmap中访问状态为O的比例,s为上一个Virtual bitmap中地址位的个数。
[0047]该虚拟机内存访问监测方法中按照访问顺序依次处理各个内存访问地址,相应的构建virtual bitmap也是依次进行的,上一个virtual bitmap指相对于当前待构建virtual bitmap而言的上一个已经构建的virtual bitmap。当判断待构建virtual bitmap与上一个virtual bitmap的地址下界有重合时,直接将上一个virtual bitmap的地址下界进行一定的偏移后作为更新后的地址上界C,从而消除了因二者重合而导致的干扰。NUMA架构中在数据访问过程中通常采用传统的bitmap记录各个物理CPU的内存访问状态。
[0048]所述步骤⑵中根据公式:
[0049]h = (A-C) modB
[0050]确定该内存访问地址在virtual bitmap中对应的地址位h。
[0051 ] 所述的时间间隔为30ms。
[0052]所述的时间阈值为10s。
[0053]实际应用中该时间间隔和时间阈值可以根据实际应用情况设定。
[0054]与现有技术相比,本发明的有益效果在于:
[0055](I)采用段页式的访问监测方法,大大提高了监测的实时性;
[0056](2)采用内存分布表和virtual bitmap相结合的方式记录各个虚拟机的内存访问状态,以内存分布表来记录初始情况下虚拟机分配的内存的访问状态,以virtualbitmap来记录虚拟机中内存分布表中不存在的内存的访问情况,弥补了了传统的基于页表(内存分布表)的记录不能进行动态内存记录的缺点,真实能够反映出内存复用访问信息,且通过内存分布表有克服了基于bitmap监测导致的占用存储空间大的问题。

【专利附图】

【附图说明】
[0057]图1为本实施例的虚拟机内存访问监测方法的流程图。

【具体实施方式】
[0058]下面将结合附图和具体实施例对本发明进行详细说明。
[0059]一种基于NUMA架构的虚拟机内存访问监测方法,如图1所示,包括:
[0060](I)获取各个虚拟机的numa_maps信息,并根据各个虚拟机的numa_maps信息的构建各个虚拟机的内存分布表。
[0061]该内存分布表包括各个虚拟机所占用的内存段的段号、页表起始地址、各个内存段的页表大小、所在的节点,以及各个内存段中每一页的访问状态队列,初始时每一页的访问状态队列中所有元素全为O。
[0062]每一个访问状态队列的元素个数为10?15 (本实施例中为10)。
[0063](2)获取各个虚拟机的每次访问的内存访问地址,针对每一个虚拟机的每个内存访问地址,根据相应内存分布表中页表起始地址,采用二分查找法对页表起始地址的上界和下界进行搜索,根据搜索结果判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中,若搜索到,则判断该内存访问地址在当前虚拟机的内存分布表对应的内存中,否则,判断该内存访问地址不在当前虚拟机的内存分布表对应的内存中。
[0064]二分查找法的结果中包括该内存访问地址所在的内存段的段号,可了记录该段号,下一次采用二分查找法进行查找时,直接从下一个段号(所记录的段号的对应的内存段的下一个内存段的段号)开始进行搜索。
[0065]根据判断结果进行如下操作:
[0066]若在,则确定该内存访问地址对应的页,并将内存分布表中该页的访问状态队列中的第一位不为O的元素置为I ;
[0067]否则,根据该内存访问地址和内存分布表构建virtual bitmap,并根据公式:
[0068]h = (A-C) modB
[0069]确定该内存访问地址在virtual bitmap中对应的地址位h,并将virtual bitmap中地址位h的访问状态队列中第一个不为O的元素置为I。
[0070]针对内存分布表中的每一页或virtual bitmap中的每一个地址位,若访问状态阵列中最后一个为I的元素对应的访问时间等于的设定时间阈值(本实施例中该为10s),则将该访问状态队列中所有为I的元素置为O。
[0071]本实施例中通过以下方法构建virtual bitmap:
[0072](2-1)根据公式:

η
[0073]B = YjHiiZn

i=l
[0074]确定待构建virtual bitmap中每个地址位的大小B,其中,Iiii为内存分布表中第i个内存段的页表大小,η为当前虚拟机所占用的内存段的个数,i = O, I, 2……,η-1 ;
[0075](2-2)根据公式:
[0076]C= (A-B)/2,
[0077]确定virtual bitmap的地址上界,A为当前虚拟机的内存访问地址;
[0078]为消除相邻两个virtual bitmap之间的地址重叠引起的导干扰,步骤(2_2)还包括更新地址上界:
[0079]步骤(2-2)还包括更新地址上界:
[0080](2-21)根据上一个virtual bitmap的大小和地址上界计算上一个virtualbitmap的地址下界D ;
[0081](2-22)根据上一个virtual bitmap地址下界D,判断待构建virtual bitmap与上一个virtual bitmap的地址下界是否有重合:
[0082]若不重合,则不更新地址上界C ;
[0083]若重合,则更新地址上界C,更新后的地址上界C为:
[0084]C = D+k,
[0085]其中,k是virtual bitmap的扩展估计偏移量,根据公式:
[0086]k = s.In (Vm) _s.In (Vs)
[0087]计算得到,Vm是所述的NUMA架构中内存分布表中访问状态为O的比例,Vs是上一个Virtual bitmap中访问状态为O的比例,s为上一个Virtual bitmap中地址位的个数。
[0088](2-3)按照确定的待构建virtual bitmap的地址位的大小B和地址上界C(更新后的地址上界)构建virtual bitmap,其中virtual bitmap中每个地址位对应有一个访问状态队列。
[0089](3)每隔一定的时间间隔(本实施例中为30ms),根据内存分布表中各页的访问状态队列和Virtual bitmap各地址位的访问状态队列,确定当前虚拟机的热点内存:
[0090] 若存在所有元素全为I的访问队列,则以该访问队列对应的页或地址位作为相应时间间隔内当前虚拟机的热点内存,并输出热点内存列表;
[0091 ] 否则,认为相应时间间隔内当前虚拟机不存在热点内存。
[0092]否则,认为相应时间间隔内当前虚拟机不存在热点内存。
[0093]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
【权利要求】
1.一种基于NUMA架构的虚拟机内存访问监测方法,其特征在于,包括: (1)获取各个虚拟机的numa_maps信息,并根据各个虚拟机的numa_maps信息的构建各个虚拟机的内存分布表; 所述的内存分布表包括各个虚拟机所占用的内存段的段号、页表起始地址、各个内存段的页表大小、所在的节点,以及各个内存段中每一页的访问状态队列,初始时每一页的访问状态队列中所有元素全为O ; (2)获取各个虚拟机每次访问的内存访问地址,针对每一个虚拟机的每个内存访问地址,判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中: 若在,则确定该内存访问地址对应的页,并将内存分布表中该页的访问状态队列中的第一位不为O的元素置为I ; 否则,根据该内存访问地址和内存分布表构建virtual bitmap,确定该内存访问地址对应的地址位,并将virtual bitmap中该地址位的访问状态队列中第一个不为O的元素置为I ; (3)每隔一定的时间间隔,根据内存分布表中各页的访问状态队列和Virtualbitmap各地址位的访问状态队列,确定当前虚拟机的热点内存: 若存在所有元素全为I的访问队列,则以该访问队列对应的页或地址位作为相应时间间隔内当前虚拟机的热点内存,并输出热点内存列表; 否则,认为相应时间间隔内当前虚拟机不存在热点内存。
2.如权利要求1所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述的虚拟机内存访问监测方法中,针对内存分布表中的每一页或virtual bitmap中的每一个地址位,若访问状态阵列中最后一个为I的元素对应的访问时间等于的设定时间阈值,则将该访问状态队列中所有为I的元素置为O。
3.如权利要求2所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,每一个访问状态队列的元素个数为10?15。
4.如权利要求3所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述步骤(2)中根据内存分布表中页表起始地址,采用二分查找法判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中。
5.如权利要求4所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述步骤(2)中二分查找法的结果包括该内存访问地址所在的内存段的段号,下一次采用二分查找法进行查找时,从该段号的下一个段号开始进行搜索。
6.如权利要求1?5中任意一项权利要求所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述步骤(2)中通过以下方法构建virtual bitmap: (2-1)根据公式:
η
B = ^ Hii / η
i=l 确定待构建virtual bitmap中每个地址位的大小B,其中,Hii为内存分布表中第i个内存段的页表大小,η为当前虚拟机所占用的内存段的个数,i = O, I, 2……,η-1 ; (2-2)根据公式:
C = (A-B)/2, 确定virtual bitmap的地址上界,A为当前虚拟机的内存访问地址; (2-3)按照确定的待构建virtual bitmap的地址位的大小B和地址上界C构建virtual bitmap,且virtual bitmap中每个地址位对应有一个访问状态队列。
7.如权利要求6所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述步骤(2-2)还包括更新地址上界: (2-21)根据上一个virtual bitmap的大小和地址上界计算上一个virtual bitmap的地址下界D ; (2-22)根据上一个virtual bitmap地址下界D,判断待构建virtual bitmap与上一个virtual bitmap的地址下界是否有重合: 若不重合,则不更新地址上界C ; 若重合,则更新地址上界C,更新后的地址上界C为:
C = D+k, 其中,k是virtual bitmap的扩展估计偏移量,根据公式:
k = s.In (Vm) -S.In (Vs) 计算得到,Vm是所述的NUMA架构中内存分布表中访问状态为O的比例,Vs是上一个Virtual bitmap中访问状态为O的比例,s为上一个virtual bitmap的中地址位的个数。
8.如权利要求7所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述步骤(2)中根据公式:
h = (A-C) modB 确定该内存访问地址在virtual bitmap中对应的地址位h。
9.如权利要求8所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述的时间间隔为30ms。
10.如权利要求9所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述的时间阈值为10s。
【文档编号】G06F12/02GK104281532SQ201410447091
【公开日】2015年1月14日 申请日期:2014年9月4日 优先权日:2014年5月15日
【发明者】黄步添, 陈建海, 何钦铭, 左起同, 徐得景, 刘振广 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1