KVM虚拟化技术的-NUMA技术和应用

2023-11-20

  NUMA技术是解决多CPU共同工作的技术方案,多CPU共同工作主要有3中架构:SMP:Symmetric Multi-Processor),非统一存储访问结构(NUMA:Non-Uniform Memory Access),以及海量并行处理结构(MPP:Massive Parallel Processing;
访问存储器可以分为两种:统一存储器访问(UMA)和非统一存储器访问(NUMA)。
1.SMP技术:
    SMP多个CPU通过一个总线访问存储器,SMP系统有事也被称为一致内存访问(UMA)结构体系;在SMP系统上,所有的cpu对共享内存控制器拥有相同的访问权限。cpu之间的访问这个共享资源的请求会导致拥塞。这个单独的内存控制器能够管理的内存大小也是有限的;
2.MPP模式:
    MPP提供了另外一种进行系统扩展的方式,它由多个SMP服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。其基本特征是由多个SMP服务器通过节点互联网络连接而成,每个节点只访问自己的本地资源(内存、存储等),是一种完全无共享(Share Nothing)结构,因而扩展能力最好,理论上其扩展无限制,目前的技术可实现512个节点互联,数千个CPU。目前业界对节点互联网络暂无标准,如 NCR的Bynet,IBM的SPSwitch,它们都采用了不同的内部实现机制。但节点互联网仅供MPP服务器内部使用,对用户而言是透明的。
3.NUMA技术
    NUMA模式是每个处理器有自己的存储器,每个处理也可以访问别的处理器的存储器;与UMA相比,UMA提供了一个集中的内存池(因此在一定数量的处理器之后无法扩展),NUMA架构将内存划分为相对于微处理器的本地和远程内存。
这里写图片描述
4.KVM虚拟机NUMA调优
NUMA架构每个处理器都可以访问自己的存储器和其他处理器的存储器,访问自己的存储器要比访问其他的存储器快的多,速度相差10-100倍,所以NUMA调优的目的就是让处理器尽量访问自己的存储器,以提高访问速度。

#安装 numactl
[root@node3 ~] yum install  numactl 
#安装后出现以下三个命令
#numactl   用于控制 进程与共享存储的 NUMA 技术机制
#numademo  
#numastat  提供了一个监测NUMA架构的工具


[root@node3 ~] # numactl --hardware    #共有2个node,各领取16个CPU和128G内存
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23 
node 0 size: 131037 MB
node 0 free: 3019 MB
node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
node 1 size: 131071 MB
node 1 free: 9799 MB
node distances:
node 0 1
 0: 10 20
 1: 20 10

[root@node3 ~] # numactl --cpubind=0 --membind=0 python param    #python在node0中执行

[root@node3 ~] # numactl --cpubind=1 --membind=1 java param     #java在node1中执行

[root@node3 ~] # numactl --interleave=all mongod -f /etc/mongod.conf    #分配所有的node供mongodb使用

[root@node3 ~]# numastat    #通过numastat命令可以查看numa状态
 node0 node1
 numa_hit 1775216830 6808979012    #使用本节点内存次数
 numa_miss 4091495 494235148       #计划使用本节点内存而被调度到其他节点次数
 numa_foreign 494235148 4091495    #计划使用其他节点内存而使用本地内存次数  
 interleave_hit 52909 53004        #交叉分配使用的内存中使用本节点的内存次数
 local_node 1775205816 6808927908  #在本节点运行的程序使用本节点内存次数  
 other_node 4102509 494286252      #在其他节点运行的程序使用本节点内存次数 


[root@node3 ~]# virsh list  --all
 Id    Name                           State
----------------------------------------------------
 17    centos7.0                      running
 20    centos7.2                      running

[root@node3 ~]# virsh numatune 20   #命令可以查看或者修改虚拟机的NUMA配置
numa_mode      : strict
numa_nodeset   : 

[root@node3 ~]# virsh vcpuinfo centos7.2 #查看虚拟机的VCPU调度信息
VCPU:           0   
CPU:            1   #vcpu 0 被调用到cpu1上 
State:          running   #使用状态
CPU time:       17.6s     #使用时间
CPU Affinity:   yyyy      可以使用的物理CPU内部的逻辑核 


[root@node3 ~]# virsh emulatorpin centos7.2 #查看虚拟机调用那些CPU
emulator: CPU Affinity
----------------------------------
       *: 0-7

[root@node3 ~]# virsh numatune centos7.2 #设置虚拟机CPU在部分物理CPU之间调度
numa_mode      : strict
numa_nodeset   : 

[root@node3 ~]# virsh emulatorpin centos7.2 4-7 --live 

[root@node3 ~]# virsh emulatorpin centos7.2
emulator: CPU Affinity
----------------------------------
       *: 4-7

[root@node3 ~]# virsh  dumpxml 2 |grep vcpu -C2 #查看配置看VCPU调度信息
  <memory unit='KiB'>4188160</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static' current='2'>4</vcpu>
  <cputune>
    <emulatorpin cpuset='4-7'/>

CPU绑定技术和原理:
CPU绑定实际是通过Libvirt通过CGroup来实现的,CGroup直接去绑定KVM虚拟机进程也可以。CGroup不仅可以绑定CPU,也可以绑定虚拟机磁盘,网络的资源控制;

#强制VCPU和物理CPU一对一的绑定
[root@node3 ~]# virsh vcpupin centos7.2 0 4     #绑定VCPU 0和物理CPU 4 

[root@node3 ~]# virsh vcpupin centos7.2 1 5 

[root@node3 ~]# virsh vcpuinfo  centos7.2 
VCPU:           0
CPU:            4
State:          running
CPU time:       17.9s
CPU Affinity:   ----y---

VCPU:           1
CPU:            5
State:          running
CPU time:       10.6s
CPU Affinity:   -----y--

[root@node3 ~]# virsh  dumpxml 2 |grep vcpu -C2  #查看配置文件信息
  <memory unit='KiB'>4188160</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static' current='2'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='4'/>
    <vcpupin vcpu='1' cpuset='5'/>
    <vcpupin vcpu='2' cpuset='6'/>
    <emulatorpin cpuset='4-7'/>
  </cputune>





参考:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_tuning_and_optimization_guide/chap-virtualization_tuning_optimization_guide-numa
http://docs.redhat.com
https://docs.openstack.org/queens/
http://cloud.centos.org
https://www.centos.org/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KVM虚拟化技术的-NUMA技术和应用 的相关文章

  • [VMware]解决"已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作"的问题

    创建好空的虚拟机后使用ISO镜像文件后重启进行安装系统 出现下图问题 原因 是BIOS未开启虚拟化技术 之前个人用的电脑是默认开启了 现在换到公司联想的电脑上安装虚拟机发现了这个问题 解决方式 虚拟化技术目前主要依赖于电脑的CPU型号及BI
  • docker: Error response from daemon: driver failed programming external connectivity on endpoint lamp

    Docker容器做端口映射报错 docker Error response from daemon driver failed programming external connectivity on endpoint lamp3 46b7
  • 【云计算与大数据技术】虚拟化简介及虚拟化的分类讲解(图文解释 超详细)

    一 虚拟化简介 1 什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是在真实的 独立的物理硬件基础上运行 这种以优化资源 简化软件的重新配置过程为目的的解决方案就是虚拟化技术 虚拟化架构就是在一个物理硬件机器上同时运行多个不同应用的独立
  • 42 最佳实践-性能最佳实践-halt-polling

    文章目录 42 最佳实践 性能最佳实践 halt polling 42 1 概述 42 2 操作指导 42 最佳实践 性能最佳实践 halt polling 42 1 概述 在计算资源充足的情况下 为使虚拟机获得接近物理机的性能 可以使用h
  • 一名系统研究者的攀登之路-陈海波-

    陈海波 原复旦大学Pa ra lle l Proc e s s ing Institute实验室的牛人 在sosp EuroSys等世界最顶级会议上发表过论文的大牛人 不过 现在被上交软件学院给挖走了 哈哈 1 引言 写好计算机系统领域的研
  • virt与virsh常用命令

    前提 客户机虚拟机上配置qemu guest agent 并对guest的xml配置文件做一些修改 那么就可以使用很多特有的命令 对虚拟机进行配置 例如 修改虚拟机密码 root localhost virsh set user passw
  • NSX-T 架构-(1)

    IT世界的变化以应用为导向 大抵可以分为Iphone出现和容器的大规模应用两次大的变革时间点 残喘十几年的物理机加各种功能性盒子组成的IT系统慢慢分崩离析 虚拟化 容器化和云化慢慢成为现代化应用新的栖身之所 而连通这一切的网络 也随之变化
  • VMware vSphere Hypervisor 6 (ESXi) 免费许可证使用限制

    公司在虚拟化方面使用的是hyper v方案 但是windows的不稳定让人头疼 更新补丁和死机问题都需要定期重启 对于虚拟化平台简直就是灾难 最近在查看关于EXSi6的免费使用限制 没看到太多中文资料 在vmware论坛的Hyperviso
  • VMware14创建虚拟机(centos7)

    新建虚拟机的前提是需要准备好虚拟机的镜像 我这里已经准备好的了 打开VMware 新建虚拟机 然后 选择自定义 也可以选择典型安装 下一步 下一步 下一步 下一步 下一步 下一步 在这里介绍一下创建虚拟机网络连接的几种网络类型及对应的功能
  • 27 KVM管理系统资源-管理虚拟CPU份额

    文章目录 27 KVM管理系统资源 管理虚拟CPU份额 27 1 概述 27 2 操作步骤 27 KVM管理系统资源 管理虚拟CPU份额 27 1 概述 虚拟化环境下 同一主机上的多个虚拟机竞争使用物理CPU 为了防止某些虚拟机占用过多的物
  • 虚拟机硬盘直通挽救黑群晖数据

    之前用一台一体机做了一个黑群晖 放了一些1080P和4K的高清影片进去 数据并没有特别重要 但是由于多次意外停电 我又把黑群晖设置为来电自动重启 估计是硬盘受了一些影响 导致黑群晖无法被群晖助手搜索到 黑群晖变砖 我这个黑群晖是1个U盘作为
  • qemu创建linux虚拟机(亲测有效,virt-manger方式)

    1 网桥的搭建 Bridge方式原理 Bridge方式即虚拟网桥的网络连接方式 是客户机和子网里面的机器能够互相通信 可以使虚拟机成为网络中具有独立IP的主机 桥接网络 也叫物理设备共享 被用作把一个物理设备复制到一台虚拟机 网桥多用作高级
  • Android Studio中Intel HAXM的那些坑

    最近用过两台电脑折腾Android Studio 都是windows的系统 不知道为什么连着踩了两个坑 第一台我结束了qemu system i386 exe这个倒霉的进程 导致我开启模拟器的时候一直提示我没有安装Intel HAXM 没办
  • VMware ESXi网络配置

    目录 一 ESXi网络配置方法 二 虚拟机网络配置方法 一 ESXi网络配置方法 1 搭建完成ESXi平台后 即可为它设置系统IP 如下图 在此界面按F2 输入用户名密码后进入配置界面 2 左侧菜单栏可以看到 Configure Manag
  • vSphere Client(Vcenter)上传ISO镜像

    不少新手在ESXi上安装好虚拟机后 都要寻找浏览器的ios镜像 但同学们会在这里卡顿 找不到上传ios的路径 今天就来讲一讲 上传的问题 一 方法一 我初学时 一样在这里卡顿 找不到上传的路径 在网上搜索 确实找到了一种上传的方法 在这里转
  • VMware Workstation无法提供该虚拟机所需的所有图形功能

    报错信息 VMware Workstation无法提供该虚拟机所需的所有图形功能 在该虚拟机引导后 图形硬件 图形驱动程序或Vware软件版本可能已发生变化 该虚拟机将继续运行 但在关闭该虚拟机之前 某些图形操作可能会出现不可预见的行为 原
  • NVIDIA vGPU License服务器安装过程

    在vGPU场景下 NVIDIA vGPU License Server 是一个很重要的组件 一个vGPU虚拟机没有正常获取License的时候 功能会受到很大限制 因此正式生产环境或者POC测试环境中都建议搭建 在之前的文章介绍过VMwar
  • kvm内存管理

    qemu kvm 进程很像一个普通的linux程序 它通过通常的malloc和mmap调用来申请内存 如果一个客户系统想使用1G物理内存 qemu kvm将会做一个malloc 1 lt lt 30 调用 在主机上申请1G的虚拟地址 然而
  • 半虚拟化和全虚拟化的区别

    全虚拟化 Full virtualization 也称为原始虚拟化技术 是另一种虚拟化方法 该模型使用虚拟机协调客户 操作系统和原始硬件 见图2 这里 协调 是一个关键词 因为VMM在客户操作系统和裸硬件之间用于工作协调 一些受保护的指令必
  • Windows Server 2019 会话远程桌面-快速部署(RemoteApp)

    目录 一 实验要求 二 搭建远程桌面服务RDS 三 需要软件安装 1 安装Firefox 浏览器 2 安装一款视频播放器 3 安装WPS office 套件 四 发布应用 1 发布Firefox 浏览器 2 发布一款视频播放器 3 发布WP

随机推荐

  • CUBLAS变量解释(1)

    变量类型 cublasOperation t 解释 该类型表明输入的密集矩阵的形式 其值有 CUBLAS OP N 非转置 CUBLAS OP T 转置 CUBLAS OP C 共轭转置 该函数对应于BLAS FORTRAN版 的变量字符
  • C++文本文件,二进制文件,write(),read(),map容器,seekg(),seekp(),tellg(),tellp()函数

    include
  • 百度富文本编辑器UEditor配置及功能实现详解

    当前功能基于PHP 其它语言流程大抵相同 大概流程 1 将docx文件上传到服务器中 2 使用PHPoffice PHPword实现将word转换为HTML 3 将HTML代码返回并赋值到编辑器中 1 编辑器配置修改 1 1 新增上传wor
  • ubuntu下安装Navicat

    Step1 打开Navicat官网 下载Navicat 网址 http www navicat com en download download html Navicat for MySQL 10 0 11 Download Downloa
  • SQL中IN、NOT IN的使用,以及NULL值的比较

    SQL中IN以及NOT IN的使用 以及NULL值的比较 在LeetCode写 608 树节点 题时 发现使用NOT IN在比较值为空的列时存在问题 记录在此 IN 和 NOT IN 在SQL中是用来指定一个列应该与其匹配的值的列表 IN
  • 【论文阅读】learning with noisy correspondence for cross-modal matching ------ 跨模态匹配,噪声对应

    注意 本博客非逐字逐句翻译论文 是作者阅读论文后根据自己的理解所写 预知论文详情 请参阅论文原文 论文标题 Learning with Noisy Correspondence for Cross modal Matching 作者 Zhe
  • 信号与系统3——傅里叶描述

    信号与系统3 傅里叶描述 1 复正弦信号和线性时不变系统的频率相应 1 频率响应Frequency response 2 离散LTI系统的频率响应Frequency response of Discrete time LTI system
  • qml程序如何启动

    1 qml主界面是Window或者是ApplicationWindow 在main cpp中可以使用 QQmlApplicationEngine engine engine load main qml 2 qml中的主界面是Rectangl
  • MSP430F5529库函数——模数转换模块(ADC12)软件触发

    需提前观看 MSP430F5529库函数学习 串口 目录 代码 ADC初始化部分 引脚复位 ADC12 A init 函数声明 baseAddress sampleHoldSignalSourceSelect clockSourceSele
  • 一种简单的计算item相似度算法

    计算item之间相似度是个有意义的工作 比如词的相似度就有很多应用场景 词相似度就有很多做法 工业上现在用得最多的可能是word2vec了 还有些算语义相似度的偏学术的办法 这里介绍一种比较简单可行的思路 不只是算词相似度 其他类型也可以
  • C语言深入学习--checklist4:宏、枚举、switch

    宏 1 宏的本质是什么 函数 语句 类型定义 或者其它 预编译器的文本替换 1 你知道语言设计者为什么设计宏吗 这些原因目前是否成立 在 C程序中 可以用宏代码提高执行效率 宏代码本身不是函数 但使用起来象函数 预处理器用复制宏代码的方式代
  • 频率与补偿(下)

    该章节为频率与补偿 下 本文选自Research on Damping Factor Control Frequency Compensation 和Research on Multistage Amplifier Frequency Co
  • 采用ATL模型代替lib dll 的调用

    转载请标明是引用于 http blog csdn net chenyujing1234 例子代码 为WCE SDK下的例子 转为win32 自己移植 http www rayfile com zh cn files c638241c df8
  • slabinfo解读

    文件 proc slabinfo统计slab分配器相关信息 如 cat proc slabinfo slabinfo version 1 1 kmem cache 65 70 108 2 2 1 ip fib hash 10 112 32
  • 什么是批处理?

    什么是批处理 当需要向数据库中插入大批量数据时 在批处理之前 要执行100条sql 就只需100此打开连接关闭连接和网络传输 批处理过程 将大量的SQL打包成一个批次 发送给服务器 服务器接收数据 打开批 一次执行批里的sql 这样减少与数
  • ELM数据处理和调参经历 调参方法

    After I build the ELM model class I should find the best result for my data The most important thing to do is to process
  • Python 数据分析——Matplotlib相关知识

    Python 数据分析 Matplotlib相关知识 第五章 Matplotlib相关知识 样式 文章目录 Python 数据分析 Matplotlib相关知识 前言 一 matplotlib的绘图样式 style 1 matplotlib
  • 淘宝镜像使用方法

    淘宝镜像使用方法 方法一 临时使用 npm registry https registry npm taobao org install 依赖包 上面语句是临时使用淘宝镜像安装 依赖包 方法二 永久使用 npm config set reg
  • 啥是Redis的缓存穿透、缓存击穿和缓存雪崩

    Redis缓存穿透 缓存击穿和缓存雪崩都是缓存机制中的一些问题 具体解释如下 缓存穿透 Cache Penetration 指查询一个不存在的数据 由于缓存中没有数据 所以这个查询请求会直接穿过缓存层 到达数据库层 造成了数据库的压力 攻击
  • KVM虚拟化技术的-NUMA技术和应用

    NUMA技术是解决多CPU共同工作的技术方案 多CPU共同工作主要有3中架构 SMP Symmetric Multi Processor 非统一存储访问结构 NUMA Non Uniform Memory Access 以及海量并行处理结构