Informações longas:
Eu estou tentando executar um windows virtualbox vmdk de um SSD externo USB 3.0.
O sistema que eu uso é o Arch Linux, que também é instalado neste SSD externo.
A VM funciona bem se eu carregá-lo a partir do SSD interno (enquanto estiver usando o sistema no SSD externo). O mesmo vale para uma VM Linux carregada do SSD externo (também durante o uso do sistema no SSD externo).
Informação resumida:
O SSD externo é um samsung 850 evo 512GB (M2 Verison) com um adaptador M2 para USB3.0. Como mencionado acima outros Vms e ao executar o Windows VM a partir do SSD interno ou até mesmo de um HDD USB3.0 externo (isso é lento, mas ainda é muito mais rápido, então o SSD externo, neste caso) funciona bem.
Configurações da VM:
16GB ram
chipset PIIX3
I/O APIC enabled
Hardware Clock UTC Time enabled
4 Cores 100% (4.5Ghz)
VT-x enabled
Problema:
A VM inicializa corretamente, mas fará com que o sistema Host congele de tempos em tempos e alcançará a tela de login após ~ 20 Minutos.
Como parecia ser um problema de disco, eu carreguei o vm do SSD interno e desativei a função de paginação de disco do Windows para reduzir gravações de disco. Eu então copiei o vmdk alterado para o SSD externo e modifiquei o Virtualbox no meu sistema externo de acordo. No entanto, isso não mudou nada. (Eu até aumentei o RAM para 16GB).
Suposição
Por algum motivo, o Windows VM faz uma quantidade enorme de gravações em disco em comparação com a VM linux,
O engraçado é que eu fiz o mesmo há algum tempo em um disco rígido USB 3.0 externo que é realmente muito mais lento que o SSD (no entanto, eu não executo o sistema host na mesma unidade)
O problema certamente não é o SSD, já que estou usando o mesmo SSD que um SSD interno. O adaptador está funcionando bem para o Linux System, Linux VM e qualquer outro programa, então não acho que seja isso.
Vou tentar pesquisar os logs para alguma informação, mas se alguém tiver outro Idear, será muito apreciado.
Pergunta:
Como posso melhorar o desempenho da VM do Windows no meu SSD externo e por que o Windows precisa de muito tráfego de IO?
Comentário da solução:
Usando cache de write-back como sugerido por @Eugen. De fato, a VM tornou-se utilizável, suponho que a quantidade extra de IO formando o sistema host no mesmo SSD externo foi demais para o controlador USB3.0 (sem cache).
No Virtualbox você encontra esta opção em:
Your_VM_Settings->Storage->select_your_Controller->Attributes->Use Host I/O Cache
Além da desvantagem mencionada por @Eugen Rieck, parece haver mais um de acordo com @aeichner no fórum virtualbox
The host I/O cache is not used by default because it can cause I/O
timeouts in the guest if the host faces a high I/O load and the host
cache can't cope with it.aeichner, 2011