LINUX.ORG.RU
ФорумTalks

Чудеса виртуализации

 , , делаю странное


0

1

Экспериментирую с qemu на макоси. Запускаю его в докере. Сам докер запущен в виртуалке с arm64 (стандартный docker desktop). Меня интересует виртуализация x86_64 (через tcg).

Собственно есть два способа:

Способ 1, используя arm64 образ с arm64 сборкой qemu. Ну тут всё понятно, qemu эмулирует x86_64 код, интерпретируя его своим arm64 билдом.

Способ 2, используя x86_64 образ с x86_64 сборкой qemu. А вот это самое интересное. У Apple есть Rosetta, которая умеет транслировать x86_64 код в arm64 и выполнять его, делая всё это на лету. Это вообще говоря работает весьма быстро. Но для виртуалок это использовать невозможно, т.е. к примеру запустить Windows XP через Rosetta не выйдет. Docker эту розетту для линукса тоже умеет использовать. Т.е. в ARM64 виртуалке можно запустить x86_64 бинарник.

И вот я таким макаром запускаю qemu (конечно в tcg режиме). Он транслирует x86_64 код в x86_64 код, и выполняет его. И в этот момент подключается розетта и уже она это всё безобразие транслирует в ARM64. Честно говоря я не ожидал, что оно вообще заработает.

Но, очевидно, заработало, по крайней мере для ISO от Alpine Linux. Загрузилось.

Самое интересное это производительность. Мерял через openssl speed md5, приведены значения для типа 8192 bytes.

На хосте                                : 545620.17k
В докере arm64                          : 656146.43k
В докере amd64                          : 537531.73k
В докере arm64 и далее в виртуалке amd64: 306571.95k
В докере amd64 и далее в виртуалке amd64: 353517.57k

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

Как видно, простой код транлсируется неплохо, и извращенский вариант с розеттой даже даёт небольшой выигрыш.

Не знаю, что тут можно ещё сказать, но вот так вот, решил зачем-то поделиться, живите теперь с этим.

★★★★
Ответ на: комментарий от LamerOk

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

vbr ★★★★
() автор топика

К сожалению, в IT так все и работает.

К счастью, в IT так все может работать.

soomrack ★★★★★
()

видимо по-разному собрали

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

quwy
()
Последнее исправление: quwy (всего исправлений: 1)

А ты несколько таких слоёв накрути, глядишь, получишь бесконечную производительность

DumLemming ★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)