我有一台运行 Xen 的服务器和几台虚拟机。我正在尝试设置一个专用于其中一台虚拟机的 RAID 阵列,该阵列将用于各种存储密集型用途。目前,当我从 domU(一个具有大量 vcpus 和内存的 Debian PV 客户机)写入时,我遇到了非常奇怪的性能下降。
目前,我的设置是,在 dom0 上有三个 3TB WD Red 硬盘,它们排列在 (软件) RAID 5 阵列中。目前,dom0 正在公开虚拟机上的/dev/mdX
块/dev/xvdb
(VM 来自/dev/xvda
LVM 卷)。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),但主要烦人的部分已经修复,因此我将其标记为解决方案(一旦我可以)。我会更新任何我发现的能带来重大影响的调整或其他东西。