云计算基础 -NUMA

UMA

UMA中文翻译叫:一致性内存访问

多个CPU通过同一根前端总线(FSB)来访问内存(所有的内存访问都需要通过北桥芯片来完成),若多个CPU访问内存的不同内存单元还是相同内存单元,同一时刻,只有一个CPU能够访问内存

随着CPU内核越来越多,性能越来越强,现在已经有双路、四路的服务器,若是UMA架构的话,前端总线很容易造成瓶颈

NUMA

NUMA中文翻译:非一致性内存访问

NUMA解决了UMA架构所有CPU同时访问内存时FSB性能瓶颈的问题

在NUMA出现之前,所有的CPU Core都是通过共享一个北桥芯片来读取内存,随着CPU的发展,CPU频率越来越快,核心越来越多,北桥在响应时间上的性能瓶颈也越来越明显。

为了解决前端总线性能瓶颈的问题,于是出现了NUMA架构

在NUMA这种架构下,不同的内存器件和CPU核心从属不同的NODE(节点),每个NODE都有自己集成的内存控制器(IMC),在NUMA内部,使用IMC Bus进行不同核心间的通信,不同的Node间通过QPI(快速互联通道)进行通信

一般来说,一个内存插槽对应一个Node,需要注意的一个特点时,QPI的延迟要高于IMC Bus,也就是说,CPU访问内存有了远近之别

同一NUMA NODE内的内存访问叫本机访问,不同NODE访问叫远地访问

每一个CPU(节点)都有自己的PCIE设备(本地IO资源),和内存相似,远地访问PCIE设备相对访问本地PCIE设备存在延时

如下图,是超微某双路主板的逻辑图,可以看到,两颗CPU都有自己可以本地访问的内存,远地内存访问需要经过CPU之间的QPI通道,每颗CPU也有自己的PCIE设备等等

NUMA在云平台(虚拟机上)的应用

虚拟机NUMA就是把QEMU模拟出来的虚拟节点,绑定在某颗物理CPU上,对应的内存同样绑定在该CPU的本地内存,使其与物理架构相对应,在物理上也尽可能地使用CPU访问本地内存,这样我们就可以认为虚拟机能够识别服务器NUMA拓扑

具体优化方式如下

1. vCPU数如果比一颗物理CPU核数少,那么这个虚拟节点就会绑定在一颗物理CPU上

如:服务器双路,每颗物理CPU为8核8线程,创建一台虚拟机,虚拟机分配的vCPU是4颗,则这台虚拟机的虚拟节点就会绑定在CPU0或CPU1上

2. vCPU数如果比一颗物理CPU核数多,那么就会分开,然后绑定在多个物理CPU上

如:服务器双路,每颗物理CPU为8核8线程,创建一台虚拟机,虚拟机分配的vCPU是12颗,那么这个虚拟机的虚拟节点就会分开,分别绑在两颗物理CPU上

3. 如果单颗物理CPU超配或者内存不足(NUMA Node内的内存不足了)了那么就需要进行负载平衡,平衡过程中会进行CPU之间的负载均衡,这时会把虚拟节点迁移到另一颗物理CPU上进行绑定,并且对应的内存也需要跟着迁移,保证之前的本地内存还是本地内存。(导致NUMA资源碎片的原因:虚拟机开关机,新建删除虚拟机等)

如:一台服务器开启了10台虚拟机,有可能这10台虚拟机所使用的CPU和内存资源都是同一颗物理CPU提供的,此时该CPU若计算性能不足,或该CPU的本地内存占用过高,那么此时就需要将该CPU上的部分虚拟机移动到这台服务器上的另一颗CPU上去运行(同一台服务器CPU之间的负载均衡),即:将虚拟节点迁移到另一颗CPU上去绑定,并且对应的内存也需要跟着迁移,这样就能保证虚拟节点切换绑定之后,依旧可以访问本地内存,从而保证虚拟机性能

4. 通过优化调度算法,使虚拟节点的NUMA绑定都是保持性能最佳的状态

虚拟机如何拆为几个虚拟节点放置

对于虚拟机如何拆为几个虚拟节点放置(即:虚拟机要配置几个插槽),这里要考虑:

1. 虚拟机有几个虚拟节点:透传NUMA架构给虚拟机后,各个虚拟节点允许放到不同的物理节点上去(虚拟机内部自己可以感知)

物理NUMA架构与QEMU模拟出来的虚拟节点进行绑定,虚拟节点可以同时绑定在多颗CPU上

2. 虚拟机一个虚拟节点的vcpu个数是多少:对于每一个虚拟节点,那么还需要尽量放到最小范围的物理节点调用。

不能把物理CPU的节点数配置的过多,否则过多的调用会导致更多的性能开销

比如有一台4路服务器,每颗物理CPU的核心数为8核,此时需要新建一台vCPU数为12的虚拟机,此时该虚拟机最佳分配vCPU分配为2*6,以保证虚拟节点尽量放到最小的物理节点调用,不能分配为3*4或4*3,因为这样会把虚拟节点调度的范围变大了就会增加物理机的性能开销

如果物理CPU数大于12,vCPU分配应满足最小范围物理节点调用原则(最小插槽数),分配为1*12

注意:若需要透传NUMA拓扑给虚拟机,则该虚拟机需安装性能优化工具,且配置的CPU总核数大于8核(深信服HCI)

平衡

主要是如果一个物理节点的CPU或者内存超配的情况下就会考虑迁移平衡,平衡包括CPU平衡核内存的平衡,CPU平衡是通过cGroup来实现,但一个调度单元的vCPU线程迁移到另一个物理节点的时候,那么对应的内存也需要移动过来,保证之前的本地内存还是本地内存,这里通过内核接口实现内存迁移,迁移每256M物理内存需要2s(深信服)

NUMA的适用场景

1. 内存访问旺盛的业务,NUMA能大幅度提升性能,如果需要大量吃内存的数据库服务(Oracle、SQL、Server),编译服务等,内存访问频繁的场景,开启NUMA,计算性能提高7%~30%

2. CPU需求密集的小应用,开启NUMA会影响一些性能,虽然造成的损失不足以影响业务员,所以大部分应用无需考虑该问题(NUMA不适合应用频繁访问CPU的场景)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/392336.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vuex核心知识整理

目录 1 搭建vuex环境 2 求和案例 3 getters 配置项 4 mapState 和 mapGetters 5 mapMutations 和 mapActions 6 Vuex 模块化 1 搭建vuex环境 vuex工作原理图(摘自官网) 什么时候使用Vuex: 1.当多个组件依赖于统一状态 2.来自不同组件…

2.15日学习打卡----初学Zookeeper(二)

2.15日学习打卡 目录: 2.15日学习打卡一. Zookeeper部署运行伪集群安装集群安装服务管理 二. Zookeeper系统模型数据模型节点特性客户端命令行节点数据信息Watcher监听机制权限控制 ACL 三. 原生api操作Zookeeper四. zkclient库操作Zookeeper五. Apache Curator操作Zookeeper六…

不同的AI修改同一篇文章标题

提问AI 我写了一篇文章,请帮我把标题重新改一下:“比较不同AI分析同一个错误代码及给出解决方案的能力(结果出我意料)” 这篇文章的原地址为:https://blog.csdn.net/snans/article/details/136132211 答案对比结果&am…

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?<= , (?= , (?<! , (?!

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?< , (? , (?<! , (?! 有好多种称呼 (?< , (? , (?<! , (?! 有好多种称呼 , 我称为: 左限定, 右限定, 左否定, 右否定 (?<左限定)    (?右限定)(?<!左否定)    (?!右限定) 再…

Linux|centos7下的编译|ffmpeg的二进制安装

Windows版本的ffmpeg&#xff1a; ###注意&#xff0c;高版本可能必须要windows10以及以上才支持&#xff0c;win7估计是用不了的 下载地址&#xff1a;Builds - CODEX FFMPEG gyan.dev 或者这个下载地址&#xff1a;https://github.com/BtbN/FFmpeg-Builds/releases 这两个…

C++面试宝典第28题:寻找丢失的数字

题目 给定一个包含n个整数的数组nums,其中nums[i]在区间[1, n]内。请找出所有在[1, n]范围内,但没有出现在nums中的数字,并以数组的形式返回结果。 示例1: 输入:nums = [4, 3, 2, 7, 8, 2, 3, 1] 输出:[5, 6] 示例2: 输入:nums = [1, 1] 输出:[2] 解析 初看这道题,…

基于飞腾ARM+FPGA国产化计算模块联合解决方案

联合解决方案概述 随着特殊领域电子信息系统对自主创新需求的日益提升&#xff0c;需不断开展国产抗恶劣环境计算整机及模块产 品的研制和升级。特殊领域电子信息系统的自主创新&#xff0c;是指依靠自身技术手段和安全机制&#xff0c;实现信息系统从硬 件到软件的自主研发…

阿里云香港服务器详解_CN2线路测试_BGP多线精品测试

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品&#xff0c;中国电信CN2高速网络高质量、大规格BGP带宽&#xff0c;运营商精品公网直连中国内地&#xff0c;时延更低&#xff0c;优化海外回中国内地流量的公网线路&#xff0c;可以提高国际业务访问质量。阿里云服务…

【python】网络爬虫与信息提取--正则表达式

一、正则表达式 正则表达式是用来简洁表达一组字符串的表达式。是通用的字符串表达框架&#xff0c;简洁表达一组字符串的表达式&#xff0c;针对字符串表达“简洁”和“特征”思想的工具&#xff0c;判断某字符串的特征归属。 用处&#xff1a;表达文本类型的特征&#xff1b;…

【JavaEE】_HTTP请求报头header

目录 1. Host 2. Content-Length与Content-Type 2.1 Content-Length 2.2 Content-Type 3. User-Agent&#xff08;UA&#xff09; 4. Referer 5. Cookie header的整体格式是“键值对”结构&#xff0c;一行是一个键值对&#xff0c;这些键值对都是HTTP定义好的、有特殊含…

【Leetcode刷题笔记】27. 移除元素

原题链接 Leetcode 27. 移除元素 题目 给你一个数组 nums 和一个值 val&#xff0c;你需要原地移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。…

算法练习-赎金信(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;哈希表 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨…

C#,整数转为短字符串(Short string)的加解密算法与源代码

1 整数转为短字符串的应用 网站生成的动态 URL 往往以内容序列号id为标识与参数&#xff0c;比如&#xff1a; http://www.jerry.com/tom.aspx?id1 使用 Web Rewrite&#xff0c;可以实现网页静态化&#xff0c;称为&#xff1a; http://www.jerry.com/content/1.html 对…

FlashMeeting(基于FFmpeg+openCV)视频语音通讯系统

Web端体验地址&#xff1a;https://download.csdn.net/download/XiBuQiuChong/88805337 客户端下载地址&#xff1a;https://download.csdn.net/download/XiBuQiuChong/88805337 FlashMeeting(基于FFmpegopenCV)是一整套先进的以FFmpegopenCV技术为基础的视频语音通讯系统。利…

数据库设计、JDBC、数据库连接池

数据库设计 数据库设计概念 数据库设计就是根据业务 系统的具体需求&#xff0c;结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。建立数据库中的表结构以及表与表之间的关联关系的过程。有哪些表?表里有哪些字段?表和表之间有什么关系? 数据库设计的步骤…

Java并发基础:ConcurrentSkipListSet全面解析!

内容概要 ConcurrentSkipListSet类在多线程环境下&#xff0c;它能够轻松应对大量的插入、删除和查找操作&#xff0c;同时保持数据的完整性和一致性&#xff0c;其内部基于跳表数据结构的实现&#xff0c;确保了即使在处理大规模数据时&#xff0c;也能具有出色的性能表现。 …

基于微信小程序的健身房私教预约系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

类的构造方法

在类中&#xff0c;出成员方法外&#xff0c;还存在一种特殊类型的方法&#xff0c;那就是构造方法。构造方法是一个与类同名的方法&#xff0c;对象的创建就是通过构造方法完成的。每个类实例化一个对象时&#xff0c;类都会自动调用构造方法。 构造方法的特点&#xff1a; 构…

文件上传漏洞--Upload-labs--Pass01--前端绕过

一、前端绕过原理 通俗解释&#xff0c;我们将写有恶意代码的php后缀文件上传到网页&#xff0c;网页中的javascript代码会先对文件的后缀名进行检测&#xff0c;若检测到上传文件的后缀名为非法&#xff0c;则会进行alert警告。若想上传php后缀的文件&#xff0c;就要想办法对…

Acwing---877. 扩展欧几里得算法

扩展欧几里得算法 1.题目2.基本思想3.代码实现 1.题目 给定 n n n 对正整数 a i ai ai, b i bi bi&#xff0c;对于每对数&#xff0c;求出一组 x i xi xi, y i yi yi&#xff0c;使其满足 a i x i b i y i g c d ( a i , b i ) aixibiyigcd(ai,bi) aixibiyigcd(ai,bi)…