QEMU com KVM com diferentes arquiteturas host / guess

1

Meu sistema operacional convidado é um x86 (formato .vmdk) e parece da documentação do QEMU que, como meu host é um ARM Raspberry Pi 3, não consigo tirar vantagem do KVM mesmo depois de ativá-lo no kernel.

Isso está correto?

    
por A. Michael 29.01.2017 / 04:27

4 respostas

2

A maneira ingênua de executar uma máquina virtual é interpretar cada instrução. O software da VM decodifica cada instrução e a executa.

Quando o conjunto de instruções da máquina virtual é o mesmo que o host, um método alternativo é simplesmente executar as instruções. Apenas algumas instruções não podem ser executadas diretamente porque o convidado não tem controle total sobre o hardware. Um ponto pegajoso são os acessos à memória: o convidado não tem acesso a toda a memória, portanto, uma tradução precisa ser executada nos endereços. CPUs de ponta, como CPUs x86 com extensão VT-x (Intel) ou AMD-V (AMD), ou ARM Cortex-A15 e superior (incluindo Pi 2 e Pi 3), possuem recursos de hardware para executar esse endereço tradução. O KVM é um componente do kernel Linux que aproveita essas instruções para permitir que um código em uma máquina virtual seja executado diretamente pelo processador nativo.

Isso não ajuda, porque você não está tentando executar o código ARM em uma CPU ARM ou x86 em uma CPU x86. Você deseja executar o código x86 em uma CPU ARM. Para isso, o software para decodificar e interpretar as instruções é necessário. O KVM não ajuda aqui.

    
por 30.01.2017 / 00:09
-1

Você pode ativar o kvm no kernel, mas sem as extensões de cpu apropriadas, o módulo não será carregado.

    
por 29.01.2017 / 22:08
-2

Sim, está correto. O KVM depende do suporte à virtualização de CPU (Intel VT ou AMD-V) e, como a CPU Raspberry PI 3 ARM não suporta essas instruções, você não pode fazer uso do KVM.

    
por 29.01.2017 / 11:55
-2

Para acelerar a emulação (ou seja, transformar o kernel em virtualização completa), você precisaria do módulo KVM e de uma CPU adequada para executar o código da máquina virtual, essencialmente, é um complemento da CPU. Há muitas maneiras de saber se o seu sistema o suporta, execute o comando ~$ lscpu , verifique os recursos do sistema em ~$ virsh capabilities ou simplesmente $ cat /proc/cpuinfo . As sinalizações que você está procurando são vmx para Intel & svm para AMD.

Agora, as CPUs ARM, até onde sei, não têm esse complemento de CPU. Teoricamente sim, você poderia executar algum tipo de sistemas emulados na CPU ARM sem extensões de CPU, mas isso seria muito lento. Quanto ao Raspberry, eu acho que você ficaria sem recursos antes de iniciar sua máquina virtual sem o KVM-like-for-ARM.

Quanto à minha experiência, eu precisei executar algum código do FreeBSD (PFsense) em dispositivos de baixo consumo, mas o ARM arch não é suportado, então eu executei uma virtualização completa no Intel compute stick.

    [root@compute ~]# lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 55
Model name:            Intel(R) Atom(TM) CPU  Z3735F @ 1.33GHz
Stepping:              8
CPU MHz:               666.452
CPU max MHz:           1832.6000
CPU min MHz:           499.8000
BogoMIPS:              2662.40
Virtualization:        VT-x
L1d cache:             24K
L1i cache:             32K
L2 cache:              1024K
NUMA node0 CPU(s):     0-3
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat
    
por 29.01.2017 / 23:12