为了节约时间,虚拟机配置4G内存,避免dump时间过长、文件过大
<memory>4194304</memory>
<currentMemory>4194304</currentMemory> //memory这两个值最好设成一样
<vcpu>4</vcpu>
vnc登录虚拟机
编写一个CPU消耗程序a.c
void main(){
while(1){}
}
不采开启优化编译
gcc -O0 a.c
默认生成可执行程序:a.out
后台执行起来
./a.out &
top查看负载
此时,宿主服务器执行dump,执行过程中虚拟机被挂起
virsh dump --memory-only redflag1 redflag1-memonly.dump
进入虚拟机,nfs访问宿主机上的dump文件,启动crash分析
ps查看进程(由于多次实验,a.out导致记录的 pid前后不一致)
查看运行中的进程
内存使用状态
总结
virsh dump出来的内核转储文件,crash分析,虚拟机有多少个核心,对应会有多少个swapper进程,本环境中分别是[swapper/0]、[swapper/1]、[swapper/2]、[swapper/3],其PID为0,均处于RU(即执行)状态。
通过swapper进程,不能判定当前CPU是否处于空闲状态。(原先猜测的是swapper进程运行标识CPU空闲,此思路错误)。
crash调试环境尚未发现有top这类观察CPU消耗状态方法。
附
FT2000+ openEuler 20.03 virsh创建qemu kvm虚拟机 启动qemu kvm_hkNaruto的博客-CSDN博客
https://www.cnblogs.com/MrVolleyball/p/11606248.html