虚拟化调试和优化指南

概述

参考:

网卡软中断过高问题

原文连接: https://mp.weixin.qq.com/s/X3wsJ13V-ou7j8qccd30AA

游戏网关高峰期时出网络丢包,CPU0 软中断%sys 高达 90%。

这意思就是说多个 CPU 中,只有 1 个来处理软中断信号

使用 ethtool -l eth0 查看网卡队列数,若网卡不支持多多列,将会报错: netlink error: Operation not supported

配置网卡多队列

参考:

要使用多队列 virtio-net,请在 VM 的 XML 配置中添加以下内容(主要是添加 queues='N',其中 N 的值从 1 到 256,因为内核支持多队列 tap 设备)支持 256 个队列:

<interface type='network'>
      <source network='default'/>
      <model type='virtio'/>
      <driver name='vhost' queues='N'/>
</interface>

当在 VM 中运行带有 N virtio-net 队列的虚拟机时,使用以下命令( M 的值从 1 到 N)启用多队列支持 :

# ethtool -L eth0 combined M

比如在一个桥设备上,添加 8 个队列

    <interface type='bridge'>
      <mac address='52:54:00:29:39:61'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <driver name='vhost' queues='8'/> # 添加该行
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>

配置磁盘缓存

参考:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html-single/virtualization_tuning_and_optimization_guide/index#sect-Virtualization_Tuning_Optimization_Guide-BlockIO-Caching

        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2' cache='none'/> # 添加cache='none'
          <source file='/var/lib/libvirt/images/iptv-unc-haproxy-1.qcow2'/>
          <target dev='vda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
        </disk>

经测试

node 类型 dd 命令速度为 不到 500MB/s

writeback 类型 de 命令速度为 不到 300MB/s


最后修改 September 3, 2024: 中断, perf (51dbc4de)