KVM Vcpu概述
KVM Vcpu概述
- Intel VT
- SMP系统
- CPU过载使用
- CPU模型
- CPU绑定和亲和性
- CPU优化
Intel VT
Intel的硬件虚拟化技术大致分为3类:
1、VT-x技术:是指Intel处理器中的一些虚拟化技术支持,包括CPU中最基础的VMX技术,也包括内存虚拟化的硬件支持EPT、VPID等。
2、VT-d技术:是指Intel的芯片组的虚拟化技术支持,通过Intel IOMMU可实现对设备直接分配的支持。
3、VT-c技术:是指Intel的I/O设备相关的虚拟化技术支持,主要包含两个技术:一个是借助虚拟机设备队列(VMDq)最大限度提高I/O吞吐率,VMDq由Intel网卡中的专用硬件来完成;另一个是借助虚拟机直接互连(VMDc)大幅提升虚拟化性能,VMDc主要就是基于SR-IOV标准将单个Intel网卡产生多个VF设备,用来直接分配给客户机。
注:
在x86-64架构的处理器中,KVM需要的硬件虚拟化扩展分别为Intel的虚拟化技术(Intel VT)和AMD的AMD-V技术。
# 查看cpu是否开启VT,flags字段将会记录
[root@node ~]# grep -E "svm|vmx" /proc/cpuinfo
在 BIOS中,VT的选项通过“Advanced > Processor Configuration”来查看和设置,它的标识通常为“Intel® Virtualization Technology”或“Intel VT”等类似的文字说明。
除了支持必需的处理器虚拟化扩展以外,如果服务器芯片还支持 VT-d (VirtualizationTechnology for Directed I/O),建议在 BIOS 中将其打开,因为后面一些相对高级的设备的直接分配功能会需要硬件 VT-d 技术的支持。VT-d是对设备I/O 的虚拟化硬件支持,在BIOS中的位置可能为“Adanced > Processor Confguration”或“Advanced > System Agent(SA) Configuration”,它在 BIOS 中的标志一般为“ Intel® VT for Directed I/O”或“Intel VT-d”。
SMP系统
SMP(Symmetric multiprocessing)对称多处理器系统,是一种多处理器的电脑硬件架构,指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。多个进程可以并行执行,而且单个进程的多个线程也可以得到并行执行。
QEMU在给客户机模拟CPU时,也提供对SMP系统的支持。配置客户机SMP参数如下:
-smp [cpus=] n [,maxcpus=cpus] [, cores=cores] [, threads=threads] [ , sockets=sockets)
n:用于设置客户机中使用的逻辑 CPU 数量(默认值是 1)。
maxcpus:用于设置客户机中最大可能被使用的CPU数量,包括启动时处于下线(ofline)状态的 CPU数量 (可用于热插拔 hot-plug 加人 CPU,但不能超过 maxcpus这个上限)。
cores:用于设置每个 CPU 的 core 数量(默认值是 1)。
threads:用于设置每个 core 上的线程数(默认值是 1)。
sockets:用于设置客户机中看到的总的 CPU socket 数量。
# 查看是否支持SMP系统
[root@node ~]# uname -v
#1 SMP Tue Oct 17 15:42:21 UTC 2023
# 开启irqbalance服务,该服务能够把压力均匀的分配到各个CPU核心上,对提升性能有很大的帮助,但在某些情况下,可能会导致网络、IO等性能问题。
[root@node ~]# service irqbalance start
CPU过载使用
KVM允许客户机过载使用物理资源,即允许为客户机分配多余物理上实际存在的cpu和内存数量。但在实际使用过程中,不推荐让某一个客户机的vCPU数量超过物理系统上存在的CPU数量。比如:在拥有4个逻辑CPU的宿主机中,每个客户机的vCPU数量多于4个。
CPU模型
每一种虚拟机管理程序 ( Virtual Machine Monitor,简称 VMM或Hypervisor)都会定义自己的策略,让客户机看起来有一个默认的 CPU 类型。有的 Hypervisor 会简单地将宿主机中CPU的类型和特性直接传递给客户机使用,而 QEMU/KVM 在默认情况下会向客户机提供一个名为qemu64 或qemu32 的基本 CPU模型。QEMU/KVM 的这种策略会带来一些好处,如可以对CPU 特性提供一些高级的过滤功能,还可以将物理平台根据提供的基本 CPU模型进行分组(如将几台 IvyBridge 和 Sandybridge 硬件平台分为一组,都提供相互兼容的SandyBridge 或qemu64的CPU模型),从而使客户机在同一组硬件平台上的动态迁移更加平滑和安全。
通过如下的命令行可以查看当前的 QEMU 支持的所有 CPU 模型。
# 查看当前的 QEMU 支持的所有 CPU 模型
[root@node -]# qemu-system-x86 64 -cpu ?
# 指定使用Broadwell模型
[root@node -]# qemu-system-x86 rhel7.img -cpu Broadwell -smp 8 -m 16G -enable-kvm
# -enable-kvm 这个参数用来开启KVM硬件加速功能
CPU绑定和亲和性
通常在SMP系统中,Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。那么在不同的时间片上,进程的执行可能会在不同的CPU上运行,这样就会带来缓存命中失效,导致性能下降。但从另一方面来看,设置CPU亲和性之后,由于进程的运行固定到某个CPU上,会破坏各CPU的负载均衡,SMP的调度效率也会有所降低。
# 可以先查看QEMU pid和psr(运行在几号CPU上)
[root@node ~]# ps -eLo psr,ruser,pid,args | grep qemu
# 上面命令带参数不易记的话,也可以先ps查pid,然后pidstat -p 进程号,查运行CPU号
# 然后将进程绑定到指定CPU上,这里指定3号CPU
[root@node -]# taskset -pc 3 72260
CPU优化
AVX/AVX2/AVX512(Advanced Vector Extensions,高级矢量扩展)指令集。
XSAVE指令集,用于保存和恢复处理器扩展状态,动态迁移保存处理器状态,然后在迁移后恢复处理器的执行状态。
AES(Advanced Encryption Standard,高级加密标准)指令集,用于对电子数据进行加密。
注:
以上不作太多解释,具体可以参考相关资料。
# 查看CPU是否支持
[root@node ~]# cat /proc/cpuinfo | grep -E "avx|xsave|aes"
创建客户机时可以使用 “-cpu qemu64,+aes” 来添加新特性。也可以通过 “-cpu host” 参数来完全暴露宿主机的CPU特性,
相关文章:

KVM Vcpu概述
KVM Vcpu概述 Intel VTSMP系统CPU过载使用CPU模型CPU绑定和亲和性CPU优化 Intel VT Intel的硬件虚拟化技术大致分为3类: 1、VT-x技术:是指Intel处理器中的一些虚拟化技术支持,包括CPU中最基础的VMX技术,也包括内存虚拟化的硬件支…...

linux服务器ftp部署
1、ftp服务安装 # 检查是否安装 1、查询安装列表 sudo systemctl list-unit-files --typeservice | grep ftp 2、查询ftp服务状态 sudo service vsftpd status 或者 sudo systemctl status vsftpd # yum安装,一般yum仓库都有ftp安装包 sudo yum install vsftpd # 启…...

NSIS 安装windows 安装包(包括QT和MFC)
NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。 基本概念 区段 是对应某种安装/卸载选项的处理逻辑,该段代码仅当用户选择相应的选项才被执行…...

K8S----PVPVCSC
一、简介 1、PV(persistent volume)–持久卷 PV是集群中的一块存储,可以由管理员事先静态(static)制备, 也可以使用存储类(Storage Class)来动态(dynamic)制备。 持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件(volume p…...

RSIC-V“一芯”学习笔记(一)——概述
考研的文章和资料之后想写的时候再写怕趴 文章目录 一、阶段设计二、环境、开发语言和工具三、最重要的两个观念四、处理器芯片设计五、处理器芯片设计包含很多软件问题六、处理器芯片的评价指标七、复杂系统的构建和维护八、专业世界观九,提问的艺术(提问模板)十、…...

MATLAB读取图片并转换为二进制数据格式
文章目录 前言一、MATLAB 文件读取方法1、文本文件读取2、二进制文件读取3、 图像文件读取4、其他文件读取 二、常用的图像处理标准图片链接三、MATLAB读取图片并转换为二进制数据格式1、matlab 源码2、运行结果 前言 本文记录使用 MATLAB 读取图片并转换为二进制数据格式的方…...

时序数据库
SELECT *,max(lp_index) FROM lp.tdm_lp_original_data where ts > 2023-12-28 18:11:33.521 and ts < 2023-12-29 19:03:12.148 INTERVAL(2s) FILL(PREV) 在时间序列数据库TDengine中,FILL函数与GROUP BY子句结合使用,提供了对于在指定间隔内…...

【第一次使用finalshell连接虚拟机内的centos】小白处理方式
第一次使用finalshell连接centos7的时候,因为都是新环境什么都没有配置,所以就需要安装finalshell和对新的centos7 进行一些配置。 安装finalshel,默认不安装d盘,就需要对安装路径做一下调整,其余都是下一步默认安装的…...

Pinia 踩坑记录
1、子store中如何使用router 以user.ts 这个store为例 错误写法 // 说明:不能使用插件实例化router,否则获取不到router的函数 // 错误写法如下:import { useRouter } from "vue-router"actions:{login(){const router useRout…...

在ASP.NET MVC中使用JQuery提供的弹出窗口(模态窗口)
在ASP.NET MVC中使用JQuery提供的弹出窗口(模态窗口) 原理 使用<div>图层灵活显示在浏览器的任何位置。默认情况下指定<div>不可见 引用 样式表 在JQuery的官方网站可以下载对应的css样式表。打开官网的样例页。 找到样式表引用路径 …...

基本工具配置
github加速 github.ur1.fun java # ubuntu20.04 安装 openjdk-17-jdk sudo apt install openjdk-17-jdk java -version javac -version which java参考 openjdk gradle换源 修改gradle-wrapper.properties distributionBaseGRADLE_USER_HOME distributionPathwrapper/dis…...

计算机网络——应用层(3)
计算机网络——应用层(3) 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 点对点(P2P)P2P网络一般用途优点缺点总结 套接字编程基本步骤UDP套接字TCP套接字基本步骤 二者对比 小程一言 我的计算机网络专栏,是自…...

配置ssh实现互相免密登陆
一、实验要求 通过两台linux主机 配置ssh 实现互相免密登陆 的操作 二、实验思路 免密登录我们可以理解为使用公钥登录,这里分别使用两台主机(client)和(server)作为实验主机。 首先让client免密登录server&#x…...

【UEFI基础】EDK网络框架(ARP)
ARP ARP协议说明 从这里开始涉及到的网络协议都是比较通用的了,在一般的TCP/IP四层模型中都能够看到这些内容,不过这里主要介绍的还是其在BIOS下的实现,但是在此之前还是需要先说明ARP的作用。 ARP的全称是Address Resolution Protocol&am…...

Linux进阶课:目录(文件夹)与文件操作
1、ls与cat的区别是是什么? 答:ls命令的含义是list,显示当前目录中内容。不加参数时它显示当前目录中除隐藏文件外的所有文件及目录的名字。 cat命令是linux下的一个文本输出命令,通常是用于查看某个文件的内容的。 2、[abc]这个…...

Flink自定义Source模拟数据流
maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...

[易语言]使用易语言部署工业级人脸检测模型
【框架地址】 https://github.com/ShiqiYu/libfacedetection 【算法介绍】 Libfacedetection是一个开源的计算机视觉库,主要用于实时的人脸检测。它利用深度学习技术,特别是卷积神经网络(CNN),实现了高精度的脸部定位…...

2024年海外推广怎么做?
要说如何做海外推广,绝大多数的外贸小伙伴都能说上一些,但是大部分人对于推广系统知识略知一二,没有构建一个系统化的知识框架。 海外推广的几大步骤 1.定策略 做海外推广前,我们需要制定一套营销策略,需要去定义一…...

Redis分布式锁--java实现
文章目录 Redis分布式锁方案:SETNX EXPIRE基本原理比较好的实现会产生四个问题 几种解决原子性的方案方案:SETNX value值是(系统时间过期时间)方案:使用Lua脚本(包含SETNX EXPIRE两条指令)方案:SET的扩展…...

好消息,Linux Kernel 6.7正式发布!
据有关资料显示,该版本是有史以来合并数最多的版本之一,包含 17k 个非合并 commit,实际合并的超过1K个。 那么该版本主要有哪边变化呢?下面我来一一列举一下: Bcachefs文件系统已被合并到主线内核,这是一款…...

【k8s】Kubernetes 声明式 API、命令式
1. 资源管理方式: 1>. 命令式对象管理∶直接使用命令去操作kubernetes资源 kubectl run nginx-pod --imagenginx:1.17.1 --port802>. 命令式对象配置∶通过命令配置和配置文件去操作kubernetes资源 kubectl create/patch -f nginx-pod.yaml3>. 声明式对…...

解锁营销新高度:幽灵鲨CRM推广平台线索对接功能详解
数字营销时代,线索对接是推动业务增长的关键。你是否为线索分布在不同的平台而来回切换?你是否为无法及时联系客户而错失商机?幽灵鲨CRM系统作为一款领先的客户关系管理解决方案,不仅实现了对主流推广平台的全面对接,更…...

uniapp 创建组件
组件:用于将某个功能的 HTML、CSS、JS 封装到一个文件中,提高代码的复用性和可维护性。 创建组件 一、在根目录中创建 components 文件夹,右键点击新建组件。 二、输入组件名称、选择默认模板、点击创建组件。 三、在组件中正常编写内容即可…...

Linux--部署 Tomcat 及其负载均衡
1.案例前置知识点 1)Tomcat简介 名称由来:Tomcat最初是由 Sun的软件构架师詹姆斯邓肯戴维森开发的。后来他帮助将其变 为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目OReilly都会出一本相关的 书,并且将其封面设…...

影像组学介绍
影像组学介绍 1 影像组学介绍2 具体提取影像组学方法流程及工具代码:2.1 影像数据获取2.2 感兴趣区域分割2.3 特征提取与降维选择2.3.1 特征提取:2.3.2 特征降维(特征选择) 2.4 建模分析:2.5 结果分析 参考: 1 影像组学介绍 其实…...

什么是云服务器?云服务器的工作原理是介绍
阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云百科aliyunbai…...

【前后端的那些事】前后端环境搭建+树形结构表格实现
文章目录 1. 前后端项目环境搭建2. table-tree2.1 后端准备2.2 前端准备 前言:最近写项目,发现了一些很有意思的功能,想写文章,录视频把这些内容记录下。但这些功能太零碎,如果为每个功能都单独搭建一个项目࿰…...

PHP版学校教务管理系统源码带文字安装教程
PHP版学校教务管理系统源码带文字安装教程 运行环境 服务器宝塔面板 PHP 7.0 Mysql 5.5及以上版本 Linux Centos7以上 系统介绍: 后台权限控制:支持多个管理员,学生管理,学生成绩,教师管理,文章管理&#x…...

前端背景收集之烟花背景
文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🎀源码如下: 🐒个人主页 🏅Vue项目常用组件模板仓库 📖前言: 本篇博客主要提供前端背景收集之烟花背景…...

PCL 格网法计算点云的占地面积
目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 该方法主要用于粗略统计机载点云的占地面积。方法原理是将点云沿 X O Y XOY...