【Ovirt 笔记】虚拟机 vcpu 绑定物理 cpu 功能分析

文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

服务器 CPU 信息查看

  • 总核数 = 物理 CPU 个数 X 每颗物理 CPU 的核数
  • 总逻辑 CPU 数 = 物理 CPU 个数 X 每颗物理 CPU 的核数 X 超线程数

在 linux 下 /proc/cpuinfo 文件中,保存了 cpu 的详细信息。

参数 用例值 说明
processor 0 系统中逻辑处理核编号
vendor_id GenuineIntel CPU 制造商
cpu family 6 CPU 产品系列代号
model 58 CPU 属于其系列中的某一代的代号
model name Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz CPU 属于的名字及其编号、标称主频
stepping 9 CPU 属于制作更新版本
cpu MHz 3700.523 CPU 的实际使用主频
cache size 8192 KB CPU 二级缓存大小
physical id 0 单个 CPU 的标号
siblings 1 单个 CPU 逻辑物理核数
core id 0 当前物理核在其所处 CPU 中的编号,这个编号不一定连续
cpu cores 1 该逻辑核所处 CPU 的物理核数
apicid 0 用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu yes 是否具有浮点运算单元(Floating Point Unit)
fpu_exception yes 是否支持浮点计算异常
cpuid level 13 执行 cpuid 指令前,eax 寄存器中的值,根据不同的值 cpuid 指令返回不同的内容
wp yes 表明当前 CPU 是否在内核态支持对用户空间的写保护(Write Protection)
flags fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase tsc_adjust smep 当前 CPU 支持的功能
bogomips 7402.00 在系统内核启动时粗略测算的 CPU 速度(Million Instructions Per Second)
clflush size 64 每次刷新缓存的大小单位
cache_alignment 64 缓存地址对齐单位
address sizes 42 bits physical, 48 bits virtual 可访问地址空间位数
power management ts 对能源管理的支持
  • 查询系统具有多少个逻辑核
cat /proc/cpuinfo | grep "processor" | wc -l 
  • 查询系统 CPU 的物理核数
cat /proc/cpuinfo | grep "cpu cores" | uniq
  • 查询系统CPU是否启用超线程
    • 如果 cpu cores 数量和 siblings 数量一致,则没有启用超线程,否则超线程被启用。
cat /proc/cpuinfo | grep -e "cpu cores"  -e "siblings" | sort | uniq 
  • 查询是否支持 64 位计算
    • lm 指 long mode, 支持 lm 则是 64 位
    • 结果大于 0, 说明支持 64 位计算
cat /proc/cpuinfo |grep flags | grep ' lm ' | wc -l
  • 查看 CPU 型号
cat /proc/cpuinfo | grep name | cut -f 2 -d : | uniq -c 
  • 物理 CPU 数量
cat /proc/cpuinfo |grep physical | uniq -c
  • 查看 CPU 是否支持硬件虚拟化
egrep --color "lm|svm|vmx" /proc/cpuinfo

kvm 虚拟机到物理 cpu 的绑定

  • kvm 虚拟出来的虚拟机(vm),是主机中的进程,虚拟机的 vcpu 是进程衍生出的不同线程
    • 新建一个虚拟机 vm1 在主机(host)中运行。
    • 在虚拟机 vm1 中执行一个死循环操作,使 CPU 占用陡增。
    • 在主机(host)里,通过 top 命令查看,基本上第一个进程就是 vm1。(记住 PID)
    • 通过 ps 命令查看进程(PID)相关,可以了解到 kvm 虚拟机在主机中就是一个进程,而虚拟机的虚拟 cpu(vcpu)都是进程衍生出来的线程,4 核虚拟机,则衍生出 4 个线程。e 是打印所有进程,L 将线程也打印出来。
    • 多出的一个线程是 io 的线程。
【Ovirt 笔记】虚拟机 vcpu 绑定物理 cpu 功能分析_第1张图片
主机运行虚拟机进程
ps -eL | grep [PID]
【Ovirt 笔记】虚拟机 vcpu 绑定物理 cpu 功能分析_第2张图片
虚拟机 vcpu 线程
  • vcpu 线程运行在不同的逻辑 cpu 上
ps -eLo ruser,pid,ppid,lwp,psr | grep [PID]
【Ovirt 笔记】虚拟机 vcpu 绑定物理 cpu 功能分析_第3张图片
vcpu 运行在不同的逻辑处理核编号上
  • vcpu 绑定物理 cpu
    • 登录 ovirt 管理门户,编辑虚拟机 vm1。
    • 编辑<虚拟机 → 主机 → 开始运行在>选项,选择为专有的主机。
    • 编辑<虚拟机 → 资源分配 → 高级参数 → CPU Pinning 拓扑结构>,填写 vcpu 绑定公式。
0#0_1#0_2#0_3#0
  • 再次查看 vcpu 线程运行情况,可以发现 vcpu 已经运行在了同一个逻辑处理核编号上,实现了绑定。
【Ovirt 笔记】虚拟机 vcpu 绑定物理 cpu 功能分析_第4张图片
vcpu 运行在同一个逻辑处理核编号上

你可能感兴趣的:(【Ovirt 笔记】虚拟机 vcpu 绑定物理 cpu 功能分析)