《一种基于NUMA架构的虚拟机内存访问监测方法.pdf》由会员分享,可在线阅读,更多相关《一种基于NUMA架构的虚拟机内存访问监测方法.pdf(10页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104281532 A (43)申请公布日 2015.01.14 CN 104281532 A (21)申请号 201410447091.3 (22)申请日 2014.09.04 201410207198.0 2014.05.15 CN G06F 12/02(2006.01) (71)申请人 浙江大学 地址 310027 浙江省杭州市西湖区浙大路 38 号 (72)发明人 黄步添 陈建海 何钦铭 左起同 徐得景 刘振广 (74)专利代理机构 杭州天勤知识产权代理有限 公司 33224 代理人 胡红娟 (54) 发明名称 一种基于 NUMA 架构的虚拟机内存访问监测 方。
2、法 (57) 摘要 本发明公开了一种基于 NUMA 架构的虚拟机 内存访问监测方法, 本发明的虚拟机内存访问监 测方法中采用段页式的访问监测方法, 并利用内 存分布表和 virtual bitmap 相结合的方式记录 各个虚拟机的内存访问状态, 以内存分布表来记 录初始情况下虚拟机分配的内存的访问状态, 以 virtual bitmap来记录虚拟机中内存分布表中不 存在的内存的访问情况。本发明的虚拟机内存访 问监测方法大大提高了监测的实时性, 且弥补了 传统的基于页表的记录不能进行动态内存记录的 确定, 也克服了基于 bitmap 监测导致的占用存储 空间大的问题。 (66)本国优先权数据 (。
3、51)Int.Cl. 权利要求书 2 页 说明书 6 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书6页 附图1页 (10)申请公布号 CN 104281532 A CN 104281532 A 1/2 页 2 1. 一种基于 NUMA 架构的虚拟机内存访问监测方法, 其特征在于, 包括 : (1)获取各个虚拟机的numa_maps信息, 并根据各个虚拟机的numa_maps信息的构建各 个虚拟机的内存分布表 ; 所述的内存分布表包括各个虚拟机所占用的内存段的段号、 页表起始地址、 各个内存 段的页表大小、 所在的节点, 以及各个内存段中每。
4、一页的访问状态队列, 初始时每一页的访 问状态队列中所有元素全为 0 ; (2) 获取各个虚拟机每次访问的内存访问地址, 针对每一个虚拟机的每个内存访问地 址, 判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中 : 若在, 则确定该内存访问地址对应的页, 并将内存分布表中该页的访问状态队列中的 第一位不为 0 的元素置为 1 ; 否则, 根据该内存访问地址和内存分布表构建 virtual bitmap, 确定该内存访问地址 对应的地址位, 并将virtual bitmap中该地址位的访问状态队列中第一个不为0的元素置 为 1 ; (3) 每隔一定的时间间隔, 根据内存分布表中各页的访。
5、问状态队列和 Virtual bitmap 各地址位的访问状态队列, 确定当前虚拟机的热点内存 : 若存在所有元素全为 1 的访问队列, 则以该访问队列对应的页或地址位作为相应时间 间隔内当前虚拟机的热点内存, 并输出热点内存列表 ; 否则, 认为相应时间间隔内当前虚拟机不存在热点内存。 2. 如权利要求 1 所述的基于 NUMA 架构的虚拟机内存访问监测方法, 其特征在于, 所述 的虚拟机内存访问监测方法中, 针对内存分布表中的每一页或virtual bitmap中的每一个 地址位, 若访问状态阵列中最后一个为 1 的元素对应的访问时间等于的设定时间阈值, 则 将该访问状态队列中所有为 1 。
6、的元素置为 0。 3. 如权利要求 2 所述的基于 NUMA 架构的虚拟机内存访问监测方法, 其特征在于, 每一 个访问状态队列的元素个数为 10 15。 4. 如权利要求 3 所述的基于 NUMA 架构的虚拟机内存访问监测方法, 其特征在于, 所述 步骤 (2) 中根据内存分布表中页表起始地址, 采用二分查找法判断该内存访问地址是否在 当前虚拟机的内存分布表对应的内存中。 5. 如权利要求 4 所述的基于 NUMA 架构的虚拟机内存访问监测方法, 其特征在于, 所述 步骤 (2) 中二分查找法的结果包括该内存访问地址所在的内存段的段号, 下一次采用二分 查找法进行查找时, 从该段号的下一个段。
7、号开始进行搜索。 6. 如权利要求 1 5 中任意一项权利要求所述的基于 NUMA 架构的虚拟机内存访问监 测方法, 其特征在于, 所述步骤 (2) 中通过以下方法构建 virtual bitmap : (2-1) 根据公式 : 确定待构建 virtual bitmap 中每个地址位的大小 B, 其中, mi为内存分布表中第 i 个 内存段的页表大小, n 为当前虚拟机所占用的内存段的个数, i 0,1,2, n-1 ; (2-2) 根据公式 : C (A-B)/2, 权 利 要 求 书 CN 104281532 A 2 2/2 页 3 确定 virtual bitmap 的地址上界, A 为。
8、当前虚拟机的内存访问地址 ; (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 。
9、bitmap 与上一 个 virtual bitmap 的地址下界是否有重合 : 若不重合, 则不更新地址上界 C ; 若重合, 则更新地址上界 C, 更新后的地址上界 C 为 : C D+k, 其中, k 是 virtual bitmap 的扩展估计偏移量, 根据公式 : k sln(Vm)-sln(Vs) 计算得到, Vm是所述的 NUMA 架构中内存分布表中访问状态为 0 的比例, Vs是上一个 Virtual bitmap 中访问状态为 0 的比例, s 为上一个 virtual bitmap 的中地址位的个数。 8. 如权利要求 7 所述的基于 NUMA 架构的虚拟机内存访问监测方法。
10、, 其特征在于, 所述 步骤 (2) 中根据公式 : h (A-C)modB 确定该内存访问地址在 virtual bitmap 中对应的地址位 h。 9. 如权利要求 8 所述的基于 NUMA 架构的虚拟机内存访问监测方法, 其特征在于, 所述 的时间间隔为 30ms。 10.如权利要求9所述的基于NUMA架构的虚拟机内存访问监测方法, 其特征在于, 所述 的时间阈值为 10s。 权 利 要 求 书 CN 104281532 A 3 1/6 页 4 一种基于 NUMA 架构的虚拟机内存访问监测方法 技术领域 0001 本发明涉及网络技术领域, 特别涉及一种基于 NUMA 架构的虚拟机内存访问。
11、监测 方法。 背景技术 0002 NUMA(Non-Uniform Memory Access, NUMA) 架构由多个通过内部互连网络连接的 处理节点组成, 每个节点上可以配置一个或者多个处理器, 内存在物理上分布于各个节点, 但在逻辑上进行全局统一编址, 每个节点内部的处理器共享内存。处理器可以通过互连网 络访问并在cache中缓存远程的内存数据。 NUMA系统的节点内一般采用总线监听方式来保 持 cache 一致性, 节点间用硬件来实现基于目录的 cache 一致性。 0003 以 NUMA 架构为基础的多核与内存硬件技术, 为高性能计算机系统提供了重要的 硬件支持。随着虚拟计算机技术的。
12、发展, 基于 NUMA 架构的虚拟机成为虚拟计算机领域研究 的热点。与运行带有物理 NUMA 硬件的非虚拟化计算机相比, 利用虚拟 NUMA 能够部署更大 和更多关键业务的工作负载, 这些工作负载可在不使虚拟化环境性能明显下降的情况下运 行。 0004 在 NUMA 架构下的虚拟机系统, 个虚拟机的可能分布在不同的 NUMA 节点。大多 数使用虚拟存储器的系统都使用一种称为分页 (paging) 机制, 将虚拟机的地址空间划分 成称为页 (page) 的单位, 而相应的物理地址空间 ( 物理内存 ) 也被进行划分, 单位是页帧 (frame), 页和页帧的大小必须相同, 相互映射关系。 在构建。
13、虚拟机系统时, 为每个虚拟机分 配内存即相应的 numa_maps 信息, numa_maps 信息中包括每个虚拟机的内存分布情况, 该分 布情况相应的以页为基本单位进行管理, 根据该 numa_maps 信息即得到各个虚拟机的内存 分布信息, 根据 numa_maps 信息构建得到相应虚拟机的内存分布表, NUMA 架构下每个节点 (NUMA 节点 ) 具有独立的物理内存, 且根据页与页帧的映射关系, 确定各页所在的节点。为 方便管理, 将物理地址连续的若干页组分一个段 ( 即内存段 )。 0005 由于 NUMA 架构下远近端内存访问开销相差很大, 过多远端内存访问会造成系统 性能急剧下滑。
14、。 对跨节点的内存访问进行监测, 可以识别出热点跨节点数据访问页面, 动态 调整内存分布情况, 提升本地内存访问比例, 提升系统整体性能。为了提升 NUMA 物理机的 各个节点内存访问的均衡, 系统需要监测记录虚拟机的内存访问状况, 来为系统进行负载 均衡提供决策依据。 0006 传统的方法通过 bitmap 或页表的方法监测记录虚拟机的内存访问状况, 但是存 在以下问题 : 0007 (a) 采用 bitmap 来记录内存访问记录, 会浪费很大的空间, 且不能直接感知内存 所在 NUMA 节点, 需要间接通过系统调用来查询当前内存的所在节点信息 ; 0008 (b) 由于 balloon、 。
15、Transcendent Memory 等内存复用机制, 虚拟机的部分内存是 动态变化的, 若通过传统页表的方法, 不能统计最近一段时间的访问次数, 同时出现内存复 用时, 不能记录这些动态内存记录。 说 明 书 CN 104281532 A 4 2/6 页 5 发明内容 0009 针对现有技术的不足, 本发明提供了一种 NUMA 架构的虚拟机内存访问监测方法。 0010 一种基于 NUMA 架构的虚拟机内存访问监测方法, 包括 : 0011 (1)获取虚拟机的numa_maps信息, 并根据虚拟机的numa_maps信息的构建各个虚 拟机的内存分布表 ; 0012 所述的内存分布表包括各个虚。
16、拟机所占用的内存段的段号、 页表起始地址、 各个 内存段的页表大小、 所在的节点, 以及各个内存段中每一页的访问状态队列, 初始时每一页 的访问状态队列中所有元素全为 0 ; 0013 (2) 获取各个虚拟机每次访问的内存访问地址, 针对每一个虚拟机的每个内存访 问地址, 判断该内存访问地址是否在当前虚拟机的内存分布表对应的内存中 : 0014 若在, 则确定该内存访问地址对应的页, 并将内存分布表中该页的访问状态队列 中的第一位不为 0 的元素置为 1 ; 0015 否则, 根据该内存访问地址和内存分布表构建 virtual bitmap, 确定该内存访问 地址对应的地址位, 并将virtu。
17、al bitmap中该地址位的访问状态队列中第一个不为0的元 素置为 1 ; 0016 (3) 每隔一定的时间间隔, 根据内存分布表中各页的访问状态队列和 Virtual bitmap 各地址位的访问状态队列, 确定当前虚拟机的热点内存 : 0017 若存在所有元素全为 1 的访问队列, 则以该访问队列对应的页或地址位作为相应 时间间隔内当前虚拟机的热点内存, 并输出热点内存列表 ; 0018 否则, 认为相应时间间隔内当前虚拟机不存在热点内存。 0019 本发明的每个内存分布表包括相应的虚拟机的内存段的段号、 该内存段对应的页 表起始地址、 各个内存段的页表大小、 所在的节点, 以及各页的访。
18、问状态队列。访问状态队 列中的每一个元素表示该页的访问状态, 本发明中 “0” 作表示未被访问, 以 “1” 表示被访 问。根据访问状态队列中为 “1” 的元素的个数, 即可得虚拟机访问该页的次数。访问状态 队列大小 ( 即包括的元素个数 ) 可根据实际应用情况设定, 初始情况下访问状态队列中所 有元素的均为 “0” , 表示该页未被访问。 0020 本发明中步骤 (2) 中获取虚拟机每次访问的内存访问地址, 包括复用内存访问地 址, 通过 perf 采集得到。且当该访问地址在当前虚拟机的内存分布表对应的内存中时, 通 过以下方法确定该内存访问地址对应的页 : 根据二分查找法的结果, 确定该内。
19、存访问地址 所在的内存段, 然后用内存访问地址减去该内存段的起始地址, 从而得到该内存访问地址 在内存段对应的页。 0021 本发明中采用一种段页式的访问监测方法, 大大提高了监测的实时性, 且采用内 存分布表和virtual bitmap相结合的方式记录各个虚拟机的内存访问状态, 以内存分布表 来记录初始情况下虚拟机分配的内存的访问状态, 以virtual bitmap来记录虚拟机中内存 分布表中不存在的内存的访问情况, 弥补了传统的基于页表 ( 内存分布表 ) 的记录不能进 行动态内存记录的确定, 反过来, 通过内存分布表克服了基于 bitmap 监测导致的占用存储 空间大的问题。 002。
20、2 所述的虚拟机内存访问监测方法中, 针对内存分布表中的每一页或 virtual 说 明 书 CN 104281532 A 5 3/6 页 6 bitmap 中的每一个地址位, 若访问状态阵列中最后一个为 1 的元素对应的访问时间等于的 设定时间阈值, 则将该访问状态队列中所有为 1 的元素置为 0。 0023 在监测过程中时按照虚拟机的访问顺序依次对各个元素置 “1” , 访问状态队列中 最后一个为 “1” 的元素即对应该于虚拟机最后一次访问该页。通过设定时间阈值对访问队 列进行清零 ( 所有为 1 的元素置为 0), 便于利用内存分布表进行内存调控。 0024 每一个访问状态队列的元素个数。
21、为 10 15。 0025 访问状态队列的大小关系到监测的灵敏度, 可根据实际应用情况调节。 0026 所述步骤 (2) 中根据内存分布表中页表起始地址, 采用二分查找法判断该内存访 问地址是否在当前虚拟机的内存分布表对应的内存中。 0027 作为优选, 所述步骤 (2) 中二分查找法的结果包括该内存访问地址所在的内存段 的段号, 下一次采用二分查找法进行查找时, 从该段号的下一个段号开始进行搜索。 0028 采用二分查找法能够提高搜索效率, 且能够确定该内存访问地址对应的内存段的 段号, 且每次二分查找法进行搜索时的从上一次二分查找法的结果对应的下一段开始搜 索, 进一步提高搜索效率。 00。
22、29 所述步骤 (2) 中通过以下方法构建 virtual bitmap : 0030 (2-1) 根据公式 : 0031 0032 确定待构建 virtual bitmap 中每个地址位的大小 B, 其中, mi为内存分布表中第 i 个内存段的页表大小, n 为当前虚拟机所占用的内存段的个数, i 0,1,2, n-1 ; 0033 (2-2) 根据公式 : 0034 C (A-B)/2, 0035 确定 virtual bitmap 的地址上界, A 为当前虚拟机的内存访问地址 ; 0036 (2-3) 按照确定的待构建 virtual bitmap 的地址位的大小 B 和地址上界 C 构。
23、建 virtual bitmap, 且 virtual bitmap 中每个地址位对应有一个访问状态队列。 0037 根据内存分布表中各个内存段的大小确定 virtual bitmap 中每个地址位, 能够 保证管理的均衡性, 得到 virtual bitmap 的地址上界和每个地址为的大小后, 即可得到 virtual bitmap 的地址上界, 进而构建 virtual bitmap。 0038 所述步骤 (2-2) 还包括更新地址上界 : 0039 (2-21) 根据上一个 virtual bitmap 的大小和地址上界计算上一个 virtual bitmap 的地址下界 D ; 004。
24、0 (2-22) 根据上一个 virtual bitmap 地址下界 D, 判断待构建 virtual bitmap 与 上一个 virtual bitmap 的地址下界是否有重合 : 0041 若不重合, 则不更新地址上界 C ; 0042 若重合, 则更新地址上界 C, 更新后的地址上界 C 为 : 0043 C D+k, 0044 其中, k 是 virtual bitmap 的扩展估计偏移量, 根据公式 : 0045 k sln(Vm)-sln(Vs) 0046 计算得到, Vm是所述的 NUMA 架构中内存分布表中访问状态为 0 的比例, Vs是上一 说 明 书 CN 1042815。
25、32 A 6 4/6 页 7 个 Virtual bitmap 中访问状态为 0 的比例, s 为上一个 Virtual bitmap 中地址位的个数。 0047 该虚拟机内存访问监测方法中按照访问顺序依次处理各个内存访问地址, 相应 的构建 virtual bitmap 也是依次进行的, 上一个 virtual bitmap 指相对于当前待构建 virtual bitmap而言的上一个已经构建的virtual bitmap。 当判断待构建virtual bitmap 与上一个 virtual bitmap 的地址下界有重合时, 直接将上一个 virtual bitmap 的地址下 界进行一定。
26、的偏移后作为更新后的地址上界C, 从而消除了因二者重合而导致的干扰。 NUMA 架构中在数据访问过程中通常采用传统的 bitmap 记录各个物理 CPU 的内存访问状态。 0048 所述步骤 (2) 中根据公式 : 0049 h (A-C)modB 0050 确定该内存访问地址在 virtual bitmap 中对应的地址位 h。 0051 所述的时间间隔为 30ms。 0052 所述的时间阈值为 10s。 0053 实际应用中该时间间隔和时间阈值可以根据实际应用情况设定。 0054 与现有技术相比, 本发明的有益效果在于 : 0055 (1) 采用段页式的访问监测方法, 大大提高了监测的实时。
27、性 ; 0056 (2) 采用内存分布表和 virtual bitmap 相结合的方式记录各个虚拟机的内存 访问状态, 以内存分布表来记录初始情况下虚拟机分配的内存的访问状态, 以 virtual bitmap 来记录虚拟机中内存分布表中不存在的内存的访问情况, 弥补了了传统的基于页表 ( 内存分布表 ) 的记录不能进行动态内存记录的缺点, 真实能够反映出内存复用访问信息, 且通过内存分布表有克服了基于 bitmap 监测导致的占用存储空间大的问题。 附图说明 0057 图 1 为本实施例的虚拟机内存访问监测方法的流程图。 具体实施方式 0058 下面将结合附图和具体实施例对本发明进行详细说明。
28、。 0059 一种基于 NUMA 架构的虚拟机内存访问监测方法, 如图 1 所示, 包括 : 0060 (1)获取各个虚拟机的numa_maps信息, 并根据各个虚拟机的numa_maps信息的构 建各个虚拟机的内存分布表。 0061 该内存分布表包括各个虚拟机所占用的内存段的段号、 页表起始地址、 各个内存 段的页表大小、 所在的节点, 以及各个内存段中每一页的访问状态队列, 初始时每一页的访 问状态队列中所有元素全为 0。 0062 每一个访问状态队列的元素个数为 10 15( 本实施例中为 10)。 0063 (2) 获取各个虚拟机的每次访问的内存访问地址, 针对每一个虚拟机的每个内存 。
29、访问地址, 根据相应内存分布表中页表起始地址, 采用二分查找法对页表起始地址的上界 和下界进行搜索, 根据搜索结果判断该内存访问地址是否在当前虚拟机的内存分布表对应 的内存中, 若搜索到, 则判断该内存访问地址在当前虚拟机的内存分布表对应的内存中, 否 则, 判断该内存访问地址不在当前虚拟机的内存分布表对应的内存中。 0064 二分查找法的结果中包括该内存访问地址所在的内存段的段号, 可了记录该段 说 明 书 CN 104281532 A 7 5/6 页 8 号, 下一次采用二分查找法进行查找时, 直接从下一个段号 ( 所记录的段号的对应的内存 段的下一个内存段的段号 ) 开始进行搜索。 00。
30、65 根据判断结果进行如下操作 : 0066 若在, 则确定该内存访问地址对应的页, 并将内存分布表中该页的访问状态队列 中的第一位不为 0 的元素置为 1 ; 0067 否则, 根据该内存访问地址和内存分布表构建 virtual bitmap, 并根据公式 : 0068 h (A-C)modB 0069 确定该内存访问地址在virtual bitmap中对应的地址位h, 并将virtual bitmap 中地址位 h 的访问状态队列中第一个不为 0 的元素置为 1。 0070 针对内存分布表中的每一页或virtual bitmap中的每一个地址位, 若访问状态阵 列中最后一个为 1 的元素对。
31、应的访问时间等于的设定时间阈值 ( 本实施例中该为 10s), 则 将该访问状态队列中所有为 1 的元素置为 0。 0071 本实施例中通过以下方法构建 virtual bitmap : 0072 (2-1) 根据公式 : 0073 0074 确定待构建 virtual bitmap 中每个地址位的大小 B, 其中, mi为内存分布表中第 i 个内存段的页表大小, n 为当前虚拟机所占用的内存段的个数, i 0,1,2, n-1 ; 0075 (2-2) 根据公式 : 0076 C (A-B)/2, 0077 确定 virtual bitmap 的地址上界, A 为当前虚拟机的内存访问地址 ;。
32、 0078 为消除相邻两个virtual bitmap之间的地址重叠引起的导干扰, 步骤(2-2)还包 括更新地址上界 : 0079 步骤 (2-2) 还包括更新地址上界 : 0080 (2-21) 根据上一个 virtual bitmap 的大小和地址上界计算上一个 virtual bitmap 的地址下界 D ; 0081 (2-22) 根据上一个 virtual bitmap 地址下界 D, 判断待构建 virtual bitmap 与 上一个 virtual bitmap 的地址下界是否有重合 : 0082 若不重合, 则不更新地址上界 C ; 0083 若重合, 则更新地址上界 C,。
33、 更新后的地址上界 C 为 : 0084 C D+k, 0085 其中, k 是 virtual bitmap 的扩展估计偏移量, 根据公式 : 0086 k sln(Vm)-sln(Vs) 0087 计算得到, Vm是所述的 NUMA 架构中内存分布表中访问状态为 0 的比例, Vs是上一 个 Virtual bitmap 中访问状态为 0 的比例, s 为上一个 Virtual bitmap 中地址位的个数。 0088 (2-3) 按照确定的待构建 virtual bitmap 的地址位的大小 B 和地址上界 C( 更新 后的地址上界)构建virtual bitmap, 其中virtual。
34、 bitmap中每个地址位对应有一个访问 状态队列。 0089 (3)每隔一定的时间间隔(本实施例中为30ms), 根据内存分布表中各页的访问状 说 明 书 CN 104281532 A 8 6/6 页 9 态队列和 Virtual bitmap 各地址位的访问状态队列, 确定当前虚拟机的热点内存 : 0090 若存在所有元素全为 1 的访问队列, 则以该访问队列对应的页或地址位作为相应 时间间隔内当前虚拟机的热点内存, 并输出热点内存列表 ; 0091 否则, 认为相应时间间隔内当前虚拟机不存在热点内存。 0092 否则, 认为相应时间间隔内当前虚拟机不存在热点内存。 0093 以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限于此, 任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可轻易想到的变化或替换, 都应 涵盖在本发明的保护范围之内。 说 明 书 CN 104281532 A 9 1/1 页 10 图 1 说 明 书 附 图 CN 104281532 A 10 。