图解 notify 工作原理
几张图了解 KVM 和 QEMU 图一 图二 1、QEMU 和 KVM 是如何实现的 (通用交互流程,基于第一张图的解释) sequenceDiagram participant GuestApp as Guest Application/OS participant GuestCPU as Guest vCPU participant KVM a…
vdpa 特性协商机制
首先每一个 vdpa 设备都有自己的基础特性,举例如下两个设备,其中是基本的环境信息 版本 virsh 8.0.0 qemu qemu-kvm-6.2.0-53.module+el8.10.0+1882+0c885e98.2 guest os 4.18.0-348.el8.x86_64 那我们看一下 feature 的几个来源以及其中的作用 设备的…
kernel 内存模型
我们来详细了解一下内核的内存模型,为了达成了解的目的,我们从内核的两个宏函数入手 page_to_pfn、pfn_to_page 内核提供了两个宏来完成 PFN 与物理页结构体 struct page 之间的相互转换。它们分别是 page_to_pfn 与 pfn_to_page,先看一下内核的这两个宏函数 #define page_to_pfn …
linux pci passthrough
ubuntu 虚拟机 jeff@ubuntu:~/workstaging/qemu-gdb/start_qemu$ cat start_qemu.sh qemu-system-x86_64 -s \ -kernel /home/jeff/workstation/kernel_src/linux-hwe-5.11-5.11.0/arch/x86_64…
交叉编译ARM内核
环境准备 安装编译器 http://xxxxx/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz sudo dpkg -i gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz 设置环境变量 export PATH=$PA…
x86平台起ARM虚拟机
安装AARCH的qemu工具和efi固件 apt-get install qemu-system-arm apt-get install qemu-efi-aarch64 apt-get install qemu-utils 创建flash image dd if=/dev/zero of=flash1.img bs=1M count=64 dd …
记一次客户环境死机分析
客户环境发生无故重启的现象,查看ipmi也是正常的 环境crash时的调用栈 crash> bt PID: 24715 TASK: ffff883f3bedef20 CPU: 17 COMMAND: "CPU 3/KVM" #0 [ffff883e962d38a0] machine_kexec at ffffffff810…
ovs报Too many open files
现象 现象是ovs占用cpu比较高,查看ovs的stack发现一直陷入内核代码,但是一直被schedule出去; 查看进程file descriptor限制 [root@node-1 zjp]# ulimit -u 102400 查看ovs-vswitchd进程打开的文件数 [root@node-1 zjp]# lsof -p $(pidof ov…
Linux Netfilter 技术(3)-NF_HOOK
概述 上节已经按照Netfilter的框架实现自己的hook函数,下面说一下netfilter的HOOK的代码细节,先看一下之前的结构体 结构体&HOOK函数注册 struct nf_hook_ops { /* User fills in from here down. */ nf_hookfn *hook; struct net_devi…
抓取虚机的vmcore文件
我们云平台日常的虚机可能会出现虚机内部hang住或者死机的情况,无法登录虚机内部,对于调查定位问题难度很大,除了查看qemu和libvirt的日志,其他的手段有限,下面说一下个方法可以在宿主机dump虚机内部的vmcore文件,然后通过crash工具debug虚机内部问题,下面具体说说步骤。 查看虚机 zjp@zjp ~> virsh lis…