23.03.2017 14:27
OlegON
 
В последнее время стал разбираться с виртуализацией Windows, поскольку этот мусор еще иногда требуется. Под Linux вопросов вообще не возникает, можно вообще использовать LXC, если просто что-то погонять надо, но, в целом, QEMU вполне себе работающее средство и ядерное, по сравнению с VirtualBox.

Поставил чистую винду, еще при установке задал диск VirtIO и отдал дрова с соответствующего диска (пакет в Fedora называется virtio-win.noarch : VirtIO para-virtualized drivers for Windows). После установки дал винде покопаться на прицепленном CD-ROM (образе из этого пакета), чтобы взять оттуда дрова для Balloon, сетевухи (тоже в virtio-режиме, как все рекомендуют) и поставил с него же QEMU guest, который, впрочем, у меня пока и не запустился.

Наступил на грабли почти сразу.
Как поклонник BTRFS, положил образ на эту файловую систему. Диск у меня - старенький Samsung на 1Тб, но вполне себе выдает 30Мб/сек на чтение, например. Для виртуалки бы мне вполне хватило, с учетом кеширования. Но не тут-то было. Скорость болталась около 500Кб/сек и с жуткими провалами.

Я все глаза стер об iostat, скорость маленькая, количество запросов не очень большое, около 120, очередь небольшая, сервис-тайм небольшой, но при этом винда адски тормозит. Все икает, загрузка идет минуты три. Пробовал отключать кеширование виртуалки, крутил с raw и qcow2, отключал CoW, никак.

Пришлось поверить всей той куче записей "не ставьте виртуалки на BTRFS". Хотя кто-то писал, что у него все нормально. И я знаю, почему. Положил образ виртуалки на SSD. Это просто самолет стал. Никаких тебе проседаний и приседаний. На одной SSD средней древности, SATA3, все просто летает. И суть, похоже в параллельном доступе к BTRFS. Если копировать на диск виртуалку - скорость очень хорошая. Если виртуалка работает на диске и лезет к нему в несколько потоков, все становится очень плохо, если это не SSD. Но, кризис... SSD, чтобы протирать его виндой, у меня нет.

Сделал md-raid0, нарезал туда дисков. Отформатировал в ext4, как сказано здесь, замонтировал так
Код:
mount -o data=writeback,noatime,nodiratime,nobarrier,commit=300
в sysctl поставил
Код:
vm.vfs_cache_pressure = 1
vm.dirty_ratio = 50
vm.dirty_background_ratio = 1
и в rc.local (автозапуск) поставил
Код:
echo deadline>/sys/block/sdb/queue/scheduler
echo deadline>/sys/block/sdc/queue/scheduler
echo deadline>/sys/block/sde/queue/scheduler
/sbin/blockdev --setra 256 /dev/sdb
/sbin/blockdev --setra 256 /dev/sdc
/sbin/blockdev --setra 256 /dev/sde
винда, конечно, не как на SSD, но задышала.
23.03.2017 14:33
OlegON
 
В соответствии с многочисленными рекомендациями, кеширование и IO в QEMU были выставлены в none/native.
При этом Crystal Disk Mark показывал следующее.



поставил writeback для кеширования, io вообще убрал в конфиге (правил через virsh), подозреваю, что это в virt-manager значение default. И получил уже нечто другое.



Причем, значения не сильно менялись, если поставить 16 потоков, например.
23.03.2017 14:37
OlegON
 
Если вы такой ненормальный, чтобы запускать в виртуалке базу данных, то обязательно озаботьтесь Huge pages (transparent надо отключить и выдать какое-то фиксированное значение). В противном случае еще будет и сильная фрагментация памяти. Мне просто не нужна база в виртуалке, а машина десктопная и просто так вот отдать память я как-то не готов :)

Выделять, кстати, лучше одно ядро. В документации Red Hat это рекомендованная конфигурация. С несколькими ядрами QEMU запускается в несколько процессов, которые, кстати, пинают диск параллельно.

Вот, буду пополнять, если что-то найду. Большая просьба делиться и своими какими-то идеями...

Вот, например, полезная ссылка:
23.03.2017 22:44
OlegON
 
Попробовал один диск под BTRFS, writeback

24.03.2017 10:37
OlegON
 
В QEMU помимо чужих форматов, своих RAW и QCOW2, есть еще свой формат QED, который мало где описан, не описан даже на вики QEMU. Тем не менее, он значительно шустрее и RAW и QCOW2. И избавлен от проблем блокировок QCOW2. Могу порекомендовать.
03.04.2017 09:34
OlegON
 
Кстати, рекомендую еще очистку буфера отключить.



и обязательно spice guest agent поставить надо. Чтобы не запутаться, на одном диске, BTRFS, writeback cache, qed-формат, работает нормально.
Часовой пояс GMT +3, время: 14:05.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.