Тест Гилёва (далее ТГ). Виртуализация vs bare-metal?

Железо:
i9-9900k
Память: 64 ГБ, 2666 ГГц.
nvme 512 GB. (последовательное чтение 3500 МБ/с, последовательная запись 2000 МБ/с, рандомные запись и чтение около 70 МБ/с).

Гипервизор qemu/kvm на Arch Linux. Всё на LVM.
Виртуалка №1: Debian Linux, RAM 32GB; CPU host-passthrough. На ней: Сервер 1с последней сборки и posgresql-13 от
"1c postgres ру".

Виртуалка №2. винда10 с 1с-клиентом.

Запускаем конфу с ТГ.

Результаты ТГ - 20-22.
Файловая база - 40. (ради интереса создал RAM-диск, и туда поместил конфу с ТГ, результат такой же - 40, то есть дело не в дисковой подсистеме).

Окей, предположил, что косячит постгрес. Поднял виртуалку на win srv 2019, туда накатил mssql 2019. Создал базу с ТГ. Результат почти такой же, как в постгресе = 22-23.

Потом поставил винду на голое железо (то же самое железо, где был гипервизор и виртуалки).
ТГ показал в sql варианте - 53 бала!

Что может в гипервизоре вызывать такую просадку по ТГ? Несмотря на то, что тесты проца, памяти и дисков с помощью линуксовых инструментов, дают почти одинаковые результаты, что в линуксе на голом железе, что на виртуалке.
  • Вопрос задан
  • 1313 просмотров
Решения вопроса 2
Fragster
@Fragster
помогло? отметь решением!
Попугаи Гилева меряют проц и задержки между СУБД и сервером 1с (это основное, что влияет на результат).
Дисковую подсистему в клиент-серверном варианте немного меряет вторая часть, но там методика подсчета спорная, сначала определяет максимальную скорость записи путем увеличения размера одной порции записываемых данных, потом начинает молотить в несколько потоков пока скорость не упадет в 4, вроде, раза. Количество потоков, на котором это произошло - как бы максимальное число пользователей. Что, конечно, не так и сам этот показатель весьма синтетический.
Ответ написан
@GilevVyacheslav
1. Виртуальная среда дает штраф. В отдельных случаях заметный.
2. РАЗНЫЕ виртуалки (разных производителей или даже разных версий) дают РАЗНЫЙ ШТРАФ. Наименьший дают VMWare. Proxmoх и некоторые линуксовые дают наибольший.
3. Больше всего влияют настройки схемы электропитания виртуалки, затем квотирования ресурсов (включая процессор), далее "тонкий" виртуальный диск, далее наличие возможности динамического перераспределения ресурсов, настройки биоса для виртуализации, выставленных приоритетов для каждого из ресурсов, конкретная железка тоже может быть не приспособлена на виртуализации (виртуалка не распознает полноценно железо), в отдельных случаях виновата версия платформы 1С. И это не полный список.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@LuchS-lynx
инженер-ПТО
Пользуюсь для виртуализации Proxmox'ом (Debian Linux + KVM). Основные "потери" в моем случае это:
- с одной стороны эмуляционные виртуальных ядер, с другой, если пробрасывать host CPU ты все равно пробрасываешь не все ядра, что-то надо оставить хосту и/или другим виртуалкам. Для игр на своем i7-8700k я пробрасываю host CPU 8 потоков из 12, таким образом, по сути, в виртуалке у меня не i7-8700k, а скорее "условный i7-7700k", перемаркированный в диспетчере задач как i7-8700k, если сравнивать с нативным железом.

- Вторые потери это софтовый проброс HDD/SSD (а-ля sata1: volume=/dev/disk/by-id/ata-WDC_........ или подключение виртуального жесткого диска, который лежит на физическом), если максимальные скорости идут практически без просадок, то скорости чтения/записи средних и мелких блоков у меня просаживаются очень сильно, тут выход только пробрасывать внешний дисковый контроллер/RAID-контроллер с подключенными к ниму живыми HDD/SSD для установки системы/данных напрямую, правда останется вопрос по PCI-Express линиям на процессоре....

Вот моя установка, см. ролик:
https://www.youtube.com/watch?v=wjlmWHJiEug
«4:29 - тест виртуального жесткого диска» - это виртуальный HDD гостевой Винды, который лежит на системном SSD Kingston A400 2.5" 480Gb SATA III TLC SA400S37/480G
«5:10 - тест проброшенного в ВМ физического жесткого диска» - это проброшенный софтово HDD WD Red 4Tb WDC WD40EFRX
в обоих случаях идет дикая просадка по скорости чтения/записи для средних и малых блоков, при относительно нормальных скоростях чтения/записи больших блоков.

При этом в другой ВМ с физически проброшенным RAID-контроллером LSI SAS 9211-8i c 4-мя HDD WD Red 4Tb WDC WD40EFRX такого не наблюдается и там скорости такие-же, как и в нативной системе с виндой (правда в моем случае из-за недостатка линий PCI-Express на моей плате ВК в первом слоту не выдает все что ей полагается.

PS. драйвера все обновлял для виртуалки? Ядро линукса свежее? Как себя ведет тот же mysql на нативном железе под Arch Linux? На какой машине работаешь? У меня machine: q35
Ответ написан
Виртуализация -- это инструмент. Его применение должно быть обосновано с точки зрения целесообразности. А не по прихоти. Для какой именно цели предполагалось использование виртуализации?

Окей, предположил, что косячит постгрес.
Кажется на hi-load 2017 Илья Космодемьянский предостерегал использование простгри в виртуалках из-за возможных просадок в производительности дисковой подсистемы.
Ответ написан
Комментировать
@Gring76
Мой опыт.

Proxmox / ZFS ( немного тюненый, сжатие, измененный размер блока, но это дает небольшой прирост )
Виртуалка 2012R2 с 1С 8.3.xxx MSSQL 2016 (Система / БД / Логи от MSSQL / tempdb все по разным дискам и SSD)
Тест гилева показывается 26-28 в виртуалке и до 32-34 на голом железе.

1) Проверить скорость дисковой системы в вируалке и на голом железе. У меня разница в пределах 2-5 % .
2) Пробросить проц как есть, без всяких эмуляций. Для 1С важна скорость в одном потоке, а не к-во потоков. Привязать ядра, если есть такая возможность.
3) Выделить память без всяких shared / ballon ( или получим падение производительности от 30% )
Ответ написан
Комментировать
justhostRU
@justhostRU
>Что может в гипервизоре вызывать такую просадку по ТГ?
охтыж. сама винда?)
у неё нет слоя совместимости в ялре для линукс-хоста, это не родная система, как гостевой linux c агентом в ядре, в любом случае у неё будут просадки, т.к. сама МС не предоставила никакого программного решения для избежания потерь, интеграции с линукс-хостом. Она никак не взаимодействует с линукс-хостом, и пытается работать с процессором/ОЗУ/диском так будто находится bare metal.
и это по сути, будет частичное переделывание ядра NT.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы