欢迎光临散文网 会员登陆 & 注册

[QEMU]标准选项(1)

2022-07-25 21:28 作者:-小白之家-  | 我要投稿
  • -h

  • 显示帮助并退出

  • -version

  • 显示版本信息并退出

  • -machine [type=]name[,prop=value[,...]]

  • 按名称选择模拟计算机。用于列出可用计算机。-machine help

    对于旨在支持跨版本的实时迁移兼容性的体系结构,每个版本都将引入新版本的计算机类型。例如,2.8.0 版本为 x86_64/i686 体系结构引入了计算机类型“pc-i440fx-2.8”和“pc-q35-2.8”。

    要允许来宾从 QEMU 版本 2.8.0 实时迁移到 QEMU 版本 2.9.0,2.9.0 版本也必须支持“pc-i440fx-2.8”和“pc-q35-2.8”计算机。为了允许用户实时迁移 VM 在升级时跳过多个中间版本,新版本的 QEMU 将支持许多以前版本中的计算机类型。

    支持的计算机属性包括:

    • accel=accels1[:accels2[:...]]

    • 这用于启用加速器。根据目标架构的不同,可以使用 kvm、xen、hax、hvf、nvmm、whpx 或 tcg。默认情况下,使用 tcg。如果指定了多个加速器,则在前一个加速器无法初始化时,将使用下一个加速器。

    • vmport=on|off|auto

    • 启用VMWare IO端口的仿真,对于 vmmouse 等,自动说根据 accel 选择值。对于 accel=xen,默认值为关闭,否则默认值为打开。

    • dump-guest-core=on|off

    • 在核心转储中包含来宾内存。默认值为打开。

    • mem-merge=on|off

    • 启用或禁用内存合并支持。当主机支持此功能时,它会在 VM 实例之间消除相同的内存页(默认情况下处于启用状态)。

    • aes-key-wrap=on|off

    • 在 s390-ccw 主机上启用或禁用 AES 密钥包装支持。此功能控制是否将创建 AES 包装密钥以允许执行 AES 加密功能。默认值为打开。

    • dea-key-wrap=on|off

    • 在 s390-ccw 主机上启用或禁用 DEA 密钥包装支持。此功能控制是否将创建 DEA 包装密钥以允许执行 DEA 加密功能。默认值为打开。

    • nvdimm=on|off

    • 启用或禁用 NVDIMM 支持。默认值为关闭。

    • memory-encryption=

    • 要使用的内存加密对象。默认值为无。

    • hmat=on|off

    • 启用或禁用 ACPI 异构内存属性表 (HMAT) 支持。默认值为关闭。

    • memory-backend='id'

    • 传统和选项的替代方案。允许使用内存后端作为主 RAM。-mem-pathmem-prealloc

      例如:

      -object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on-machine memory-backend=pc.ram-m 512M

      迁移兼容性说明:

      • 作为后端id,如果预期迁移到/从旧的QEMU(<5.0)迁移,则应使用按机器类型通告的“default-ram-id”值(可通过QMP命令获得)。query-machines

      • 对于计算机类型 4.0 及更早版本,如果需要迁移到/从旧 QEMU (<5.0) 迁移,则用户应使用后端选项。x-use-canonical-path-for-ramblock-id=off

      例如:

      -object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off-machine memory-backend=pc.ram-m 512M
    • cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity]

    • 定义 CXL 固定内存窗口 (CFMW)。

      在 CXL 2.0 ECN 中描述:CEDT CFMWS & QTG _DSM。

      它们是系统上主机物理地址 (HPA) 的区域,可以在一个或多个 CXL 主机网桥上交错。系统软件会将特定设备分配到这些窗口中,并在启用内存设备之前,在根端口、交换机端口和设备中适当地配置下游主机托管设备内存 (HDM) 解码器,以满足交错要求。

      targets.X=target提供到 CXL 主机网桥的映射,这些网桥可由 -device 条目中提供的 id 标识。当固定内存窗口表示交错内存时,需要多个条目来指定所有目标。X 是从 0 开始的目标索引。

      size=size设置 CFMW 的大小。这必须是 256MiB 的倍数。该区域将对齐到 256MiB,但位置取决于平台和配置。

      interleave-granularity=granularity设置交错的粒度。默认值为 256KiB。仅支持 256KiB、512KiB、1024KiB、2048KiB 4096KiB、8192KiB 和 16384KiB 粒度。

      例:

      -machine cxl-fmw.0.targets.0=cxl.0,cxl-fmw.0.targets.1=cxl.1,cxl-fmw.0.size=128G,cxl-fmw.0.interleave-granularity=512k
  • sgx-epc.0.memdev=@var{memid},sgx-epc.0.node=@var{numaid}

  • 定义新交所EPC部分。

  • -cpu model

  • 选择 CPU 型号(用于列表和其他功能选择)-cpu help

  • -accel name[,prop=value[,...]]

  • 这用于启用加速器。根据目标架构的不同,可以使用 kvm、xen、hax、hvf、nvmm、whpx 或 tcg。默认情况下,使用 tcg。如果指定了多个加速器,则在前一个加速器无法初始化时,将使用下一个加速器。

    • igd-passthru=on|off

    • 当 Xen 正在使用时,此选项控制英特尔集成图形设备是否可以传递到客户机(默认为 off)

    • kernel-irqchip=on|off|split

    • 控制 KVM 内核 irqchip 支持。默认值为中断控制器的完全加速。在 x86 上,拆分 irqchip 可减少内核攻击面,但非 MSI 中断会降低性能成本。不建议完全禁用内核中的 irqchip,除非用于调试目的。

    • kvm-shadow-mem=size

    • 定义 KVM 阴影 MMU 的大小。

    • split-wx=on|off

    • 控制对 TCG 代码生成缓冲区使用拆分 w^x 映射。某些操作系统要求启用此功能,在这种情况下,这将默认打开。在其他操作系统上,这将默认关闭,但可以启用此功能以进行测试或调试。

    • tb-size=n

    • 控制 TCG 转换块缓存的大小(以 MiB 为单位)。

    • thread=single|multi

    • 控制 TCG 线程数。当 TCG 是多线程的时,每个 vCPU 将有一个线程,因此可以利用额外的主机内核。默认设置是启用多线程,其中后端和前端都支持它,并且没有启用不兼容的TCG功能(例如icount/replay)。

    • dirty-ring-size=n

    • 使用 KVM 加速器时,它控制每个 vCPU 脏页环形缓冲区的大小(每个 vCPU 的条目数)。它应该是 2 的幂值,并且应该是 1024 或更大(但仍然小于内核支持的最大值)。4096可能是一个很好的初始值,如果你不知道哪个是最好的。将此值设置为 0 可禁用该功能。默认情况下,此功能处于禁用状态(脏环大小 = 0)。启用后,KVM 将改为在位图中记录脏页。

  • -smp [[cpus=]n][,maxcpus=maxcpus][,sockets=sockets][,dies=dies][,clusters=clusters][,cores=cores][,threads=threads]

  • 使用最初存在于机器类型板上的“”CPU 模拟 SMP 系统。在支持 CPU 热插拔的主板上,可以设置可选的 '' 参数,以便在运行时添加更多 CPU。如果省略这两个参数,将从提供的拓扑成员中计算 CPU 的最大数量,并且初始 CPU 计数将与最大数量匹配。当只给出其中一个时,省略的那个将被设置为其对应物的值。可以同时指定这两个参数,但 CPU 的最大数量必须等于或大于初始 CPU 计数。CPU 拓扑层次结构的乘积必须等于 CPU 的最大数量。这两个参数都受制于由所选特定机器类型确定的上限。nmaxcpus

    若要控制 CPU 拓扑信息的报告,可以指定拓扑参数的值。计算机可能仅支持参数的子集,不同的计算机可能具有不同的子集,这些子集根据相应 CPU 目标的容量而有所不同。因此,对于特定的机器类型板,可以通过支持的子选项定义预期的拓扑层次结构。除了子选项之外,还可以提供不受支持的参数,但为了正确解析,必须将其值设置为 1。

    必须指定初始 CPU 计数或至少一个拓扑参数。指定的参数必须大于零,不允许使用“cpus=0”等显式配置。任何省略参数的值将从给定的参数中计算出来。

    例如,以下子选项为仅支持套接字/内核/线程的计算机定义了 CPU 拓扑层次结构(计算机上总共 2 个套接字,每个套接字 2 个内核,每个内核 2 个线程)。可以省略该选项的某些成员,但将自动计算其值:

    -smp 8,sockets=2,cores=2,threads=2,maxcpus=8

    以下子选项为支持套接字/芯片/内核/线程的 PC 机器定义了 CPU 拓扑层次结构(机器上总共 2 个插槽,每个插槽 2 个芯片,每个芯片 2 个内核)。

    -smp 16,sockets=2,dies=2,cores=2,threads=2,maxcpus=16

    以下子选项为支持套接字/集群/内核/线程的 ARM virt 机器定义了 CPU 拓扑层次结构(计算机上总共 2 个套接字,每个套接字 2 个集群,每个集群 2 个内核)。

    -smp 16,sockets=2,clusters=2,cores=2,threads=2,maxcpus=16

    从历史上看,在计算缺失值时优先考虑最粗糙的拓扑参数(即套接字优先于内核,内核优先于线程),但是,这种行为被认为容易改变。在 6.2 之前,首选是套接字优先于内核而不是线程。从 6.2 开始,首选是内核而不是套接字而不是线程。

    例如,以下选项定义了一个机板,在 6.2 之前有 2 个 1 核插槽,在 6.2 之后有 1 个 2 核插槽:

    -smp 2
  • -numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator]


  • -numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator]


  • -numa dist,src=source,dst=destination,val=distance


  • -numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]


  • -numa hmat-lb,initiator=node,target=node,hierarchy=hierarchy,data-type=tpye[,latency=lat][,bandwidth=bw]


  • -numa hmat-cache,node-id=node,size=size,level=level[,associativity=str][,policy=str][,line=size]

  • 定义 NUMA 节点并为其分配 RAM 和 VCPU。设置从源节点到目标节点的 NUMA 距离。为给定节点设置 ACPI 异构内存属性。

    旧版 VCPU 分配使用“”选项,其中 firstcpu 和 lastcpu 是 CPU 索引。每个“”选项表示 CPU 索引的连续范围(如果省略 lastcpu,则表示单个 VCPU)。一组不连续的 VCPU 可以通过提供多个“”选项来表示。如果所有节点上都省略了 “”,则 VCPU 会自动在它们之间拆分。cpuscpuscpuscpus

    例如,以下选项将 VCPU 0、1、2 和 5 分配给 NUMA 节点:

    -numa node,cpus=0-2,cpus=5

    “”选项是“”选项的新替代方法,它使用“”属性将 CPU 对象分配给使用 CPU 的拓扑布局属性的节点。属性集是特定于计算机的,并且取决于已使用的计算机类型/'''选项。可以使用“”监视器命令对其进行查询。'' 属性指定将分配给 CPU 对象的节点,在与 '' 选项一起使用之前,需要使用 '' 选项声明节点。cpucpussocket-id|core-id|thread-idsmphotpluggable-cpusnode-idnodecpu

    例如:

    -M pc \-smp 1,sockets=2,maxcpus=2 \-numa node,nodeid=0 -numa node,nodeid=1 \-numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1

    旧版“”为节点分配给定的 RAM 量(5.1 和更新的计算机类型不支持)。'' 将 RAM 从给定的内存后端设备分配给节点。如果所有节点中都省略了“”和“”,则 RAM 将在它们之间平均分配。memmemdevmemmemdev

    “”和“”是互斥的。此外,如果一个节点使用 '',则所有节点都必须使用它。memmemdevmemdev

    “”是一个附加选项,指向对此 NUMA 节点具有最佳性能(最低延迟或最大带宽)的启动器 NUMA 节点。请注意,仅当计算机属性“hmat”设置为“on”时,才能设置此选项。initiator

    下面的示例创建一个具有 2 个 NUMA 节点的计算机,节点 0 具有 CPU。节点 1 只有内存,其发起方是节点 0。请注意,由于节点 0 具有 CPU,因此默认情况下,节点 0 的发起方是自身,并且必须是自身。

    -machine hmat=on \-m 2G,slots=2,maxmem=4G \-object memory-backend-ram,size=1G,id=m0 \-object memory-backend-ram,size=1G,id=m1 \-numa node,nodeid=0,memdev=m0 \-numa node,nodeid=1,memdev=m1,initiator=0 \-smp 2,sockets=2,maxcpus=2  \-numa cpu,node-id=0,socket-id=0 \-numa cpu,node-id=0,socket-id=1

    源和目标是 NUMA 节点 ID。距离是从源到目标的 NUMA 距离。从节点到自身的距离始终为 10。如果为任何一对节点指定一个距离,则必须为所有节点对指定距离。虽然,当每对节点仅在一个方向上给出距离时,则假定相反方向的距离是相同的。但是,如果甚至为一个节点对给定一个不对称的距离对,则必须为两个方向提供所有节点对的距离值,即使它们是对称的。当一个节点无法从另一个节点到达时,将该对的距离设置为 255。

    请注意,- 选项不会分配任何指定的资源,它只是将现有资源分配给 NUMA 节点。这意味着仍然必须使用 ,选项分别分配 RAM 和 VCPU。numa-m-smp

    使用“”在 ACPI 异构属性内存表 (HMAT) 中设置启动器和目标 NUMA 节点之间的系统局部性延迟和带宽信息。发起方 NUMA 节点可以创建内存请求,通常它具有一个或多个处理器。目标 NUMA 节点包含可寻址内存。hmat-lb

    在“”选项中,节点是 NUMA 节点 ID。层次结构是目标 NUMA 节点的内存层次结构:如果层次结构是“内存”,则结构表示内存性能;如果层次结构是“第一级|二级|三级”,则此结构表示每个域的内存端缓存的聚合性能。“数据类型”的类型是此结构实例表示的数据类型:如果“层次结构”是“内存”,“数据类型”是目标内存的“访问|读|写”延迟或“访问|读|写”带宽;如果“层次结构”是“第一级|第二级|第三级”,“数据类型”是目标内存端缓存的“访问|读|写”命中延迟或“访问|读取|写入”命中带宽。hmat-lb

    lat 是以纳秒为单位的延迟值。bw 是带宽值,可能的值和单位是 NUM[M|G|T],表示带宽值为每秒 NUM 字节数(或 MB/s、GB/s 或 TB/s,具体取决于使用的后缀)。请注意,如果延迟或带宽值为 0,则表示未提供相应的延迟或带宽信息。

    在''选项中,node-id是内存所属的NUMA-ID。size 是内存端缓存的大小(以字节为单位)。level 是此结构中描述的缓存级别,请注意,缓存级别 0 不应与 '' 选项一起使用。关联性是缓存关联性,可能的值为“none/direct(direct-mapped)/complex(complex cache indexing)”。策略是写入策略。行是缓存行大小(以字节为单位)。hmat-cachehmat-cache

    例如,以下选项描述 2 个 NUMA 节点。节点 0 有 2 个 cpu 和一个 ram,节点 1 只有一个 ram。节点 0 中的处理器访问节点 0 中的内存,访问延迟为 5 纳秒,访问带宽为 200 MB/s;NUMA 节点 0 中的处理器访问 NUMA 节点 1 中的内存,访问延迟为 10 纳秒,访问带宽为 100 MB/s。对于内存端缓存信息,NUMA 节点 0 和 1 都有 1 级内存缓存,大小为 10KB,策略为回写,缓存行大小为 8 字节:

    -machine hmat=on \-m 2G \-object memory-backend-ram,size=1G,id=m0 \-object memory-backend-ram,size=1G,id=m1 \-smp 2,sockets=2,maxcpus=2 \-numa node,nodeid=0,memdev=m0 \-numa node,nodeid=1,memdev=m1,initiator=0 \-numa cpu,node-id=0,socket-id=0 \-numa cpu,node-id=0,socket-id=1 \-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M \-numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 \-numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M \-numa hmat-cache,node-id=0,size=10K,level=1,associativity=direct,policy=write-back,line=8 \-numa hmat-cache,node-id=1,size=10K,level=1,associativity=direct,policy=write-back,line=8


[QEMU]标准选项(1)的评论 (共 条)

分享到微博请遵守国家法律