NUMA 非一致性内存访问

SMP(Symmetric Multi-Processing )

SMP技术就是对称多处理结构,这种结构的最大特点就是CPU共享所有资源,比如总线,内存,IO系统等等

NUMA 非一致性内存访问

NUMA架构设计图:

在NUMA中还有三个节点的概念:

  • 本地节点: 对于某个节点中的所有CPU,此节点称为本地节点。
  • 邻居节点:与本地节点相邻的节点称为邻居节点。
  • 远端节点:非本地节点或邻居节点的节点,称为远端节点。

CPU访问不同类型节点内存的速度是不相同的,访问本地节点的速度最快,访问远端节点的速度最慢,即访问速度与节点的距离有关,距离越远访问速度越慢,此距离称作Node Distance。正是因为有这个特点,所以我们的应用程序要尽量的减少不通CPU模块之间的交互,也就是说,如果你的应用程序能有方法固定在一个CPU模块里,那么你的应用的性能将会有很大的提升。

因此KVM也是一样,我们在CPU优化这块就是要让KVM绑定在指定的CPU上,这样减少跨CPU的交互使用,让KVM的性能提升。现在我们的服务器还有linux操作系统都是默认走NUMA模式。所以numa和cpu-pinning(cpu绑定)是密不可分的。

NFV对底层NFVI需支持将虚拟机的CPU和内存部署在同一个NUMA(Non Uniform Memory Access,非一致性内存访问)内,从而降低内存访问的时延 。

虚拟机NUMA亲和性:支持虚拟机numa亲和性策略,保证虚拟机vCPU、内存、直通网卡在同一NUMA节点,避免CPU访问远端内存导致业务时延大等问题

# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3
node 0 size: 8191 MB
node 0 free: 6435 MB
node 1 cpus: 4 5 6 7
node 1 size: 8192 MB
node 1 free: 6634 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10

# virsh capabilities
...
   <topology>
          <cells num='2'>
            <cell id='0'>
              <memory unit='KiB'>4193872</memory>
              <pages unit='KiB' size='4'>1048468</pages>
              <pages unit='KiB' size='2048'>0</pages>
              <distances>
                <sibling id='0' value='10'/>
                <sibling id='1' value='20'/>
              </distances>
              <cpus num='4'>
                <cpu id='0' socket_id='0' core_id='0' siblings='0'/>
                <cpu id='1' socket_id='0' core_id='1' siblings='1'/>
                <cpu id='2' socket_id='0' core_id='2' siblings='2'/>
                <cpu id='3' socket_id='0' core_id='3' siblings='3'/>
              </cpus>
            </cell>
            <cell id='1'>
              <memory unit='KiB'>4194304</memory>
              <pages unit='KiB' size='4'>1048576</pages>
              <pages unit='KiB' size='2048'>0</pages>
              <distances>
                <sibling id='0' value='20'/>
                <sibling id='1' value='10'/>
              </distances>
              <cpus num='4'>
                <cpu id='4' socket_id='1' core_id='0' siblings='4'/>
                <cpu id='5' socket_id='1' core_id='1' siblings='5'/>
                <cpu id='6' socket_id='1' core_id='2' siblings='6'/>
                <cpu id='7' socket_id='1' core_id='3' siblings='7'/>
              </cpus>
            </cell>
          </cells>
        </topology>
...

TOSCA NFVD (VNF Descriptor):

....
VDU1:
  capabilities:
    nfv_compute:
      properties:
        mem_size: 4096 MB
        num_cpus: 4
        numa_nodes:
          node0:
            id: 0
            vcpus: [0,1]
            mem_size: 1024 MB
          node1:
            id: 1
            vcpus: [2,3]
            mem_size: 3072 MB
...

原文发布于微信公众号 - 后端云(opnfv-tech)

原文发表时间:2017-07-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏琼东

.NET快速开发实践之应用IExtenderProvider实现对象与UI控件的绑定

         现在企业级的信息系统应用开发之中,数据层采用了ORM,解放了之前开发最大工作量的核对SQL语句,我到现在还曾经记得在2002年实医院管理信息系...

20960
来自专栏区块链

全球5500个WordPress网站感染了……

在将近5500个受感染的WordPress网站上发现了键盘记录器 将近5500个WordPress站点被恶意脚本所感染,这些脚本记录键盘敲击,有时还会使浏览器加...

176100
来自专栏Samego开发资源

第一次编写bat脚本

34840
来自专栏Linyb极客之路

IntelliJ IDEA 使用心得与常用快捷键

一.黑色主题 Darcula 眼睛舒服,最重要的是酷! 设置方式:FILE--Settings--Edit--Colors&Fonts--Scheme nam...

7930
来自专栏张戈的专栏

WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版

前几天在修复留言日期显示错误的问题时,突然觉得可以在这个位置集成一下访客信息,因为见到过不少博客的留言板都有了类似的功能。经过搜索、测试并筛选,最终选定了 Sh...

31650
来自专栏北京马哥教育

最通俗的 Python3 网络爬虫入门

网络爬虫,也叫网络蜘蛛(Web Spider)。它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接。比如:https:/...

12700
来自专栏DeveWork

WordPress 网站开发“微信小程序”实战(三)

本文是“WordPress 开发微信小程序”系列的第三篇,本文记录的是“DeveWork极客”小程序1.2 版本的开发要点。建议先看完第一篇、第二篇再来阅读本文...

277100
来自专栏数据之美

Shell 黑科技之匿名函数实现任务并行化

shell 作为一门系统级别胶水语言,学习成本低,用起来很方便,但是缺点也显而易见:性能问题一直为人锁诟病。所以 shell 也就多用在简单的系统管理等场合,数...

257100
来自专栏菩提树下的杨过

android 模拟器安装二三事

今天在测试一个手机版网站时,发现“微软的wp7”跟“苹果的iOS”对于<select>..</select>元素的触摸操作不太一样,wp7是全屏切换到一个上下滚...

387100
来自专栏顶级程序员

高效 MacBook 工作环境配置

工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了工具而工具,一切工具都是为了能快速准确的完成工作和学习任务而服务。 本文记录 MacBook 整...

77370

扫码关注云+社区

领取腾讯云代金券