Назад | Перейти на главную страницу

Медленно пишет для ВМ в Xen?

У меня есть сервер под управлением Xen и пара виртуальных машин. Я пытаюсь настроить RAID-массив, выделенный, в частности, для одной из виртуальных машин, который будет использоваться для различных целей с интенсивным хранением. В настоящее время у меня наблюдается очень странное падение производительности при записи из domU, который является гостевой системой Debian PV с большим количеством виртуальных процессоров и памяти.

Прямо сейчас установка такова, что у меня есть три жестких диска WD Red емкостью 3 ТБ, расположенных в (программном) массиве RAID 5 на dom0. В настоящее время dom0 раскрывает /dev/mdX блокировать как /dev/xvdb на виртуальной машине (на виртуальной машине /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 МБ / с должно быть достаточно на данный момент, я был бы очень признателен, если бы кто-нибудь мог дать объяснение, почему я теряю 60% своей производительности записи? Я бы ожидал примерно 10%, но не 60%.

Это не недостаток ресурсов dom0, потому что я давал ему значительно больше ресурсов, чем он должен был требовать, и проблема все еще возникает. Это также не недостаток ресурсов domU, и я закрепил процессоры, чтобы они оставались на одном узле 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

Если есть еще что-нибудь, что может быть полезно, дайте мне знать, и я обновлю вопрос.

Спасибо!

Еще одно расследование показало, что это не уникальная проблема (см., Например, https://bugzilla.redhat.com/show_bug.cgi?id=500145). Следуя некоторым предложениям, дальнейшее расследование с iostat показал, что средний размер записи на domU был где-то ниже 128 КБ, а на dom0 был около 512 КБ (найдено путем деления wkB/s / w/s).

Некоторые поисковые запросы выяснили, что это известная проблема с патч отправлено еще в декабре, чтобы «исправить» проблему, увеличив значение по умолчанию для параметра модуля ядра xen_blkfront.max от 32 до 128. Самостоятельно переопределив значение по умолчанию (в конфигурации GRUB для виртуальной машины), скорость записи на domU подскочила примерно с 65 МБ / с до 115 МБ / с, что является достаточным бонусом, что я не буду смотреть слишком много дальше.

Итак, хотя есть еще большая территория, которую нужно покрыть (от 115 МБ / с до скорости dom0 150 МБ / с), основная раздражающая часть была исправлена, поэтому я отмечаю это как решение (как только смогу). Я буду обновлять любые настройки или еще много чего, что я найду, которые окажут значительное влияние.

Я видел почти собственную производительность диска с гостевыми PV, при этом работа MD выполняется как на уровне dom0, так и на уровне domU.

По возможности попробуйте настроить гостевую систему как паравиртуализированную (PV) вместо аппаратной виртуальной машины (HVM).

Кроме того, для PV или HVM попробуйте назначить гостю все диски и поручить ему обрабатывать данные RAID (MD).

Посмотрите, что лучше всего подходит для вас.