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

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

【发明内容】

[0003]本发明所要解决的技术问题是,提供一种NUMA架构系统在虚拟机环境中的访存优化方法及系统,以实现在虚拟机环境下对NUMA系统进行访存优化。本发明是这样实现的:
[0004]NUMA架构系统在虚拟机环境中的访存优化方法,所述NUMA架构系统包括若干通过高速互联网络连接在一起的节点;包括如下步骤:
[0005]步骤A:在虚拟机环境下通过编程处理器的非核部分性能监视单元实时检测NUMA架构系统中每一节点的物理内存带宽压力,并判断各节点的物理内存带宽压力是否超出预设水平;
[0006]步骤B:当某节点的物理内存带宽压力超出预设水平时,检测所述节点的全局队列缓冲压力,并据此判断所述节点的本地访存压力与远端访存压力的大小关系;
[0007]步骤C:当所述节点的远端访存压力大于本地访存压力时,将所述节点中的非本地虚拟机的内存物理页迀移到其他节点;当所述节点的本地访存压力大于远端访存压力时,检测第一预设时间内所述节点中各本地虚拟机导致二级缓存失效的次数,并将导致二级缓存失效次数最少的本地虚拟机调度到其他节点。
[0008]进一步地,所述步骤A包括如下步骤:
[0009]步骤Al:在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监视每一节点的内存控制器性能事件,据此获取每一节点内存控制器的带宽使用情况及访存延迟情况;
[0010]步骤A2:根据所述节点内存控制器的带宽使用情况及访存延迟情况判断各节点的物理内存带宽压力是否超出预设水平;如果所述节点内存控制器的带宽使用率超出预设的第一阈值,且该节点内存控制器的访存延迟超出预设的第二阈值,则判定所述节点的物理内存带宽压力超出预设水平,否则判定所述节点的物理内存带宽压力未超出预设水平。
[0011]进一步地,所述步骤B包括如下步骤:
[0012]步骤B1:当某节点的物理内存带宽压力超出预设水平时,在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监视第二预设时间内该节点全局队列中的三个缓冲队列满的周期数;所述三个缓冲队列满的周期数分别为:
[0013]全局队列中本地读请求队列满的周期数;
[0014]全局队列中本地写请求队列满的周期数;
[0015]全局队列中远端请求队列满的周期数;
[0016]步骤B2:当第二预设时间内全局队列中本地读请求队列满的周期数与全局队列中本地写请求队列满的周期数之和大于全局队列中远端请求队列满的周期数时,判定所述节点的本地访存压力大于远端访存压力;当第二预设时间内全局队列中本地读请求队列满的周期数与全局队列中本地写请求队列满的周期数之和小于全局队列中远端请求队列满的周期数时,判定所述节点的远端访存压力大于本地访存压力。
[0017]进一步地,检测第一预设时间内所述节点中各本地虚拟机导致二级缓存失效的次数的步骤包括:
[0018]在虚拟机管理器层通过编程处理器的核内部分性能监视单元监视所述节点的每一物理CPU的二级缓存失效事件,并统计第一预设时间内所述节点的每一物理CPU上由每一虚拟CPU导致的二级缓存失效次数;
[0019]将第一预设时间内每一虚拟CPU在各物理CPU上导致的二级缓存失效次数分别汇总,得到第一预设时间内所述节点中的每一虚拟CPU导致的二级缓存失效次数总数;
[0020]根据虚拟CPU与本地虚拟机的隶属关系确定第一预设时间内所述节点中各本地虚拟机导致二级缓存失效的次数。
[0021]进一步地,将所述节点中的非本地虚拟机的内存物理页迀移到其他节点的方法为:优先将所述非本地虚拟机的内存物理页迀移到该虚拟机所在的本地节点,如果该虚拟机所在的本地节点内存不足,则将该非本地虚拟机的内存物理页随机迀移到其他内存有剩余空间的节点。
[0022]进一步地,将所述本地虚拟机调度到其他节点的方法为:将该本地虚拟机调度到带宽使用率最小的节点上。
[0023]NUMA架构系统在虚拟机环境中的访存优化系统,所述NUMA架构系统包括若干通过高速互联网络连接在一起的节点;包括:
[0024]节点带宽压力检测模块,用于在虚拟机环境下通过编程处理器的非核部分性能监视单元实时检测NUMA架构系统中每一节点的物理内存带宽压力,并判断各节点的物理内存带宽压力是否超出预设水平;
[0025]节点全局队列缓冲压力检测模块,用于当某节点的物理内存带宽压力超出预设水平时,检测所述节点的全局队列缓冲压力,并据此判断所述节点的本地访存压力与远端访存压力的大小关系;
[0026]虚拟机调度模块,用于当所述节点的远端访存压力大于本地访存压力时,将所述节点中的非本地虚拟机的内存物理页迀移到其他节点;当所述节点的本地访存压力大于远端访存压力时,检测第一预设时间内所述节点中各本地虚拟机导致二级缓存失效的次数,并将导致二级缓存失效次数最少的本地虚拟机调度到其他节点。
[0027]进一步地,所述节点带宽压力检测模块包括:
[0028]内存控制器性能事件监视模块,用于在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监视每一节点的内存控制器性能事件,据此获取每一节点内存控制器的带宽使用情况及访存延迟情况;
[0029]节点带宽压力判断模块,用于根据所述节点内存控制器的带宽使用情况及访存延迟情况判断各节点的物理内存带宽压力是否超出预设水平;如果所述节点内存控制器的带宽使用率超出预设的第一阈值,且该节点内存控制器的访存延迟超出预设的第二阈值,则判定所述节点的物理内存带宽压力超出预设水平,否则判定所述节点的物理内存带宽压力未超出预设水平。
[0030]进一步地,所述节点全局队列缓冲压力检测模块包括:
[0031]节点全局队列性能事件监视模块,用于当某节点的物理内存带宽压力超出预设水平时,在虚拟机环境下利用可编程的处理器的非核部分性能监视单元监视第二预设时间内该节点全局队列中的三个缓冲队列满的周期数;所述三个缓冲队列满的周期数分别为:
[0032]全局队列中本地读请求队列满的周期数;
[0033]全局队列中本地写请求队列满的周期数;
[0034]全局
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1