一 cpu
1 如何查看内核版本:uname -r
2 如何查看操作系统的发行版本:cat /etc/redhat-release
3 计算机系统子的系统
- cpu处理器
- memory内存
- storage存储
- network 网络
- Display显示
4 进程模式
- 用户模式(user mode)主要处理I/O的模拟和管理,由QEMU实现.
- 内核模式(kernel mode)主要处理高性能和高安全的指令.
- 客户模式(guest mode)主要执行Guest的大部分命令.
如图为vcpu在kvmz中的三种执行模式:如果想要对虚拟机执行shutdown操作就需要空间的转换,用户空间输入交互命令virsh 来执行”shutdown“--调用libvirtd服务--交换到内核空间,调用内核空间的kvm--由kvm对虚拟机shutdown操作--返回用户空间
5 虚拟机对于物理主机来说就相当于物理主机的一个进程(虚拟机的一个cpu会生成一个进程号)
- 用ps命令来查看到开机状态的所有虚拟机(显示qemu为虚拟机进程)
- 如果虚拟机远程连接不上,则可以用kill命令将虚拟机关机
6 CMP、SMP、NUMP
1)CMP: 多核心,也指单芯片多处理器(Chip multiprocessors,简称CMP),其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程
2)SMP: (Symmetric Multi-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源
3)NUMA:NUMA即非一致访问分布共享存储技术,它是由若干通过高速专用网络连接起来的独立节点构成的系统,各个节点可以是单个的CPU或是SMP系统。在NUMA中,Cache 的一致性有多种解决方案,需要操作系统和特殊软件的支持。
7 查看自己cpu属于哪种架构
1)在虚拟机中#lscpu
- 或者在物理主机上查看虚拟机的配置文件*.xml
找到文件:find / -name *.xml |grep qemu |grep libvirt
- 查看制定虚拟机的.xml文件内容:
#more /etc/libvirt/qemu/centos7.0-zx01.xml
8 如果想要修改cpu可以有多种方式修改,但都需要对虚拟机进行shutdown之后再修改才可以生效
(1)在虚拟机中修改:点击显示硬件详情--进行修改
(2)虚拟机端手动部署
(3)物理机查看配置文件,发现也修改了
(4)也可以通过修改配置文件来修改cpu的架构,但是需要进入到virsh edit centos7.0-zx01中修改(改错保存不了,可以及时发现错误,最好不要在/etc/libvirt/qemu/centos7.0-zx01.xm中修改,容易导致虚拟机重启失败)
去虚拟机端查看cpu架构:
二 CPU模型:VMM自定义策略的CPU类型,可以提供一些高级的过滤功能,同一组硬件平台上的动态迁移更加平滑和安全(注意:如果是模型cpu是需要在关机状态下进行的)
(cpu模型:在要做虚拟机迁移的两台主机上的cpu寻找相同的指令集,然后从下列图选中你想要模拟cpu品牌,可以更好的实现vmotion,但是如果选择的是host-passthrough 则会对vmotion有很大影响,需要迁移的主机也是与物理cpu相同品牌的)
三 cpu亲核
1 概念:即CPU的绑定设置,是指将进程绑定到特定的一个或多个CPU上去执行,而不允许将进程调度到其他的CPU上。
步骤:①:先要在物理机上开启透传功能
echo -e "options kvm_intelnested=1" >/etc/modprobe.d/kvm-nested.conf
cat /sys/module/kvm_intel/parameters/nested
modprobe -r kvm_intel
modprobe kvm_intel
去虚拟机端查看是否开启成功:#lscpu |grep vmx(有显示则表示开启成功)
与物理主机建立连接
把镜像从物理主机导过来
创建挂载点cdrom1,进行挂载
创建本地yum源
下载软件:tigervnc-server
是否支持VT-x,是否挂载kvm
下载安装所需的命令和服务:
yum install qemu-kvm* virt-* libvirt*
重启libvirtd服务:systemctl restart libvirtd
验证安装:virsh -c qemu:///system list
安装虚拟机:重启按e 进入grub 如图:linux16段尾加isolcpus=1,2 ctrl+x
qemu-img create -f qcow2 /var/lib/libvirt/images/mmmq.qco
通过安装字符界面的脚本安装虚拟机:
virt-install \
--connect qemu:///system \链接多个libvirtd(可省略)
--name mmmq \取名
--memory 512 \内存(Mb)
--cpu host \
--cpu host-passthrough \(用这行)
--vcpus 4,maxvcpus=8,sockets=2,cores=1,threads=2 \
--disk size=8 \
--disk path=/var/lib/libvirt/images/mmmq.qcow2 \
--disk /var/lib/libvirt/images/ac260t73.qcow2,size=260,format=qcow2,bus=virtio,sparse \
--cdrom CentOS-7-x86_64-Minimal-1708.iso \
--location /var/lib/libvirt/images/CentOS-7-x86_64-DVD-1611.iso \
--location http://example.com/path/to/os \
--os-type linux \(类型)
--os-variant rhel7 \(架构;rhel7:redhat 企业版linux7)
--accelerate \(提高性能优化)
--network bridge=virbr0 \
--network bridge=br0 \
--graphics none \(关闭图像)
--console pty,target_type=serial \(链接控制台;pty:从网络链接过来,伪装用户;tty:用键盘鼠标链接通过ALT+f1234来切换用户,在控制台,用who)
--extra-args 'console=ttyS0,115200n8 serial'
红色阴影部分为写入脚本部分
安装过程:
设置虚拟机语言,时区,分区,root密码
进入二层虚拟机
在一层虚拟机上开启二层虚拟机
ps aux查看虚拟机进程号为:11615
查看各个号cpu上运行进程数
查看开始虚拟机进程在0号cpu上:
ps -eLo ruser,pid,ppid,lwp,psr,args | awk '{if($5==0) print $0}'
psr 处理器编号 lwp 线程ID ruser 运行进程的用户 pid进程ID ppid 父进程ID args 运行的命令和参数-e 显示所有进程 -L 显示LWP light weight process -o 自定义输出
用于处理workqueues ksoftirqd 用于调度CPU软中断的进程
将进程号为11615号的虚拟机转移到1号cpu上
查看1号cpu 上存在进程号为11615的进程
再查看0号cpu发现没有进程号为11615的进程了
但是发现3号cpu上有一个线程为11645的