QEMU - accel

Intro 查看QEMU文档,对Accelerator(加速器)的介绍如下: This is used to enable an accelerator. Depending on the target architecture, kvm, xen, hax, hvf, nvmm, whpx or tcg can be available. By default, tcg is used. If there is more than one accelerator specified, the next one is used if the previous one fails to initialize. 关于kvm, xen, hax, hvf, nvmm, whpx, tcg,以下内容总结自ChatGPT 3.5(Emmm,真好用): 技术/软件 描述 平台支持 虚拟化方式 KVM (Kernel-based Virtual Machine) 开源虚拟化解决方案,利用Linux内核虚拟化功能,在Linux上运行虚拟机 Linux 硬件虚拟化 Xen 基于微内核架构的开源虚拟化系统,支持多种客户机操作系统 多平台(特别在x86上常用) 硬件虚拟化或直接运行 HAX (Hardware Accelerated Execution) Intel提供的硬件加速执行技术,用于Android模拟器中的虚拟机 x86主机上运行ARM虚拟机 硬件加速虚拟化 HVF (Hypervisor....

August 5, 2023 · 1 min · Cyan

QEMU - smp (sockets, die, core, threads)

图片使用了smms图床,特殊网络下可能无法加载; qemu-system-x86_64 -M q35 -accel kvm -cpu host -m 4096 -smp 4 -drive file=drive 前置知识:超线程——任务管理器里展示的并不是真正的CPU 测试使用的CPU为英特尔® 酷睿™ i3-12100 处理器 (intel.cn),根据规格表,一共有4颗核心。而在htop中,可以看到8个CPU负载 是因为操作系统以CPU支持的线程数,作为逻辑核心展示,而不是物理核心; 当CPU启用超线程后,CPU 会在每个物理内核上公开两个执行上下文,一个物理内核现在就像两个“逻辑内核”一样,可以处理不同的软件线程; By taking advantage of idle time when the core would formerly be waiting for other tasks to complete, Intel® Hyper-Threading Technology improves CPU throughput.(协程和这个理念基本相同) What Is Hyper-Threading? - Intel 当然,超线程技术并不能让多核性能简单的x2,理想情况下可以带来20%至30%左右的性能(吞吐量)提升。 为虚拟机分配核心 QEMU使用-smp分配核心,使用方式: -smp [[cpus=]n][,maxcpus=maxcpus][,sockets=sockets][,dies=dies][,clusters=clusters][,cores=cores][,threads=threads] 可以简单理解为一颗叶子节点为线程(逻辑核心)的满二叉树: 逻辑处理器数量: $$ n=sockets*dies*clusters*cores*threads $$ 其中,maxcpus是QEMU为热插拔设置的属性,在此不展开; 参数 对应的物理对象 参数作用 sockets CPU插槽 CPU插槽数目 dies CPU晶片 每个CPU有几块承载核心的晶片 clusters 晶片上的CPU簇 / cores CPU核心 每簇包含几个CPU threads / 每个CPU核心通过超线程支持的线程数 常见写法:...

August 5, 2023 · 1 min · Cyan

QEMU - QuickStart

文章于2023年8月5日进行勘误,修正内容: -smp sockets=1,cores=4,threads=4 => -smp 4,sockets=1,cores=4,threads=1 原因:threads参数表示每核心多少线程 删除-net user Intro QEMU是一款跨平台的开源虚拟机工具,因为无GUI配置工具,有一定使用门槛 根据冯诺依曼结构,一个计算机可分为: 运算器 控制器 存储器 输入设备 输出设备 使用QEMU时,应该尽量往该模型联想 创建存储器 创建一个16G的虚拟磁盘文件 qemu-img create -f qcow2 drive 16G 虚拟硬件环境 运算器、控制器 -> CPU、各种加速器* 输入、输出设备 -> 网卡、CXL设备等 QEMU本身没有像VMware那样的GUI配置界面,所有配置通过命令行参数指定 qemu-system-x86_64 -machine q35 \ -smp 4,sockets=1,cores=4,threads=1 \ -m 4096 现在启动了一个机型为q35,处理器1插槽4核4线程,内存4096MB,使用默认网络配置的虚拟机,由于没有启动盘,并不会启动某个系统 利用虚拟硬件环境启动系统 我们已经有了一块硬盘drive作为启动盘,指定给虚拟环境: qemu-system-x86_64 -machine q35 \ -smp 4,sockets=1,cores=4,threads=1 \ -m 4096 \ -drive file=drive 会发现,指定后并没有什么区别,是因为这个“硬盘”我们没有给它“安装”系统 安装系统 参考为物理机安装系统: 物理机硬盘 -> 虚拟磁盘文件drive 安装媒介(写入了镜像的U盘) -> 系统镜像文件 qemu-system-x86_64 -machine q35 \ -smp 4,sockets=1,cores=4,threads=1 \ -m 4096 \ -drive file=drive \ -drive file=<系统镜像,如ubuntu-22....

July 30, 2023 · 1 min · Cyan

QEMU - CXL

Intro 文章不对CXL、Linux内核进行深究,可视为hello world研究 对于QEMU基本的使用知识,节省篇幅不再赘述,并省略繁琐细节 软件环境 宿主机&客户机 ubuntu-22.04.2-live-server-amd64 QEMU 8.0.3 https://download.qemu.org/qemu-8.0.3.tar.xz Download QEMU - QEMU 按照官方流程进行编译 启动虚拟机 qemu-system-x86_64 -M q35,cxl=on -accel kvm -cpu host -m 4096 -smp 4 -drive file=drive \ -object memory-backend-file,id=cxl-mem1,share=on,mem-path=/tmp/cxltest.raw,size=256M \ -object memory-backend-file,id=cxl-lsa1,share=on,mem-path=/tmp/lsa.raw,size=256M \ -device pxb-cxl,bus_nr=12,bus=pcie.0,id=cxl.1 \ -device cxl-rp,port=0,bus=cxl.1,id=root_port13,chassis=0,slot=2 \ -device cxl-type3,bus=root_port13,memdev=cxl-mem1,lsa=cxl-lsa1,id=cxl-pmem0 \ -M cxl-fmw.0.targets.0=cxl.1,cxl-fmw.0.size=4G 启动后应该可以在/dev目录下找到CXL文件 REF 在ubuntu上执行QEMU的编译安装_ubuntu安装qemu_田园诗人之园的博客-CSDN博客 linux报错:/bin/sh: 1: flex: not found scripts/Makefile.host:9: recipe for target ‘scripts/kconfig/lexe_锅锅是锅锅的博客-CSDN博客 How To Emulate CXL Devices using KVM and QEMU - Steve Scargall

July 25, 2023 · 1 min · Cyan