QEMU共享文件夹性能问题

QEMU共享文件夹性能问题

我有一个在 Ubuntu 18.04 主机 (QEMU 2.11) 上运行的 Windows 10 虚拟机。我已经使用命令行参数创建了一个共享文件夹-netdev type=user,id=smb0,smb=/mnt/ntfs,restrict=on -device virtio-net-pci,netdev=smb0。大多数情况下,磁盘工作得很好,但在某些使用情况下,它显示出非常慢的写入性能,如最后一次测试结果所示水晶磁盘标记(随机 4K、1 个队列、1 个线程):仅约 0.09 MB/s (22 IOPS)。

CrystalDiskMark 结果:4KiB Q1T1:0,089 MB/s

这在实践中也得到了体现:从 Autopano Giga 4.4 创建并保存 600 MB 全景图到共享驱动器需要 1 小时 45 分钟,而到普通驱动器则需要 1 分 30 秒。复制文件只需大约 5 秒。

我尝试过但没有明显改善的事情:

  • 将主机磁盘从 NTFS HDD 更改为 EXT4 SSD。
  • 修改临时 QEMU smb.conf 中的一些性能选项并使用smbcontrol all reload-config.
  • 更改网络的 QEMU 命令行选项(限制开/关、不同的设备类型等)。

这个性能问题可以解决吗?

更新

我想我已经将问题与 QEMU 的用户模式网络隔离。

我从 QEMU 命令行中删除了共享文件夹选项,并启动了一个普通的 Samba 服务器,配置基本相同。当我通过用户模式内部网络(//10.0.2.2/ -> 主机上的 127.0.0.1)安装驱动器时,性能问题仍然存在。当我使用外部(家庭网络)IP(//192.168.1.11/)通过另一个桥接(tap)网络设备安装它时,写入速度几乎达到 28 MB/s(6800 IOPS)!

阅读源代码发现CrystalDiskMark使用磁盘速度进行实际测试。如果我正确地破译了代码,则相关测试的命令行是:

diskspd -b4K -d5 -o1 -t1 -W0 -r -S -w100 -Z4K [file]

DiskSpd 有Linux版本,对于其中以下内容大部分是等效的:

diskspd -b4K -d5 -o1 -t1 -W0 -r -Sd -w100 -Zr [file]

为了排除 Samba 在环回接口上工作不良的可能性,我还在主机端测试了速度(使用 挂载mount -t cifs)。运行上述命令显示出出色的性能:90 MB/s 或 23000 IOPS;或禁用硬件缓冲 (-Sh) 的十分之一。

所以我认为罪魁祸首一定是QEMU用户网络。 Ubuntu 18.04 上的 QEMU 版本相当旧,我不知道这是否适用于最新版本。

由于桥接网络上的普通 Samba 服务器工作正常,我将使用它作为解决方法,尽管我更愿意使用内部共享文件夹机制:/

相关内容