Производительность снижает виртуализацию x86 от arm против x86 от x86

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

Я понимаю, что есть снижение производительности при запуске приложений x86 от arm. Мне не совсем понятно, как это обрабатывается - например, я предполагаю, что если данное приложение не скомпилировано для arm, оно не будет работать изначально в среде arm, так какова будет процедура вызова такого приложения - например, распознает ли os он как исполняемый файл и каким-то образом эмулирует вызовы x86 в фоновом режиме (я полагаю, может быть, это зависит от ОС), или вам придется развернуть полностью виртуализированную среду x86 для запуска этих приложений x86.

Я использовал ряд технологий виртуализации, и меня особенно интересует, как это повлияет на типичный гипервизор типа 2 (есть ли дополнительный штраф при переходе с x86 на x86 по сравнению с arm на x86, а также что-то вроде wine, который в любом случае отображает вызовы окон - поддерживать даже там в это время?

был бы признателен за краткое объяснение того, как это работает, и за ссылку на любые показатели производительности для описанных операций.

1 ответ

Решение

Для запуска x86 на ARM требуется эмуляция. Насколько прозрачен и прост в использовании, зависит от вашей среды.

Windows 10 на ARM расширяет WOW64. Цель - устройство ARM, которое просто работает с приложениями x86. Сервер еще не собирается, хотя, по-видимому, такая вещь проходит внутреннее тестирование в Azure.

Другой пример эмуляции пользователя: QEMU в Linux с binfmt_misc, чтобы сделать его немного более удобным для пользователя. Не нужно эмулировать аппаратное обеспечение и запускать другое ядро. Однако вам нужно предоставить библиотеки другой архитектуры, как при кросс-компиляции.

Эмулируйте аппаратное обеспечение, и вы сможете создать любую виртуальную машину, какую захотите ARM VM на x86 с использованием QEMU является одним из примеров. Это другое ядро ​​на виртуальном оборудовании, но виртуальные машины знакомы в наши дни.

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

В худшем случае вы приобретаете блоки ARM и x86 для соответствующих рабочих нагрузок. Немного усложняет операции, но вы получаете аппаратное разнообразие.

Другие вопросы по тегам