首页 > 编程语言 >使用libvirt绑定numa node

使用libvirt绑定numa node

时间:2024-05-07 10:46:32浏览次数:22  
标签:node -- 绑定 VM libvirt numa cpu

初学libvirt,感觉还挺方便的。它能够像daemon一样运行一个稳定的VM,相比直接用qemu命令行是方便多了。这里记录一下我如何绑定numa node。

不知道能不能直接在创建虚拟机的时候绑定numa,我是在xml中设置的。

安装libvirt,略去。在host上创建一个网桥,libvirt以它上网,我这里命名为virbr0.

首先创建一个vm。

sudo virt-install \
  --connect qemu:///system \
  --name myvm \
  --memory 8192 \
  --vcpus 4 \
  --disk path=../AnolisOS-8.9-x86_64-RHCK.qcow2,size=2048,format=qcow2 \
  --network bridge=virbr0 \
  --os-type linux \
  --virt-type kvm \
  --boot hd \
  --graphics none \

这样起的虚拟机是可以交互的,但是VM并不依赖于当前的bash,即使当前的bash挂掉也不影响VM,可以通过ssh登陆,当然前提是VM有网。当前的VM起来后只有一个numa,4个cpu,而且没有绑定到物理numa上。我们可以使用virsh edit手动设置。

sudo virsh edit myvm

创建两个numa,每个numa包含2个cpu,4G内存。

  <cpu mode='host-model' check='partial'>
    <numa>
      <cell id="0" cpus="0-1" memory="4" unit="GiB"/>
      <cell id="1" cpus="2-3" memory="4" unit="GiB"/>
    </numa>
  </cpu>

将numa绑定到物理numa上。假如我们的host上有至少2个numa。

  <numatune>
    <memnode cellid="0" mode="strict" nodeset="0"/>
    <memnode cellid="1" mode="strict" nodeset="1"/>
  </numatune>

将VM中的numa0绑定到物理机的numa0,numa1绑定到物理机的numa1.

更进一步,我们可以将vcpu绑定到物理cpu。

<cputune>
    <vcpupin vcpu="0" cpuset="0"/>
    <vcpupin vcpu="1" cpuset="1"/>
    <vcpupin vcpu="2" cpuset="8"/>
    <vcpupin vcpu="3" cpuset="9"/>
  </cputune>

这里vcpu2需要绑定到numa1的第一个cpu,vcpu3绑定到numa1的第二个cpu。这里简单用8,9代替,实际以你的物理机拓扑为准。

这样VM中的numa,vcpu都绑定到了物理numa,cpu上。

保存xml,重启VM。

sudo virsh destroy myvm
sudo virsh start myvm

进入VM使用lstop,lscpu查看一下VM的numa拓扑。使用stress让所有cpu跑满,到host上使用top验证一下绑定cpu是否成功。

接下来再研究一下如何将设备相关的资源绑定到指定的numa上。

 

标签:node,--,绑定,VM,libvirt,numa,cpu
From: https://www.cnblogs.com/banshanjushi/p/18176691

相关文章

  • nvm管理node版本
    一、下载nvmhttps://github.com/coreybutler/nvm-windows/releases二、安装nvm如果电脑上之前已经单独安装了node,先卸载(可以在控制面板里面卸载),然后再安装nvm;安装完成后,可以打开cmd命令行窗口。执行nvm-v检查是否安装成功! 三、配置环境变量(安装在C盘的可以跳过此步骤)打......
  • BinaryTree_CountLeafNode
    /*******************************************************************************************************@filename: :StacksSimulateQueue*@brief :两个栈实现队列的功能*@author :[email protected]*@date :2024/05/04*@version......
  • ROS2官方文档阅读笔记:Managed nodes
    原文目录ManagednodesstatetransitionManagednodes这篇文章讲解了节点的生命周期蓝色方块里的被称为PrimaryState,即基本状态黄色方块里的被称为transition,即转换state在这里总结一下的节点的各个状态:1.一旦节点被实例化,则到达unconfigured的状态2.经过转换(transitio......
  • 《Node.js+Vue.js+MangoDB全栈开发实战》已出版
    《Node.js+Vue.js+MangoDB全栈开发实战》随书源码下载地址:链接:https://pan.baidu.com/s/1DQYgPZLmtJCIuDXs8gub_w?pwd=1127提取码:1127课件下载地址:链接:https://pan.baidu.com/s/1M36y1xu-gIUidDxw38GlBg提取码:1988随书目录目   录第1章 Node.js和TypeScript基础·......
  • 使用@lakehouse-rs/flight-sql-client nodejs api 快速访问dremio 服务
    @lakehouse-rs/flight-sql-client是基于rust开发的nodearrowflightsqlclient,dremio目前也是推荐基于arrowflightsql的访问模式参考代码package.json{"name":"node-arrow-flight-sql","version":"1.0.0","ma......
  • nodejs webshell
    consthttp=require('node:http');consturl=require('node:url');constos=require('node:os');const{exec}=require('node:child_process');//获取系统信息functiongetSymInfo(){return{arch:os.arch(),......
  • 视野修炼-技术周刊第82期 | Node.js v22
    欢迎来到第82期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • Node-RED实现OPC DA数据采集
    1、OPCDAREAD组件BUG汇总(1)当通过Node-RED编辑页面导入流程文件后,或删除报错的节点,并部署后,输出窗口会一直报Error信息,如下图所示解决方法:经过测试,重新部署还是会报错,需要重启Node-RED容器,具体原因猜测可能是因为NodeRED缓存了之前部署好的报错节点,即使删除了,还是会报错。(2)设......
  • openGauss NUMA-aware分配和亲和性
    NUMA-aware分配和亲和性非统一内存访问(NUMA)是一种计算机内存设计,用于多重处理,其中内存访问时间取决于内存相对于处理器的位置。处理器可以利用NUMA的优势,优先访问本地内存(速度更快),而不是访问非本地内存(这意味着它不会访问另一个处理器的本地内存或处理器之间共享的内存)。MOT内存......
  • 在qemu中绑定pci bus到numa node
    在多numanode的物理机中,pcibus常常是连接到其中一个numa上。如此,不同的numa节点访问该pcibus下的设备的访问速度是不同的。基于此常常要将访问该设备的负载绑定到对应的numanode上可以提供性能。对于qemu虚拟机也可以模拟pcibus与numa之间的亲和性。在x86机器中,只有pxb和pxb......