18.5.4. 配置专用的 IOThreads


要提高虚拟机(VM)上磁盘的输入/输出(I/O)性能,您可以配置专用的 IOThread,用于管理虚拟机磁盘的 IO 操作。

通常,磁盘的 I/O 操作是主 QEMU 线程的一部分,这可以降低虚拟机在密集 I/O 工作负载期间的响应。通过将 I/O 操作分离到专用的 IOThread,您可以显著提高虚拟机的响应和性能。

流程

  1. 如果所选的虚拟机正在运行,请关闭它。
  2. 在主机上,在虚拟机 XML 配置中添加或编辑 <iothreads> 标签。例如,要为 testguest1 虚拟机创建单个 IOThread

    # virsh edit <testguest1>
    
    <domain type='kvm'>
      <name>testguest1</name>
      ...
      <vcpu placement='static'>8</vcpu>
      <iothreads>1</iothreads>
      ...
    </domain>
    注意

    为获得最佳结果,请对主机上的每个 CPU 只使用 1-2 个 IOThreads

  3. 为虚拟机磁盘分配专用的 IOThread。例如,要将 ID 为 1IOThread 分配给 testguest1 虚拟机上的一个磁盘:

    # virsh edit <testguest1>
    
    <domain type='kvm'>
      <name>testguest1</name>
      ...
      <devices>
        <disk type='file' device='disk'>
          <driver name='qemu' type='raw' cache='none' io='native' iothread='1'/>
          <source file='/var/lib/libvirt/images/test-disk.raw'/>
          <target dev='vda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
        </disk>
        ...
      </devices>
      ...
    </domain>
    注意

    IOThread ID 从 1 开始,您必须将单个 IOThread 专用于一个磁盘。

    通常,要获得最佳性能,每个虚拟机有一个专用的 IOThread 就足够了。

  4. 使用 virtio-scsi 存储设备时,为 virtio-scsi 控制器分配一个专用的 IOThread。例如,要将 ID 为 1IOThread 分配给 testguest1 虚拟机上的一个控制器:

    # virsh edit <testguest1>
    
    <domain type='kvm'>
      <name>testguest1</name>
      ...
      <devices>
        <controller type='scsi' index='0' model='virtio-scsi'>
          <driver iothread='1'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
        </controller>
        ...
      </devices>
      ...
    </domain>

验证

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部