一、多 CPU 技术结构
1、SMP 技术
早期的时候,每台服务器都是单 CPU,随着技术的发展,出现了多 CPU 共同工作的需求,最早的多 CPU 技术是 SMP
SMP 即多个 CPU 通过一个总线访问存储器,因此 SMP 系统有时也被称为一致内存访问结构体系。一致性意指无论在什么时候,处理器只能为内存的每个数据保持或共享唯一一个数值
SMP 的缺点是扩展性有限,因为在存储器接口达到饱和的时候,增加处理器并不能获得更高的性能,因此 SMP 方式支持的 CPU 个数有限
2、MPP 模式
MPP 模式则是一种分布式存储器模式,能够将更多的处理器纳入一个系统的存储器。一个分布式存储器模式具有多个节点,每个节点都有自己的存储器。可以配置为 SMP 模式,也可以配置为非 SMP 模式。单个节点相互连接起来就形成了一个总系统。MPP 可以理解为 SMP 的横向扩展集群,MPP 一般要依靠软件实现
3、NUMA 技术
NUMA 模式则是每个处理器都有自己的存储器,每个处理器也可以访问到别的处理器的存储器
二、KVM 虚拟机 NUMA 调优
1、宿主机的 NUMA 信息查看与配置
因为 NUMA 架构每个处理器都可以访问自己和别的处理器的存储器,访问自己的存储器会比访问别人的存储器快很多,速度相差 10 - 100 倍,所以 NUMA 调优的目标就是让处理器尽量访问自己的存储器,以提高处理速度
# numa 可以查看当前 CPU 硬件的情况
[root@node01 ~]# yum -y install numactl
[root@node01 ~]# numactl --hardware
# numastat 命令可以查看每个节点的内存统计
[root@node01 ~]# numastat
node0
numa_hit 3014342 # 使用本节点内存的次数
numa_miss 0 # 技术使用本节点内存而被调度到其他节点次数
numa_foreign 0 # 技术使用其他节点内存而使用本地内存次数
interleave_hit 21444 # 交叉分配使用的内存中使用本节点内存次数
local_node 3014342 # 在本节点运行的程序使用本节点内存次数
other_node 0 # 在其他节点运行的程序使用本节点内存次数
# -c 查看相关进程的 NUMA 内存的情况
[root@node01 ~]# numastat -c qemu-kvm
Found no processes containing pattern: "qemu-kvm"
Per-node numastat info (in MBs):
Node 0 Total
------ -----
Numa_Hit 12192 12192
Numa_Miss 0 0
Numa_Foreign 0 0
Interleave_Hit 84 84
Local_Node 12192 12192
Other_Node 0 0
# Linux 系统默认是自动 NUMA 平衡策略。如果要关闭 Linux 系统的自动平衡
[root@node01 ~]# echo 0 > /proc/sys/kernel/numa_balancing
# 如果要开启自动 NUMA 平衡策略,可以使用如下命令
[root@node01 ~]# echo 1 > /proc/sys/kernel/numa_balancing
2、虚拟机 NUMA 信息查看与配置
# 查看虚拟机的 numa 配置
[root@node01 ~]# virsh
numatune ID
NUMA 工作方式可以是 strict 指定 CPU,或者 auto 使用系统的 numad 服务
<numatune>
<memory mode='strict' placement='auto'/>
</numatune>
<numatune>
<memory mode='strict' nodeset='0,2-3'/>
</numatune>
# 可以使用 numatune 命令配置虚拟机的 NUMA
$ virsh numatune rhel7 --nodeset '0, 2-3'
<vcpu placement='auto'>8</vcpu>
<vcpu placement='static' cpuset='0-10, ^5'>8</vcpu>
三、CPU 绑定
CPU 绑定是一项非常神奇的技术,最神奇的地方就是可以在线配置,并且立即生效,可以解决生产环境 CPU 利用率严重不平均的问题
1、CPU 信息查看
# 查看虚拟机 VCPU 和 物理 CPU 的对应关系
$ virsh vcpuinfo VMID
# 使用 emulatorpin 命令可以查看虚拟机可以使用哪些物理逻辑 CPU
$ virsh # emulatorprin 21
评论区