一、SMP(对称多处理器)介绍
1)SMP简介
在计算机技术非常普及和日益发达的今天,以 Intel、IBM 为代表的一些大公司推动着中央处理器(CPU)技术的飞速发展和更新换代,在现在计算机系统中,多处理器、多核、超线程等技术得到了广泛应用。无论是在企业级和科研应用的服务器领域中;还是个人消费者使用的台式机、笔记本甚至只能手机上,随处可见 SMP(Symmetric Multi-Processor 对称多处理器)系统。在 SMP 系统中,多个程序(进程)可以做到真正的并行执行,而且单个进程的多个线程也可以得到并行执行,这极大提高了计算机系统并行处理能力和整体性能。
2)SMP 硬件支持
在硬件方面,早期的计算机系统更多的是在一个主板上拥有多个物理的 CPU 插槽来实现 SMP 系统,后来随着多核技术、超线程(Hyper-Threading)技术的出现,SMP 系统就会使用多处理器、多核、超线程等技术中的一个或多个。多数的现代CPU都支持多核或超线程技术,如 Intel 的 Xeon(志强)、Pentium D(奔腾 D)、Core Duo (酷睿双核)、Core 2 Duo(酷睿二代双核)等系列的处理器和 AMD 的 Athlon64 X2、Quad FX、Opteron 200、Opteron 2000 等系列的处理器。
3)SMP 软件支持
在操作系统方面,多数的现代操作系统都提供了对 SMP 系统的支持、如主流的 Linux 操作系统(内核2.6及以上对 SMP 的支持比较完善)、微软的 Windows NT 系列(包括:Windows 2000、Windows XP、Windows 7、Windows 8、Windows 10等)、Mac OS 系统、BSD 系统、HP-UX 系统、IBM 的 AIX 系统,等等。
二、查看 CPU 数量、多核及超线程
至于查看 CPU 的 physical、processor、core 等信息,请看我以前写的博客:
Linux查看CPU信息:http://blog.csdn.net/wanglei_storage/article/details/48326791
二、创建 kvm 虚拟机
1、安装 kvm 虚拟机
在配置客户机的 SMP 之前呢,必须要有虚拟机才行,这边简单介绍下如何创建一个虚拟机(准备一只系统镜像,例如:CentOS-6.5-x86_64-bin-DVD1.iso):
1)首先,需要创建一个镜像文件,可以使用 dd 工具,下面创建一个 8GB 大小的系统磁盘文件 centos.img:
2)其次,启动该 kvm 虚拟机并安装系统
参数介绍:
-smp :也就是接下来要说明的东西,SMP(对称多处理器)系统
-m :分配给客户机的内存
-boot order=cd:指定引导次序;a、b表示软驱、c表示第一块硬盘,d表示第一个光驱设备,n-p表示网络适配器
-hda : 分配给客户机的 IDE 硬盘(即前面准备的镜像文件)
- cdrom:分配给客户机的光驱
默认情况下,QEMU会启动一个 VNC Server 端口(如上::1:5900),可以在kde桌面环境用 vncviewer 工具来连接到 QEMU 的 VNC 端口查看客户机,并且安装操作系统。
到这里,准备工作完成
三、qemu-kvm 配置客户机的 SMP 系统
qemu-kvm 参数介绍:
在 qemu-kvm 命令中,”-smp” 参数即是为了配置客户机的 SMP 系统,具体参数如下:
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
其中:
- n 用于设置客户机中使用的逻辑 CPU 数量(默认值为1)
- maxcpus 用于设置客户机中最大可能被使用的 CPU 数量,包括启动时处于下线 offline 状态的 CPU 数量
- cores 用于设置每个 CPU socket 上的 core 数量 (默认值为1)
- threads 用于设置每个 CPU core 上的线程数(默认值为1)
- sockets 用于设置客户机中看到的总的 CPU socket 数量。
下面通过 KVM 中的几个QEMU命令实例来看一下如何将 SMP 应用于客户机中(查看进程及线程通过命令:ps -efL):
1)示例1(smp 指定为 4 表示分配了 4 个虚拟CPU给客户机):
我们在客户机中看到了4个 processor 和 cpu0、cpu1、cpu2、cpu3,并且在宿主机中看到了 qemu-kvm 进程和线程
2)示例2 (smp 指定为 2 表示分配了 2 个虚拟CPU给客户机)
我们在客户机中看到了2个 processor 和 cpu0、cpu1,并且在宿主机中看到了 qemu-kvm 进程和线程
3)示例3(不加 smp 参数,使用其默认值1,在客户机中查看 CPU 情况)
我们在客户机中看到了1个 processor 和 cpu0,并且在宿主机中看到了 qemu-kvm 进程和线程