Вопрос или проблема
Я планирую запустить Linux в режиме пользователя с помощью QEMU, но не знаю, какая платформа (например, x86, PPC и т.д.) лучше выбрать (с точки зрения производительности).
Хост – это Linux x86-64, работающий в OpenVZ (поэтому я не могу модифицировать ядро), так что, насколько я понимаю, я не могу использовать виртуализацию и могу только использовать эмуляцию в пользовательском режиме.
Существует ли значительная разница в производительности при эмуляции различных ЦП в такой ситуации? x86-64 кажется самым оптимальным вариантом, но если это будет чистая эмуляция, есть ли более эффективная платформа?
Использование родного ЦП (x86) всегда быстрее, чем эмуляция другого ЦП. QEMU должен работать, если он все еще поддерживает старую эмуляцию (до появления KVM). Вам также стоит рассмотреть возможность использования User Mode Linux (UML), поскольку это предполагает запуск специально модифицированного ядра Linux как обычного процесса (в пользовательском режиме). Это похоже на то, что делает OpenVZ, но вы можете вложить много уровней, в отличие от XEN, KVM, Virtualbox.
Хорошо, я согласен не обсуждать множественные уровни… С этим на стороне,
Предполагая, что у вас нет доступа к ядру и возможности что-либо сделать с KVM. Честно говоря, вашим лучшим вариантом будет изучить UML. Это единственный способ получить приемлемую производительность в данной ситуации. Если по какой-то причине UML не является приемлемым решением, вам действительно стоит рассмотреть обычные chroot. Эти варианты будут работать на приемлемом уровне, в отличие от QEMU. Полная эмуляция вполне приемлема для тестирования/разработки, но для всего остального это было бы нелепо. Особенно учитывая, что вы делаете все это с арендованного VPS.
Если у вас есть доступ к добавлению новых модулей ядра, старая школа KQEMU + QEMU принесет некоторую виртуализацию. Я также хотел бы упомянуть, что до появления KVM KQEMU и QVM86 были исходными методами виртуализации QEMU. Кроме того, эмуляция вашего хоста приведет к наименьшим потерям. Если QEMU работает на x86_64, запускайте x86_64.
Ответ или решение
Выбор платформы для эмуляции в QEMU: Рекомендации по производительности и практике
При запуске Linux через пользовательскую эмуляцию с помощью QEMU, выбор платформы может существенно повлиять на производительность. Рассмотрим, как выбрать оптимальную архитектуру, если вы работаете на хосте Linux x86-64 в OpenVZ и не имеете доступа к модификации ядра.
1. Понять ограничения платформы
Поскольку вы используете OpenVZ, возможности виртуализации через KVM отсутствуют, и вы в основном ограничены пользовательским режимом. Это значит, что полная эмуляция CPU — ваш единственный путь вперед. Эмуляция производительного аппаратного обеспечения, такого как x86-64, всегда будет проигрывать в скорости производительности по сравнению с эмуляцией архитектуры, которая требует меньших вычислительных ресурсов.
2. Выбор архитектуры
Эмуляция на x86-64:
Эмуляция на x86-64 может показаться благоприятным выбором, так как она представляет собой "родную" архитектуру для вашего хоста. Тем не менее, полное эмулирование может привести к потере производительности, что делает этот выбор менее оптимальным для задач, требующих высоких вычислительных ресурсов.
Другие архитектуры:
В некоторых случаях, особенно если вы рассматриваете использование более легких архитектур, таких как ARM или MIPS, вы можете получить определенные преимущества в производительности. Эмуляция менее сложной архитектуры может быть быстрее, так как такие платформы обычно требуют меньше обработчиков для выполнения своих инструкционных наборов, что способствует более высокой скорости выполнения.
3. Рассмотрение альтернатив – User Mode Linux (UML)
Если вы ищете решение с лучшей производительностью, стоит обратить внимание на User Mode Linux (UML). Эта технология позволяет запускать модифицированное ядро Linux как обычный процесс в пользовательском пространстве.
Преимущества UML:
- Производительность: UML предлагает более высокие показатели производительности по сравнению с QEMU, так как ваш эмулируемый экземпляр Linux работает непосредственно на том же ядре, что и хостовая система.
- Гибкость: UML позволяет запускать несколько экземпляров Linux на одном хосте, что делает его более эффективным для задач разработки и тестирования.
- Легкий режим работы: При использовании UML вы избегаете многих накладных расходов, связанных с полной эмуляцией аппаратного обеспечения.
4. Альтернативные варианты
Если по каким-либо причинам UML не является приемлемым решением, вы также можете рассмотреть использование chroot-окружений. Это позволит вам создать изолированную среду, не требуя от вас нагрузки, присущей эмуляции, что сделает производительность гораздо лучшей и снизит потребление ресурсов.
Заключение
В ситуации, когда доступ к ядру ограничен, рекомендуется использовать User Mode Linux как наиболее эффективное решение для эмуляции. Если это недоступно, то полная эмуляция с использованием QEMU, особенно на x86-64, будет порядком менее эффективной. Учитывая вышесказанное, важно делать выбор на основе специфики задач, которые вы планируете решать в эмулируемой среде, и доступных вам ресурсов.
Таким образом, оптимальная архитектура и методология смогут значительно упростить вашу работу и повысить эффективность использования вычислительных ресурсов.