首页> 中国专利> NUMA架构系统在虚拟机环境中的访存优化方法及系统

NUMA架构系统在虚拟机环境中的访存优化方法及系统

摘要

本发明涉及一种NUMA架构系统在虚拟机环境中的访存优化方法及系统。该方法包括如下步骤:在虚拟机环境下通过编程处理器的非核部分性能监视单元实时检测NUMA架构系统中每一节点的物理内存带宽压力,并判断各节点的物理内存带宽压力是否超出预设水平;当某节点的物理内存带宽压力超出预设水平时,检测此节点的全局队列缓冲压力,并据此判断此节点的本地访存压力与远端访存压力的大小关系;当节点的远端访存压力大于本地访存压力时,将节点中的非本地虚拟机的内存物理页迁移到其他节点;当节点的本地访存压力大于远端访存压力时,检测第一预设时间内节点中各本地虚拟机导致二级缓存失效的次数,并将导致二级缓存失效次数最少的本地虚拟机调度到其他节点。

著录项

  • 公开/公告号CN104657198A

    专利类型发明专利

  • 公开/公告日2015-05-27

    原文格式PDF

  • 申请/专利权人 深圳职业技术学院;

    申请/专利号CN201510037275.7

  • 发明设计人 王梅;罗秋明;肖正兴;肖锋;

    申请日2015-01-24

  • 分类号G06F9/455(20060101);G06F9/50(20060101);

  • 代理机构深圳市恒申知识产权事务所(普通合伙);

  • 代理人陈健

  • 地址 518000 广东省深圳市西丽湖镇西丽湖畔

  • 入库时间 2023-12-18 08:54:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-26

    授权

    授权

  • 2015-06-24

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20150124

    实质审查的生效

  • 2015-05-27

    公开

    公开

说明书

技术领域

本发明涉及虚拟机调度技术领域,尤其涉及一种NUMA架构系统在虚拟机 环境中的访存优化方法及系统。

背景技术

随着云计算和大数据的兴起,NUMA(Non-Uniform Memory Access,非一致 内存访问)系统平台已经成为云计算和云存储的主要基础设施,NUMA架构将逐 渐成为高性能计算的主流架构。同时,由于虚拟机的高度隔离性(虚拟机与底 层的物理机器均实现隔离)、易于让用户接受(与用户所习惯使用的普通机器看 起来一致)、支持不同的操作系统和应用程序、低风险和易于维护等特性,使得 虚拟机无论是在个人PC还是在商业服务器被使用得都非常广泛,虚拟机技术已 经成为云计算中的一个关键技术。然而,NUMA架构特性对整个系统的性能影响 非常严重,尤其是在虚拟机环境中的影响更为明显。如果运行在NUMA架构上的 虚拟机得到适当的管理和调度,比如在虚拟机环境下对NUMA系统进行访存优化, 系统性能将得到大幅提高。然而,正因为虚拟机的高度隔离性,运行在虚拟机 上的客户操作系统无法正确获取底层硬件信息,使得大部分的性能剖析工具在 虚拟机中无法正确运行,给虚拟机环境下NUMA访存优化带来了极大的困难。

发明内容

本发明所要解决的技术问题是,提供一种NUMA架构系统在虚拟机环境中 的访存优化方法及系统,以实现在虚拟机环境下对NUMA系统进行访存优化。 本发明是这样实现的:

NUMA架构系统在虚拟机环境中的访存优化方法,所述NUMA架构系统包括 若干通过高速互联网络连接在一起的节点;包括如下步骤:

步骤A:在虚拟机环境下通过编程处理器的非核部分性能监视单元实时检 测NUMA架构系统中每一节点的物理内存带宽压力,并判断各节点的物理内存带 宽压力是否超出预设水平;

步骤B:当某节点的物理内存带宽压力超出预设水平时,检测所述节点的 全局队列缓冲压力,并据此判断所述节点的本地访存压力与远端访存压力的大 小关系;

步骤C:当所述节点的远端访存压力大于本地访存压力时,将所述节点中 的非本地虚拟机的内存物理页迁移到其他节点;当所述节点的本地访存压力大 于远端访存压力时,检测第一预设时间内所述节点中各本地虚拟机导致二级缓 存失效的次数,并将导致二级缓存失效次数最少的本地虚拟机调度到其他节点。

进一步地,所述步骤A包括如下步骤:

步骤A1:在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监 视每一节点的内存控制器性能事件,据此获取每一节点内存控制器的带宽使用 情况及访存延迟情况;

步骤A2:根据所述节点内存控制器的带宽使用情况及访存延迟情况判断各 节点的物理内存带宽压力是否超出预设水平;如果所述节点内存控制器的带宽 使用率超出预设的第一阈值,且该节点内存控制器的访存延迟超出预设的第二 阈值,则判定所述节点的物理内存带宽压力超出预设水平,否则判定所述节点 的物理内存带宽压力未超出预设水平。

进一步地,所述步骤B包括如下步骤:

步骤B1:当某节点的物理内存带宽压力超出预设水平时,在虚拟机环境下 利用可编程的处理器的非核部分性能监视单元监视第二预设时间内该节点全局 队列中的三个缓冲队列满的周期数;所述三个缓冲队列满的周期数分别为:

全局队列中本地读请求队列满的周期数;

全局队列中本地写请求队列满的周期数;

全局队列中远端请求队列满的周期数;

步骤B2:当第二预设时间内全局队列中本地读请求队列满的周期数与全局 队列中本地写请求队列满的周期数之和大于全局队列中远端请求队列满的周期 数时,判定所述节点的本地访存压力大于远端访存压力;当第二预设时间内全 局队列中本地读请求队列满的周期数与全局队列中本地写请求队列满的周期数 之和小于全局队列中远端请求队列满的周期数时,判定所述节点的远端访存压 力大于本地访存压力。

进一步地,检测第一预设时间内所述节点中各本地虚拟机导致二级缓存失 效的次数的步骤包括:

在虚拟机管理器层通过编程处理器的核内部分性能监视单元监视所述节点 的每一物理CPU的二级缓存失效事件,并统计第一预设时间内所述节点的每一 物理CPU上由每一虚拟CPU导致的二级缓存失效次数;

将第一预设时间内每一虚拟CPU在各物理CPU上导致的二级缓存失效次数 分别汇总,得到第一预设时间内所述节点中的每一虚拟CPU导致的二级缓存失 效次数总数;

根据虚拟CPU与本地虚拟机的隶属关系确定第一预设时间内所述节点中各 本地虚拟机导致二级缓存失效的次数。

进一步地,将所述节点中的非本地虚拟机的内存物理页迁移到其他节点的 方法为:优先将所述非本地虚拟机的内存物理页迁移到该虚拟机所在的本地节 点,如果该虚拟机所在的本地节点内存不足,则将该非本地虚拟机的内存物理 页随机迁移到其他内存有剩余空间的节点。

进一步地,将所述本地虚拟机调度到其他节点的方法为:将该本地虚拟机 调度到带宽使用率最小的节点上。

NUMA架构系统在虚拟机环境中的访存优化系统,所述NUMA架构系统包括 若干通过高速互联网络连接在一起的节点;包括:

节点带宽压力检测模块,用于在虚拟机环境下通过编程处理器的非核部分 性能监视单元实时检测NUMA架构系统中每一节点的物理内存带宽压力,并判断 各节点的物理内存带宽压力是否超出预设水平;

节点全局队列缓冲压力检测模块,用于当某节点的物理内存带宽压力超出 预设水平时,检测所述节点的全局队列缓冲压力,并据此判断所述节点的本地 访存压力与远端访存压力的大小关系;

虚拟机调度模块,用于当所述节点的远端访存压力大于本地访存压力时, 将所述节点中的非本地虚拟机的内存物理页迁移到其他节点;当所述节点的本 地访存压力大于远端访存压力时,检测第一预设时间内所述节点中各本地虚拟 机导致二级缓存失效的次数,并将导致二级缓存失效次数最少的本地虚拟机调 度到其他节点。

进一步地,所述节点带宽压力检测模块包括:

内存控制器性能事件监视模块,用于在虚拟机环境下利用可编程的处理器 的非核部分性能监视单元监视每一节点的内存控制器性能事件,据此获取每一 节点内存控制器的带宽使用情况及访存延迟情况;

节点带宽压力判断模块,用于根据所述节点内存控制器的带宽使用情况及 访存延迟情况判断各节点的物理内存带宽压力是否超出预设水平;如果所述节 点内存控制器的带宽使用率超出预设的第一阈值,且该节点内存控制器的访存 延迟超出预设的第二阈值,则判定所述节点的物理内存带宽压力超出预设水平, 否则判定所述节点的物理内存带宽压力未超出预设水平。

进一步地,所述节点全局队列缓冲压力检测模块包括:

节点全局队列性能事件监视模块,用于当某节点的物理内存带宽压力超出 预设水平时,在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监 视第二预设时间内该节点全局队列中的三个缓冲队列满的周期数;所述三个缓 冲队列满的周期数分别为:

全局队列中本地读请求队列满的周期数;

全局队列中本地写请求队列满的周期数;

全局队列中远端请求队列满的周期数;

访存压力大小判断模块,用于当第二预设时间内全局队列中本地读请求队 列满的周期数与全局队列中本地写请求队列满的周期数之和大于全局队列中远 端请求队列满的周期数时,判定所述节点的本地访存压力大于远端访存压力; 当第二预设时间内全局队列中本地读请求队列满的周期数与全局队列中本地写 请求队列满的周期数之和小于全局队列中远端请求队列满的周期数时,判定所 述节点的远端访存压力大于本地访存压力。

进一步地,所述虚拟机调度模块包括:

二级缓存失效事件监视模块,用于在虚拟机管理器层通过编程处理器的核 内部分性能监视单元监视所述节点的每一物理CPU的二级缓存失效事件;

虚拟CPU失效次数统计模块,用于统计第一预设时间内所述节点的每一物 理CPU上由每一虚拟CPU导致的二级缓存失效次数,并将第一预设时间内每一 虚拟CPU在各物理CPU上导致的二级缓存失效次数分别汇总,得到第一预设时 间内所述节点中的每一虚拟CPU导致的二级缓存失效次数总数;

虚拟机确定模块,用于根据虚拟CPU与本地虚拟机的隶属关系确定第一预 设时间内所述节点中各本地虚拟机导致二级缓存失效的次数,并将导致二级缓 存失效次数最少的本地虚拟机确定为需要被调度的虚拟机。

进一步地,将所述节点中的非本地虚拟机的内存物理页迁移到其他节点时, 所述虚拟机调度模块优先将所述非本地虚拟机的内存物理页迁移到该虚拟机所 在的本地节点,如果该虚拟机所在的本地节点内存不足,则将该非本地虚拟机 随机调度到其他内存有剩余空间的节点。

进一步地,将所述本地虚拟机调度到其他节点时,所述虚拟机调度模块将 该本地虚拟机调度到带宽使用率最小的节点上。

与现有技术相比,本发明在虚拟机环境下利用可编程的处理器的非核部分 性能监视单元检测NUMA架构系统中每一节点的物理内存带宽压力,并据此对带 宽压力超出预设水平的节点进行虚拟机调度以调节该节点的物理内存带宽压力, 不需要通过客户操作系统获取底层硬件信息,无需在虚拟机中运行性能剖析工 具,使虚拟机环境下的NUMA访存优化更为容易实现。

附图说明

图1:本发明实施例提供的NUMA架构系统在虚拟机环境中的访存优化方法 流程示意图;

图2:本发明实施例提供的NUMA架构系统在虚拟机环境中的访存优化系统 结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。

如图1所示,本发明NUMA架构系统在虚拟机环境中的访存优化方法包括如 下步骤:

步骤A:在虚拟机(VMM)环境下通过编程处理器的非核部分性能监视单元 实时检测NUMA架构系统中每一节点的物理内存带宽压力,并判断各节点的物理 内存带宽压力是否超出预设水平。本发明依据Intel公司,将处理器分为核内 子系统(核内部分)和非核子系统(非核部分)两部分,其中核内子系统包括 处理器中的指令执行部件,其中有算术逻辑单元(Arithmetic and Logic Unit, ALU)、浮点运算单元(Floating Point Unit,FPU),一级缓存(L1 cache)和 二级缓存(L2 cache),非核部分子系统包括最后一级缓存(Last Level Cache, LLC)、高速互联总线控制器(QPI)、内存控制器(IMC)、全局队列(GQ)等。处 理器中还包括性能监视单元(Performance Monitoring Unit,PMU),用于监视 处理器内的性能事件,而性能监视单元包括核内(Core)部分和非核(Uncore) 部分,其中,核内部分性能监视单元用于监视处理器中的核内性能事件,如处 理器忙事件,而非核部分性能监视单元用于监视处理器中的非核性能事件,如 内存控制器性能事件等。节点的物理内存带宽压力可通过两个性能指标来表示, 一是内存带宽的使用大小,二是访存的延迟大小。因此,可通过编程处理器的 非核部分性能监视单元对各节点内存控制器性能事件进行监视,以检测各节点 的物理内存带宽压力。基于该原理,步骤A可包括如下步骤:

步骤A1:在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监 视每一节点的内存控制器性能事件,据此获取每一节点内存控制器的带宽使用 情况及访存延迟情况。

步骤A2:根据所述节点内存控制器的带宽使用情况及访存延迟情况判断各 节点的物理内存带宽压力是否超出预设水平;如果所述节点内存控制器的带宽 使用率超出预设的第一阈值,且该节点内存控制器的访存延迟超出预设的第二 阈值,则判定所述节点的物理内存带宽压力超出预设水平,否则判定所述节点 的物理内存带宽压力未超出预设水平。其中的第一阈值及第二阈值可根据经验 设置。

步骤B:当某节点的物理内存带宽压力超出预设水平时,检测所述节点的 全局队列缓冲压力,并据此判断所述节点的本地访存压力与远端访存压力的大 小关系。节点中的访存包括本地访存和远端访存,当某一节点的本地访存压力 过大或远端访存压力过大都可能导致该节点的物理内存带宽压力超出预设水平, 因此,在调节节点带宽压力时,有必要根据该节点的本地访存压力与远端访存 压力的大小采用不同的调节方案。本发明步骤B通过检测节点的全局队列缓冲 压力的方式来判断该节点的本地访存压力与远端访存压力的大小关系,具体包 括如下步骤:

步骤B1:当某节点的物理内存带宽压力超出预设水平时,在虚拟机环境下 利用可编程的处理器的非核部分性能监视单元监视第二预设时间内该节点全局 队列中的三个缓冲队列满的周期数;所述三个缓冲队列满的周期数分别为:

全局队列中本地读请求队列满的周期数;

全局队列中本地写请求队列满的周期数;

全局队列中远端请求队列满的周期数。

步骤B2:当第二预设时间内全局队列中本地读请求队列满的周期数与全局 队列中本地写请求队列满的周期数之和大于全局队列中远端请求队列满的周期 数时,判定所述节点的本地访存压力大于远端访存压力;当第二预设时间内全 局队列中本地读请求队列满的周期数与全局队列中本地写请求队列满的周期数 之和小于全局队列中远端请求队列满的周期数时,判定所述节点的远端访存压 力大于本地访存压力。

步骤C:当所述节点的远端访存压力大于本地访存压力时,将所述节点中 的非本地虚拟机的内存物理页迁移到其他节点;当所述节点的本地访存压力大 于远端访存压力时,检测第一预设时间内所述节点中各本地虚拟机导致二级缓 存失效的次数,并将导致二级缓存失效次数最少的本地虚拟机调度到其他节点。 当节点的远端访存压力大于本地访存压力时,表明需要对节点的远端访存压力 进行调节,因此,可优先将非本地虚拟机的内存物理页迁移到该虚拟机所在的 本地节点,如果该虚拟机所在的本地节点内存不足,则将该非本地虚拟机的内 存物理页随机迁移到其他内存有剩余空间的节点。如果节点的本地访存压力大 于远端访存压力,表明需要对节点的本地访存压力进行调节。对节点的本地访 存压力进行调节前需要确定需要被调度的虚拟机。分析处理器访内存的过程可 知,处理器核心访问内存时先访问一级缓存(L1 cache)然后访问二级缓存(L2  cache)如果一级缓存及二级缓存都访问失效,则访问LLC,如果LLC也访问失 效才会去访问内存,虽然LLC和IMC属于非核部分,但一级缓存及二级缓存属 于核内部分,我们可以通过监控核内二级缓存失效情况,大致判断出某一处理 器核访问内存的情况。基于该原理,可采用如下方法确定需要被调度的虚拟机:

在虚拟机管理器层通过编程处理器的核内部分性能监视单元监视所述节点 的每一物理CPU的二级缓存失效事件,并统计第一预设时间内所述节点的每一 物理CPU上由每一虚拟CPU导致的二级缓存失效次数。统计时,可为该节点中 的每一物理CPU建立一个元素个数为NUMA系统虚拟CPU总数的数组,各元素用 于分别表示各虚拟CPU在该物理CPU上导致的二级缓存失效次数,各元素的初 始值为0。然后,在虚拟机环境中通过可编程核内性能监视单元监视该节点的 每个物理CPU的二级缓存失效事件。监视过程中,当某物理CPU发生虚拟CPU 调度时,首先判断新调度到该物理CPU的虚拟CPU是否是原来运行在该物理CPU 上的虚拟CPU,如果是,则继续监视,如果不是,表明有新的虚拟CPU调度到 该物理CPU上,需要统计该新的虚拟CPU在该物理CPU上导致的二级缓存失效 次数,并将统计的次数累加到该物理CPU的数组中的相应元素中,然后将该核 内性能监视单元计数器清零,重新继续监视并计数。经过第一预设时间后,统 计第一预设时间内所述节点的每一物理CPU上由每一虚拟CPU导致的二级缓存 失效次数,并将第一预设时间内每一虚拟CPU在各物理CPU上导致的二级缓存 失效次数分别汇总,得到第一预设时间内所述节点中的每一虚拟CPU导致的二 级缓存失效次数总数。然后根据虚拟CPU与本地虚拟机的隶属关系确定第一预 设时间内所述节点中各本地虚拟机导致二级缓存失效的次数,导致二级缓存失 效次数最少的本地虚拟机就为需要被调度的虚拟机。确定了需要被调度的虚拟 机后,可将该虚拟机调度到带宽使用率最小的节点上,减轻当前节点的带宽压 力。

如图2所示,本发明还提供了一种NUMA架构系统在虚拟机环境中的访存优 化系统,NUMA架构系统包括若干通过高速互联网络连接在一起的节点,该访存 优化系统包括节点带宽压力检测模块1、节点全局队列缓冲压力检测模块2及 虚拟机调度模块3。其中:

节点带宽压力检测模块1用于在虚拟机环境下通过编程处理器的非核部分 性能监视单元实时检测NUMA架构系统中每一节点的物理内存带宽压力,并判断 各节点的物理内存带宽压力是否超出预设水平。节点全局队列缓冲压力检测模 块2用于当某节点的物理内存带宽压力超出预设水平时,检测所述节点的全局 队列缓冲压力,并据此判断所述节点的本地访存压力与远端访存压力的大小关 系。虚拟机调度模块3用于当所述节点的远端访存压力大于本地访存压力时, 将所述节点中的非本地虚拟机的内存物理页迁移到其他节点;当所述节点的本 地访存压力大于远端访存压力时,检测第一预设时间内所述节点中各本地虚拟 机导致二级缓存失效的次数,并将导致二级缓存失效次数最少的本地虚拟机调 度到其他节点。将所述节点中的非本地虚拟机的内存物理页迁移到其他节点时, 虚拟机调度模块3优先将所述非本地虚拟机的内存物理页迁移到该虚拟机所在 的本地节点,如果该虚拟机所在的本地节点内存不足,则将该非本地虚拟机的 内存物理页随机迁移到其他内存有剩余空间的节点。将导致二级缓存失效次数 最少的本地虚拟机调度到其他节点时,虚拟机调度模块3将该本地虚拟机调度 到带宽使用率最小的节点上。

节点带宽压力检测模块1可包括内存控制器性能事件监视模块及节点带宽 压力判断模块,其中:

内存控制器性能事件监视模块用于在虚拟机环境下利用可编程的处理器的 非核部分性能监视单元监视每一节点的内存控制器性能事件,据此获取每一节 点内存控制器的带宽使用情况及访存延迟情况。节点带宽压力判断模块用于根 据所述节点内存控制器的带宽使用情况及访存延迟情况判断各节点的物理内存 带宽压力是否超出预设水平;如果所述节点内存控制器的带宽使用率超出预设 的第一阈值,且该节点内存控制器的访存延迟超出预设的第二阈值,则判定所 述节点的物理内存带宽压力超出预设水平,否则判定所述节点的物理内存带宽 压力未超出预设水平。

节点全局队列缓冲压力检测模块2可包括节点全局队列性能事件监视模块 及访存压力大小判断模块。其中:

节点全局队列性能事件监视模块用于当某节点的物理内存带宽压力超出预 设水平时,在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监视 第二预设时间内该节点全局队列中的三个缓冲队列满的周期数;所述三个缓冲 队列满的周期数分别为全局队列中本地读请求队列满的周期数、全局队列中本 地写请求队列满的周期数、全局队列中远端请求队列满的周期数。访存压力大 小判断模块用于当第二预设时间内全局队列中本地读请求队列满的周期数与全 局队列中本地写请求队列满的周期数之和大于全局队列中远端请求队列满的周 期数时,判定所述节点的本地访存压力大于远端访存压力;当第二预设时间内 全局队列中本地读请求队列满的周期数与全局队列中本地写请求队列满的周期 数之和小于全局队列中远端请求队列满的周期数时,判定所述节点的远端访存 压力大于本地访存压力。

虚拟机调度模块3可包括二级缓存失效事件监视模块、虚拟CPU失效次数 统计模块及虚拟机确定模块。其中,二级缓存失效事件监视模块用于在虚拟机 管理器层通过编程处理器的核内部分性能监视单元监视所述节点的每一物理 CPU的二级缓存失效事件。虚拟CPU失效次数统计模块用于统计第一预设时间 内所述节点的每一物理CPU上由每一虚拟CPU导致的二级缓存失效次数,并将 第一预设时间内每一虚拟CPU在各物理CPU上导致的二级缓存失效次数分别汇 总,得到第一预设时间内所述节点中的每一虚拟CPU导致的二级缓存失效次数 总数。虚拟机确定模块用于根据虚拟CPU与本地虚拟机的隶属关系确定第一预 设时间内所述节点中各本地虚拟机导致二级缓存失效的次数,并将导致二级缓 存失效次数最少的本地虚拟机确定为需要被调度的虚拟机。

以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的 精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保 护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号