Вопрос или проблема
Я запустил виртуальную машину Hyper-V на своем рабочем компьютере, чтобы провести некоторые тесты. Виртуальная машина работает на том же оборудовании, что и физическая машина. Я заметил, что мое приложение запускается в 2 раза быстрее, когда оно работает на виртуальной машине. Обе машины, и виртуальная, и физическая, работают на Windows 11 версия 24H2.
Моя первая мысль была, что у меня проблема с моим программным обеспечением, и я начал профилировать. Я заметил, что ни один метод не выполняется быстрее, но все вызовы методов значительно быстрее.
Вторая моя мысль была о том, что, возможно, антивирусное программное обеспечение на физической машине может это вызывать. Я проверил, и на обеих машинах работает MS Defender. Отключение/включение не дает разницы.
Затем я попытался установить все инструменты разработки с физической машины на ВМ, потому что я думал, что они как-то устанавливают ненужное ПО, которое может замедлять производительность. Я это сделал, и ВМ все еще быстрее. Я пытался провести все тесты с выключенной виртуальной машиной, но физическая машина не становилась быстрее.
Потом я заметил, что это не только мое приложение. Visual Studio запускается быстрее. Я также установил JetBrains dotTrace и вижу, что он тоже запускается быстрее на ВМ.
Что, черт возьми, происходит? Как это возможно? Есть идеи, что проверить или что может вызвать эту загадку? Не могу поверить, что ВМ может быть быстрее, или может?
Важно, что я измеряю быстрые запуски приложения. Это значит, что я сначала запускаю приложение несколько раз, прежде чем начинать измерять время запуска. Это важно для кэширования .dll файлов.
Вот некоторые другие моменты, которые могут быть связаны:
- Bitlocker отключен на физической машине
- На обеих машинах включен режим разработчика
- На физической машине включен только Dev Drive (не уверен, может ли это быть связано)
- Физическая машина поддерживает аппаратную виртуализацию, и она включена.
- Процессор – Intel 12-го поколения
- ВМ работает на 4 ядрах.
П.С. Я нашел это: https://community.spiceworks.com/t/vm-hard-disk-speed-much-faster-than-host-disk-speed/603712/16
Виртуальные диски представляют собой файлы, и, поскольку такие файлы хранятся в оперативной памяти хост-системы, это необходимо для повышения производительности. Это приводит к очень быстрым замерам времени и может вызвать очень долгие выключения хоста, когда эти диски сбрасываются на физические диски. ОС виртуализации (Hyper-V, ESX, Zen и т. д.) использует кэширование диска так же, как и любая ОС общего назначения. Затем она обновляет физический диск в фоновом режиме.
Ответ или решение
Вопрос, который вы подняли, действительно интересен и может вызывать удивление среди профессионалов в области информационных технологий. Разберем возможные причины того, почему виртуальная машина (VM) под управлением Hyper-V на вашем компьютере с Windows 11 24H2 работает быстрее, чем физическая машина, даже при идентичных условиях.
### 1. Архитектура кэширования
Одной из основных причин может быть способ кэширования данных виртуальной машины. Виртуальные диски, с которыми работает Hyper-V, хранятся на хост-системе в виде файлов, что позволяет системе эффективно кэшировать их в памяти. Это может привести к гораздо более быстрым операциям чтения и записи по сравнению с традиционными жесткими дисками, особенно если физический диск настроен на более медленную работу из-за различных фоновый задач.
### 2. Управление ресурсами
Поскольку вы используете виртуальную машину, Hyper-V может предоставить более интенсивное управление ресурсами. Например, Виртуальная машина может получать доступ к ресурсам CPU и памяти, которые изолированы от других задач на хосте. Это может позволить вашим приложениям работать более эффективно, так как они “не отвлекаются” на другие процессы, которые могут быть активны на физическом устройстве.
### 3. Работа антивирусного программного обеспечения
Вы упомянули, что на обеих системах используется Microsoft Defender, и отключение антивируса не дало результатов. Однако, стоит учитывать, что коммутативная природа работы антивирусов в физической среде может вызвать дополнительные накладные расходы. На виртуальной машине Defender может работать в более “оптимизированном” режиме, так как нагрузки и конфликты с другими системными процессами минимальны.
### 4. Разные уровни виртуализации и доступ к кешу
Виртуальные машины могут по умолчанию предлагать более высокий уровень доступа к кешам процессора. Эффективное распределение ядер и ресурсов может облегчить выполнение задач на VM по сравнению с физической системой, которая может быть загружена другими задачами и процессами.
### 5. Использование Developer Mode и Dev Drive
Обе системы имеют включенный режим разработчика, но если на физической машине вы используете Dev Drive, это может вести к ограничениям в плане производительности. Некоторые избирательные настройки, используемые в Dev Drive, могут уменьшить скорость операций ввода/вывода по сравнению с обычным режимом работы.
### 6. Аппаратные ограничения
Возможно, что на физической машине есть другие программные или аппаратные ограничения. Например, может существовать фоновая задача, использующая значительное количество ресурсов, которая может мешать производительности приложения.
### 7. Статистика и стресс-тесты
Важно заметить, что вы проводите измерения “горячих” стартов. Это значит, что приложения уже могли кэшировать логику и зависимости во время предыдущего запуска. В виртуальной среде сразу после запуска могут действовать другие кэшированные или оптимизированные сценарии.
### Заключение
Таким образом, выводы, основанные на вашем тестировании и наблюдениях, подтверждают, что VM может вести себя значительно быстрее, чем физическая машина и это возможно по множеству причин. Оптимизация работы в виртуальной среде может сыграть ключевую роль в увеличении производительности ваших приложений.
Рекомендации по улучшению производительности физической машины включают оптимизацию фоновых процессов, анализ использования ресурсов, а также возможную диагностику дисковой подсистемы.
Поскольку каждая ситуация уникальна, я рекомендую проводить дальнейшие тестирования, чтобы углубить понимание различий в производительности между вашей физической машиной и VM.