Xen 中 VM 的写入速度很慢?

Xen 中 VM 的写入速度很慢?

我有一台运行 Xen 的服务器和几台虚拟机。我正在尝试设置一个专用于其中一台虚拟机的 RAID 阵列,该阵列将用于各种存储密集型用途。目前,当我从 domU(一个具有大量 vcpus 和内存的 Debian PV 客户机)写入时,我遇到了非常奇怪的性能下降。

目前,我的设置是,在 dom0 上有三个 3TB WD Red 硬盘,它们排列在 (软件) RAID 5 阵列中。目前,dom0 正在公开虚拟机上的/dev/mdX/dev/xvdb(VM 来自/dev/xvdaLVM 卷)。xen 配置的相关位:

disk = [ <LVM stuff for xvda>, 'phy:/dev/md0,xvdb,w' ]

/dev/md0上面有一个 ext4 文件系统,并且noatime, nodiratime使用了相关选项。当我从 domU 对文件系统进行速度测试时,我得到了如下结果:

# dd if=/dev/zero of=a_file bs=1M count=1024 conv=fsync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 16.2694 s, 66.0 MB/s
# dd if=some_other_noncached_file of=/dev/null bs=1M
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 26.379 s, 163 MB/s

然而,在 dom0 中,我得到:

# dd if=/dev/zero of=a_file_somewhere bs=1M count=1024 conv=fsync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 6.80677 s, 158 MB/s

... 显然,速度差异非常大。虽然 66 MB/s 目前应该足够好了,但如果有人能解释一下为什么我的写入性能会下降 60%,我将不胜感激。我预计会下降 10% 左右,但不会是 60%。

这不是 dom0 资源匮乏的问题,因为我给它的资源远远超过它应有的需要,但问题仍然存在。这也不是 domU 资源匮乏的问题,我已将 CPU 固定在同一 NUMA 节点上,结果还是一样。

以下是一些可能相关的内容xl info

host                   : <hostname>
release                : 3.16.0-4-amd64
version                : #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04)
machine                : x86_64
nr_cpus                : 24
max_cpu_id             : 63
nr_nodes               : 2
cores_per_socket       : 6
threads_per_core       : 2
cpu_mhz                : 2660
hw_caps                : bfebfbff:2c100800:00000000:00003f00:029ee3ff:00000000:00000001:00000000
virt_caps              : hvm
total_memory           : 24573
free_memory            : 12011
sharing_freed_memory   : 0
sharing_used_memory    : 0
outstanding_claims     : 0
free_cpus              : 0
xen_major              : 4
xen_minor              : 4
xen_extra              : .1
xen_version            : 4.4.1
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          : 
xen_commandline        : placeholder dom0_mem=8192M dom0_max_vcpus=8 dom0_vcpus_pin
cc_compiler            : gcc (Debian 4.9.2-10) 4.9.2
cc_compile_by          : ultrotter
cc_compile_domain      : debian.org
cc_compile_date        : Thu Jun 11 18:24:17 EEST 2015
xend_config_format     : 4

如果还有其他有用的信息,请告诉我,我会更新问题。

谢谢!

答案1

我已经看到 PV 客户机具有接近本机的磁盘性能,其中 MD 工作在 dom0 和 domU 级别完成。

如果可以,请尝试将客户机设置为半虚拟化(PV)而不是硬件虚拟机(HVM)。

此外,对于 PV 或 HVM,尝试将整个驱动器分配给客户机并让其处理 RAID 内容(MD)。

看看什么最适合你。

答案2

进一步的调查发现,这并不是一个独特的问题(例如https://bugzilla.redhat.com/show_bug.cgi?id=500145)。根据那里的一些建议,进一步的调查iostat显示,domU 上的平均写入大小低于 128KiB,而 dom0 上的平均写入大小约为 512KiB(通过除以wkB/s/得出w/s)。

谷歌搜索后发现,这是一个已知问题,修补于 12 月提交以“修复”该问题,方法是将内核模块参数的默认值xen_blkfront.max从 32 提升到 128。通过自己覆盖默认值(在 VM 的 GRUB 配置中),domU 上的写入速度从大约 65MiB/s 跃升至约 115MiB/s,这是一个足够的奖励,我不会再进一步​​研究了。

因此,虽然还有更多领域需要覆盖(从 115 MiB/s 到 dom0 速度 150 MiB/s),但主要烦人的部分已经修复,因此我将其标记为解决方案(一旦我可以)。我会更新任何我发现的能带来重大影响的调整或其他东西。

相关内容