Виртуализация нескольких SBC на экземпляре на базе ARM
Я пытался создать облачный инструмент тестирования, который позволил бы вам настроить тестовое «рабочее пространство» с одним или несколькими эмулированными SBC (Beaglebone Black, cubieboard2 и т. Д.), А также настроить сеть Ethernet между устройствами (используя открытые или собственные проприетарные протоколы).
Изначально я планировал создать этот инструмент с использованием QEMU, работающего на хосте x86, и обнаружил, что первоначальное тестирование было мучительно медленным.
Мне интересно, какие у меня лучшие варианты повышения производительности. Могу ли я имитировать эти SBC на экземплярах AWS с голым железом ARM? Я знаю, что AWS в настоящее время не поддерживает вложенную виртуализацию, поэтому я не уверен в объеме моих возможностей здесь. Каков наилучший подход к виртуализации этих настроек тестирования и выполнению кода на аппаратной скорости без оборудования?
1 ответ
Расширения Arm Virtualization Extensions не поддерживают «имитацию старого процессора v7 на хосте v8» (вы можете эмулировать 32-разрядную гостевую систему, но это будет 32-разрядная гостевая система, которая видит процессор v8, в частности тот, который установлен на вашем хосте). ). Таким образом, QEMU не позволит вам виртуализировать такую модель платы с помощью KVM. Вы также не можете виртуализировать TrustZone (EL3) под KVM, поэтому, если ваш гость рассчитывает работать на EL3, вам не повезло. Точно так же вы не можете запустить гостя, который ожидает EL2, под KVM, если только ваш центральный процессор не достаточно новый, чтобы иметь вложенные расширения виртуализации.
Вы можете вместе взломать что-то, что использует KVM и просто предоставляет гостю процессор v8 с устройствами / и т. Д., Которые есть у вашего SBC, и надеяться, что гостевое ядро сможет справиться с этой странной гибридной настройкой. Насколько это полезно, зависит от того, что вы пытаетесь проверить.
По моему опыту, многие люди довольны тем, что «то, что я пытаюсь протестировать, просто требует стандартного пользовательского пространства Linux на Arm, и его не волнуют конкретные детали оборудования и устройств» (в этом случае вы можете используйте QEMU/KVM и его плату virt, и просто предоставьте гостю тот же тип процессора, что и хост). Другая группа людей действительно заботится о деталях оборудования, потому что они пытаются протестировать драйверы устройств или другой код для взаимодействия с оборудованием; часто здесь не хватает точности эмуляции устройства в QEMU, и эти люди обнаруживают, что им необходимо работать с фермой плат из реального оборудования (либо исключительно, либо в дополнение к настройке на основе QEMU для дымовых тестов и удобства разработчика). Я'Я не уверен в размере группы посередине, которым нужно что-то похожее на конкретную доску, но довольны тем, что это относительно низкокачественная модель этой доски ...