Низкая скорость дисков у виртуальных машин

При включенной реплики Hyper-v падает скорость записи диска

Все новые темы

Список форумов SYSAdmins.RU -> ВИРТУАЛИЗАЦИЯ
Автор
djvini2012
Новичок

Зарегистрирован: 09.05.2020
Пользователь #: 173,903
Сообщения: 17

Добавлено: Пт 22 Май, 2020 13:16 Заголовок сообщения: При включенной реплики Hyper-v падает скорость записи диска
Вернуться к началу
Зарегистрируйтесь и реклама исчезнет!
ADMINDM
guru

Зарегистрирован: 04.11.2007
Пользователь #: 63,218
Сообщения: 6894


Голоса: 218

Добавлено: Пт 22 Май, 2020 13:24 Заголовок сообщения:
_________________
Если помог мой ответ — щёлкните по ссылке :
http://sysadmins.ru/reputation.php?a=add&u=63218&p=13191050&c=ac4064c1
«Знание некоторых принципов легко возмещает незнание некоторых фактов»
Вернуться к началу
nickcorp78
Участник форума

Зарегистрирован: 04.06.2015
Пользователь #: 157,091
Сообщения: 152


Голоса: 2

Добавлено: Пт 22 Май, 2020 13:28 Заголовок сообщения:
_________________
Ох уж эти сказочки. Ох уж эти сказочники! (с) Усатый.
Вернуться к началу
djvini2012
Новичок

Зарегистрирован: 09.05.2020
Пользователь #: 173,903
Сообщения: 17

Добавлено: Пт 22 Май, 2020 14:26 Заголовок сообщения:
Вернуться к началу
djvini2012
Новичок

Зарегистрирован: 09.05.2020
Пользователь #: 173,903
Сообщения: 17

Добавлено: Пт 22 Май, 2020 14:32 Заголовок сообщения:
Вернуться к началу
nickcorp78
Участник форума

Зарегистрирован: 04.06.2015
Пользователь #: 157,091
Сообщения: 152


Голоса: 2

Добавлено: Пт 22 Май, 2020 22:05 Заголовок сообщения:
_________________
Ох уж эти сказочки. Ох уж эти сказочники! (с) Усатый.
Вернуться к началу
djvini2012
Новичок

Зарегистрирован: 09.05.2020
Пользователь #: 173,903
Сообщения: 17

Добавлено: Сб 23 Май, 2020 0:33 Заголовок сообщения:
Вернуться к началу
ADMINDM
guru

Зарегистрирован: 04.11.2007
Пользователь #: 63,218
Сообщения: 6894

Ужасная производительность диска VirtualBox (РЕШЕНО)

Производительность виртуальной машины зависит от выделенной ей ресурсов (количество ядер центрального процессора, количество оперативной памяти) и от количества запущенных программ в виртуальной машине и их требовательности к ресурсам. Это логично и работает примерно так, как интуитивно ожидается.

Но при интенсивном использовании диска в виртуальной машине её производительность падает непропорционально драматически. Например, установка пакета, содержащего большое количество файлов, в гостевой машине Linux может растянуться на часы! Это при том, что аналогичный пакет на реальном компьютере устанавливается за минуты. Обновление Windows могут замедлить работу виртуальной машины до полной её неработоспособности.

Всё это замедляет работу и портит опыт работы с виртуальными машинами.

Данную проблему можно исправить, включив «Кэширования ввода/вывода» для виртуального диска.

Чтобы включить «Кэширования ввода/вывода»:

  1. Выключите виртуальную машину, если она включена
  2. Откройте диалоговое окно настроек виртуальной машины.
  3. Перейти в «Носители»
  4. Щёлкните контроллер «Контроллер: SATA».
  5. Включите параметр «Кэширования ввода/вывода».

Вы также можете проверить любые другие контроллеры и/или диски, чтобы увидеть, есть ли там эта опция.

Сохраните настройки и запустите виртуальную машину, и вы увидите большое улучшение производительности при интенсивном использовании диска.

Есть объяснение, почему эта нужная опция по умолчанию выключена — у неё есть некоторые недостатки. Если коротко, авторы VirtualBox исходят из концепции «безопасность важнее производительности». Рассмотрим подробнее, какие последствия может нести включение этой опции:

1. Отложенная запись через кэш ОС хоста менее безопасна. Когда гостевая ОС записывает данные, она считает данные записанными, даже если они фактически ещё не прибыли на физический диск. Если по какой-то причине запись не произойдёт (сбой питания, сбой хоста), вероятность потери данных увеличивается.

2. Файлы образов дисков обычно очень большие. Кеширование их может поэтому быстро израсходовать весь кэш ОС хоста. В зависимости от эффективности кэширования ОС хоста, это может сильно замедлить работу хоста, особенно, если несколько виртуальных машин работают одновременно. Например, в Linux хостах, кэширование хоста может привести к тому, что Linux отложит все записи до момента, когда кэш хоста почти заполнен, и затем все эти изменения записываются в один раз, это может привести к остановке выполнение виртуальной машины на несколько минут. А это в свою очередь может привести к ошибке ввода-вывода в гостевой системе, поскольку время запросов ввода-вывода истекло.

3. Напрасно расходуется физическая память, поскольку в гостевых операционных системах обычно имеются собственные кеши ввода-вывода, что может привести к двойному кэшированию (как в гостевой, так и в хост машинах) без особого положительного эффекта.

Даже если отключить кэширование ввода-вывода хоста по указанным выше причинам, VirtualBox использует свой собственный небольшой кеш для буферизации записи, но не чтения кэширование, поскольку это обычно уже выполняется гостевой ОС. Кроме того, VirtualBox полностью поддерживает асинхронный ввод-вывод для своих виртуальных контроллеров SATA, SCSI и SAS через несколько потоков ввода-вывода.

На самом деле практика показывает, что данные не теряются, а включение данной настройки отлично сказывается на производительность.

Кроме описанного способа есть ещё один вариант для продвинутых пользователей. Суть в том, что в качестве диска виртуальной машины используется реальный USB диск. С такого диска можно загрузиться как в VirtualBox, так и на физическом компьютере. При этом производительность приближается к работе реального компьютера — никаких задержек, операции обновления и установки больших пакетов происходят с той же скоростью, как на реальном компьютере. О том, как это сделать, смотрите в статье «Как в VirtualBox загрузиться с USB».

[VirtualBox] Производительность дисковой системы

Люди знающие, подскажите — почему (по крайней мере у меня) в виртуалбоксе скорость дисковой подсистемы примерно в 2-3 раза ниже чем на хосте?

Причем, если мне не изменяет память, в старых версиях (настолько старых что уже даже не помню, чуть ли не в 1.х) вроде бы было нормально.

Проц поддерживает аппаратную виртуализацию (VT-x), её включение к росту скорости не приводит (скорее даже становится хуже, но в пределах погрешности).

1. Установить Guest Additions в гостевую ОС
2. Уйти на QEMU-KVM-libvirt и использовать virtio 🙂

Файл, который образ диска, фрагментирован. Особенно касается динамически расширяемых.

>1. Установить Guest Additions в гостевую ОС

Кстати, вполне возможно — ибо сравнивал я без них.

2. Уйти на QEMU-KVM-libvirt и использовать virtio 🙂

VirtualBox мне нравится больше всего лишь тем, что он быстро разворачивается (поставил два пакета и вперед) + удобное GUI из коробки. Если подскажешь хороший GUI к QEMU-KVM — буду очень рад 🙂

Файл, который образ диска, фрагментирован. Особенно касается динамически расширяемых.

Это первое что я подумал, но дело таки не в этом (проверял, выделив отдельный раздел под образ, и делал его статического размера — разница есть некоторая, но в пределах погрешности).

Если 32 бит и Windows XP, то надо было ставить XP без IO-APIC.

> хороший GUI к QEMU-KVM

libvirt, virt-manager и virt-viewer

Re: [VirtualBox] Производительность дисковой системы

QEMU-KVM-libvirt и использовать virtio

И что можно получить?

Re: [VirtualBox] Производительность дисковой системы

Да, с такими советами но-дашу нужно отправить на три буквы.

> VirtualBox мне нравится больше всего лишь тем, что он быстро разворачивается (поставил два пакета и вперед) + удобное GUI из коробки. Если подскажешь хороший GUI к QEMU-KVM — буду очень рад 🙂

Слушай их больше. Это Qemu — наколенная поделка. А то, что виртуальная машина медленнее хоста, так уж извините. По-моему это естественный факт.

> в виртуалбоксе скорость дисковой подсистемы примерно в 2-3 раза ниже чем на хосте?

а как по-другому? Файл с образом диска живёт на журналируемой файловой системе, запись на которую в два раз реальной скорости диска (потому что всё пишется два раза, сначала в журнал, потом в FS). В QEMU/KVM можно использовать реальный partition, там должно быть с этим получше.

Как-то тестил 7 в боксе, там там проходил встроенный тест производительности, так у жесткого диска было около 6, у людей в рейде на винде такого нет, а тут на одиночном диске в файле столько, но думаю тут сыграло кеширование данных. Ну а вообще да, раньше у бокса скорость как-то получше было, а на слабенькой тачке гонял в вируталке линуксы и не жаловался, теперь же сплошные тормоза.

Re: [VirtualBox] Производительность дисковой системы

Ничего что VBox, xen, kvm используют код qemu для IO?

> kvm используют код qemu

скорее наоборот, разве kvm — это не всего лишь «эмулятор» одного из устройств (CPU) используемый в виртуальной машине? Сама VM по-прежнему QEMU, и в ней можно использовать и другие эмуляторы CPU, и вроде kqemu по производительности kvm не уступает.

> это не всего лишь «эмулятор» одного из устройств (CPU)

и в ней можно использовать и другие эмуляторы CPU,

и вроде kqemu по производительности kvm не уступает.

это на каком заборе написано?

короче столько откровенного бреда в один абзац еще нужно было постараться вопхнуть))))

> Файл с образом диска живёт на журналируемой файловой системе, запись на которую в два раз реальной скорости диска (потому что всё пишется два раза, сначала в журнал, потом в FS)

Неправильно. По умолчанию, в журнал пишутся только изменения метаданных. Содержимое файла в журнал не пишется.

>> это не всего лишь «эмулятор» одного из устройств (CPU)

KVM ниразу не эмулятор CPU

потому и написано в кавычках. А как короче сказать? «Виртуальное устройство которое предоставляет функции оригинала, совсем как эмулятор, но на самом деле совсем и не эмулятор»?

на http://lwn.net соответствующую статью читал

но ведь это все не правильно, в смысле ваш первый пост

kvm — гипервизор под присмотром которого выполняется код. никакой эмуляции cpu тут нет и быть не может, так как код выполняется нативно (ну или кроме режима real-mode на intel, что не важно), а гипервизор не дает ему выходить за некоторые рамки (образно говоря)

реальное железо использовать нельзя, точней его нужно хотя бы разделять, потому оно эмулируеся с помощью частей qemu, о чем и сказал sdio

сама VM уже не qemu «ниразу». есть только гипервизор kvm, перехватывающий некоторые вещи и эмулирующий их с помощью кода qemu. так кстати делают и остальные гипервизоры

тут уже есть и возможность «пробрасывать» реальные устройства, то есть переназначать адреса ввода-вывода (отдавать их гипервизору).

ну и на последок — kqemu работает по иному принципу (влом перечислять) и он гораздо более тормозной, особенно в случае с несколькими cpu.

то есть ваше предположение «разве kvm — это не всего лишь „эмулятор“ одного из устройств (CPU)» неверно, мягко говоря. а вот sdio прав на все 100 — kvm иногда использует части qemu для эмуляции устройств (там от qemu лишь i/o)

Re: [VirtualBox] Производительность дисковой системы

Кроме того, при виртуальном диске в файле, а не реальном разделе, я получил в результате того же dd скорость порядка 43Mb/s, за счет того что весь io-wait переложился на HOST, так как всё попало в его дисковый кеш и потом уже было сброшено на диск.

Так что при не постоянной дисковой активности гостя, лучше диск делать в виде файла, а не раздела.

Читайте также:  Фильтры помех для автомобиля
Оцените статью