当前位置: 首页 > 专利查询>浙江大学专利>正文

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

技术编号:10918311 阅读:137 留言:0更新日期:2015-01-15 11:50
本发明专利技术公开了一种基于NUMA架构的虚拟机内存访问监测方法,本发明专利技术的虚拟机内存访问监测方法中采用段页式的访问监测方法,并利用内存分布表和virtual bitmap相结合的方式记录各个虚拟机的内存访问状态,以内存分布表来记录初始情况下虚拟机分配的内存的访问状态,以virtual bitmap来记录虚拟机中内存分布表中不存在的内存的访问情况。本发明专利技术的虚拟机内存访问监测方法大大提高了监测的实时性,且弥补了传统的基于页表的记录不能进行动态内存记录的确定,也克服了基于bitmap监测导致的占用存储空间大的问题。

【技术实现步骤摘要】
一种基于NUMA架构的虚拟机内存访问监测方法
本专利技术涉及网络
,特别涉及一种基于NUMA架构的虚拟机内存访问监测方法。
技术介绍
NUMA(Non-UniformMemoryAccess,NUMA)架构由多个通过内部互连网络连接的处理节点组成,每个节点上可以配置一个或者多个处理器,内存在物理上分布于各个节点,但在逻辑上进行全局统一编址,每个节点内部的处理器共享内存。处理器可以通过互连网络访问并在cache中缓存远程的内存数据。NUMA系统的节点内一般采用总线监听方式来保持cache一致性,节点间用硬件来实现基于目录的cache一致性。以NUMA架构为基础的多核与内存硬件技术,为高性能计算机系统提供了重要的硬件支持。随着虚拟计算机技术的发展,基于NUMA架构的虚拟机成为虚拟计算机领域研究的热点。与运行带有物理NUMA硬件的非虚拟化计算机相比,利用虚拟NUMA能够部署更大和更多关键业务的工作负载,这些工作负载可在不使虚拟化环境性能明显下降的情况下运行。在NUMA架构下的虚拟机系统,个虚拟机的可能分布在不同的NUMA节点。大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制,将虚拟机的地址空间划分成称为页(page)的单位,而相应的物理地址空间(物理内存)也被进行划分,单位是页帧(frame),页和页帧的大小必须相同,相互映射关系。在构建虚拟机系统时,为每个虚拟机分配内存即相应的numa_maps信息,numa_maps信息中包括每个虚拟机的内存分布情况,该分布情况相应的以页为基本单位进行管理,根据该numa_maps信息即得到各个虚拟机的内存分布信息,根据numa_maps信息构建得到相应虚拟机的内存分布表,NUMA架构下每个节点(NUMA节点)具有独立的物理内存,且根据页与页帧的映射关系,确定各页所在的节点。为方便管理,将物理地址连续的若干页组分一个段(即内存段)。由于NUMA架构下远近端内存访问开销相差很大,过多远端内存访问会造成系统性能急剧下滑。对跨节点的内存访问进行监测,可以识别出热点跨节点数据访问页面,动态调整内存分布情况,提升本地内存访问比例,提升系统整体性能。为了提升NUMA物理机的各个节点内存访问的均衡,系统需要监测记录虚拟机的内存访问状况,来为系统进行负载均衡提供决策依据。传统的方法通过bitmap或页表的方法监测记录虚拟机的内存访问状况,但是存在以下问题:(a)采用bitmap来记录内存访问记录,会浪费很大的空间,且不能直接感知内存所在NUMA节点,需要间接通过系统调用来查询当前内存的所在节点信息;(b)由于balloon、TranscendentMemory等内存复用机制,虚拟机的部分内存是动态变化的,若通过传统页表的方法,不能统计最近一段时间的访问次数,同时出现内存复用时,不能记录这些动态内存记录。
技术实现思路
针对现有技术的不足,本专利技术提供了一种NUMA架构的虚拟机内存访问监测方法。一种基于NUMA架构的虚拟机内存访问监测方法,包括:(1)获取虚拟机的numa_maps信息,并根据虚拟机的numa_maps信息的构建各个虚拟机的内存分布表;所述的内存分布表包括各个虚拟机所占用的内存段的段号、页表起始地址、各个内存段的页表大小、所在的节点,以及各个内存段中每一页的访问状态队列,初始时每一页的访问状态队列中所有元素全为0;(2)获取各个虚拟机每次访问的内存访问地址,针对每一个虚拟机的每个内存访问地址,判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中:若在,则确定该内存访问地址对应的页,并将内存分布表中该页的访问状态队列中的第一位不为0的元素置为1;否则,根据该内存访问地址和内存分布表构建virtualbitmap,确定该内存访问地址对应的地址位,并将virtualbitmap中该地址位的访问状态队列中第一个不为0的元素置为1;(3)每隔一定的时间间隔,根据内存分布表中各页的访问状态队列和Virtualbitmap各地址位的访问状态队列,确定当前虚拟机的热点内存:若存在所有元素全为1的访问状态队列,则以该访问状态队列对应的页或地址位作为相应时间间隔内当前虚拟机的热点内存,并输出热点内存列表;否则,认为相应时间间隔内当前虚拟机不存在热点内存。本专利技术的每个内存分布表包括相应的虚拟机的内存段的段号、该内存段对应的页表起始地址、各个内存段的页表大小、所在的节点,以及各页的访问状态队列。访问状态队列中的每一个元素表示该页的访问状态,本专利技术中“0”作表示未被访问,以“1”表示被访问。根据访问状态队列中为“1”的元素的个数,即可得虚拟机访问该页的次数。访问状态队列大小(即包括的元素个数)可根据实际应用情况设定,初始情况下访问状态队列中所有元素的均为“0”,表示该页未被访问。本专利技术中步骤(2)中获取虚拟机每次访问的内存访问地址,包括复用内存访问地址,通过perf采集得到。且当该访问地址在当前虚拟机的内存分布表对应的内存中时,通过以下方法确定该内存访问地址对应的页:根据二分查找法的结果,确定该内存访问地址所在的内存段,然后用内存访问地址减去该内存段的起始地址,从而得到该内存访问地址在内存段对应的页。本专利技术中采用一种段页式的访问监测方法,大大提高了监测的实时性,且采用内存分布表和virtualbitmap相结合的方式记录各个虚拟机的内存访问状态,以内存分布表来记录初始情况下虚拟机分配的内存的访问状态,以virtualbitmap来记录虚拟机中内存分布表中不存在的内存的访问情况,弥补了传统的基于页表(内存分布表)的记录不能进行动态内存记录的确定,反过来,通过内存分布表克服了基于bitmap监测导致的占用存储空间大的问题。所述的虚拟机内存访问监测方法中,针对内存分布表中的每一页或virtualbitmap中的每一个地址位,若访问状态队列中最后一个为1的元素对应的访问时间等于的设定时间阈值,则将该访问状态队列中所有为1的元素置为0。在监测过程中时按照虚拟机的访问顺序依次对各个元素置“1”,访问状态队列中最后一个为“1”的元素即对应该于虚拟机最后一次访问该页。通过设定时间阈值对访问状态队列进行清零(所有为1的元素置为0),便于利用内存分布表进行内存调控。每一个访问状态队列的元素个数为10~15。访问状态队列的大小关系到监测的灵敏度,可根据实际应用情况调节。所述步骤(2)中根据内存分布表中页表起始地址,采用二分查找法判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中。作为优选,所述步骤(2)中二分查找法的结果包括该内存访问地址所在的内存段的段号,下一次采用二分查找法进行查找时,从该段号的下一个段号开始进行搜索。采用二分查找法能够提高搜索效率,且能够确定该内存访问地址对应的内存段的段号,且每次二分查找法进行搜索时的从上一次二分查找法的结果对应的下一段开始搜索,进一步提高搜索效率。所述步骤(2)中通过以下方法构建virtualbitmap:(2-1)根据公式:确定待构建virtualbitmap中每个地址位的大小B,其中,mi为内存分布表中第i个内存段的页表大小,n为当前虚拟机所占用的内存段的个数;(2-2)根据公式:C=(A-B)/2,确定virtualbitmap的地本文档来自技高网
...
一种基于NUMA架构的虚拟机内存访问监测方法

【技术保护点】
一种基于NUMA架构的虚拟机内存访问监测方法,其特征在于,包括:(1)获取各个虚拟机的numa_maps信息,并根据各个虚拟机的numa_maps信息的构建各个虚拟机的内存分布表;所述的内存分布表包括各个虚拟机所占用的内存段的段号、页表起始地址、各个内存段的页表大小、所在的节点,以及各个内存段中每一页的访问状态队列,初始时每一页的访问状态队列中所有元素全为0;(2)获取各个虚拟机每次访问的内存访问地址,针对每一个虚拟机的每个内存访问地址,判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中:若在,则确定该内存访问地址对应的页,并将内存分布表中该页的访问状态队列中的第一位不为0的元素置为1;否则,根据该内存访问地址和内存分布表构建virtual bitmap,确定该内存访问地址对应的地址位,并将virtual bitmap中该地址位的访问状态队列中第一个不为0的元素置为1;(3)每隔一定的时间间隔,根据内存分布表中各页的访问状态队列和Virtual bitmap各地址位的访问状态队列,确定当前虚拟机的热点内存:若存在所有元素全为1的访问队列,则以该访问队列对应的页或地址位作为相应时间间隔内当前虚拟机的热点内存,并输出热点内存列表;否则,认为相应时间间隔内当前虚拟机不存在热点内存。...

【技术特征摘要】
2014.05.15 CN 201410207198.01.一种基于NUMA架构的虚拟机内存访问监测方法,其特征在于,包括:(1)获取各个虚拟机的numa_maps信息,并根据各个虚拟机的numa_maps信息的构建各个虚拟机的内存分布表;所述的内存分布表包括各个虚拟机所占用的内存段的段号、页表起始地址、各个内存段的页表大小、所在的节点,以及各个内存段中每一页的访问状态队列,初始时每一页的访问状态队列中所有元素全为0;(2)获取各个虚拟机每次访问的内存访问地址,针对每一个虚拟机的每个内存访问地址,判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中:若在,则确定该内存访问地址对应的页,并将内存分布表中该页的访问状态队列中的第一位不为0的元素置为1;否则,根据该内存访问地址和内存分布表构建virtualbitmap,确定该内存访问地址对应的地址位,并将virtualbitmap中该地址位的访问状态队列中第一个不为0的元素置为1;(3)每隔一定的时间间隔,根据内存分布表中各页的访问状态队列和Virtualbitmap各地址位的访问状态队列,确定当前虚拟机的热点内存:若存在所有元素全为1的访问状态队列,则以该访问状态队列对应的页或地址位作为相应时间间隔内当前虚拟机的热点内存,并输出热点内存列表;否则,认为相应时间间隔内当前虚拟机不存在热点内存。2.如权利要求1所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述的虚拟机内存访问监测方法中,针对内存分布表中的每一页或virtualbitmap中的每一个地址位,若访问状态队列中最后一个为1的元素对应的访问时间等于的设定时间阈值,则将该访问状态队列中所有为1的元素置为0。3.如权利要求2所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,每一个访问状态队列的元素个数为10~15。4.如权利要求3所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述步骤(2)中根据内存分布表中页表起始地址,采用二分查找法判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中。5.如权利要求4所述的基于NUMA架构的虚拟机内存访问监测方法,其特征在于,所述步骤(2)中二分查找法的结果...

【专利技术属性】
技术研发人员:黄步添陈建海何钦铭左起同徐得景刘振广
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1