CPU配置

vCPU:客户机拥有的cpu
每个guestos是一个qemu进程,每个vcpu在hostos中是qemu进程派送的普通线程
普通linux环境里,进程有两个执行模式:内核模式和用户模式,KVM环境里,增加第三种模式:客户模式
1)用户模式
主要处理I/O的模拟和管理,由qemu代码实现

2)内核模式
主要处理特别需要高性能和安全相关的指令,如处理客户模式到内核模式的转换,处理客户模式下的I/O指令或其他特权指令引起的退出(VM-Exit),处理影子内存管理(shadow MMU)。

3)客户模式
主要执行Guest 中的大部分指令,I/O和一些特权指令除外(他们会引起VM-Exit,被Hypervisor截获并模拟)。

三种模式的转换:
*图1*


超线程

SMP(对称多处理架构),在虚拟机环境下可以有两种方式实现(个人认为,其实质是一样的)
1)对于物理硬件非SMP环境,设置虚拟机为smp,多个vcpu在宿主硬件上分时调度。
2)对于物理硬件为SMP环境,设置虚拟机为smp,多个vcpu在宿主机上被分配到多个cpu上同时执行。

进程的处理器亲和性:将进程绑定到特定的一个或多个CPU上去执行
优点:减少进程在多个CPU之间交换运行带来的缓存命中失效,在进程运行角度看,提升性能;
缺点:破坏各个CPU的负载均衡,导致整个系统的进程调用变得低效;

 

#显示每个cpu上运行的线程数目
ps -eLo psr|grep 0|wc -l

#判断进程是否隔离
ps -eLo ruser,pid,ppid,lwp,psr,args|awk '{if($5==2) print $0}'

-e: 显示所有进程
-L: 显示进程
-o: 根据用户自定义的格式输出
ruser: 运行进程的用户
lwp: 线程ID
psr: 分配给进程运行的处理器编号
args: 进程名

参考:https://www.cnblogs.com/softidea/p/5267757.html

 

posted @ 2018-02-01 15:31  Hsinwang  阅读(199)  评论(0编辑  收藏  举报