Desempenho ruim da rede da máquina virtual KVM

2

Estou executando uma máquina virtual Linux de 32 bits no KVM. A máquina host é uma máquina Linux de 64 bits conectada a uma LAN. A tentativa de transferir arquivos com o scp da máquina KVM para um servidor na LAN fornece um desempenho péssimo, cerca de 500kB / s em gigabit Ethernet. Cerca de 1% da taxa esperada. Alguma sugestão?

    
por casualunixer 24.03.2012 / 03:31

2 respostas

2

Considere o uso do virtio . Permite uma conexão direta entre a VM e o host sem a necessidade de emular hardware (lento). Eu medi grandes melhorias de desempenho de rede com ele.

Por exemplo, você pode habilitar o dispositivo de rede do virtio pelo parâmetro de linha de comando kvm "-net nic, model = virtio".

Se você estiver usando os dispositivos de bloqueio virtio, observe que os novos nomes de dispositivos são "vda1" etc., mas isso não deve ser um problema, pois as distribuições atuais do Linux detectam as partições de acordo com seus UUIDs.

    
por 24.03.2012 / 12:06
1

Pode ser um problema do desempenho do disco I / O dentro do convidado. Se você estiver usando uma imagem de disco, algumas etapas serão aplicadas para melhorar o desempenho:

Firs, você terá que brincar com a opção cache da configuração de disco do seu convidado.

By default, writethrough caching is used for all block device. This means that the host page cache will be used to read and write data but write notification will be sent to the guest only when the data has been reported as written by the storage subsystem.

Writeback caching will report data writes as completed as soon as the data is present in the host page cache. This is safe as long as you trust your host. If your host crashes or loses power, then the guest may experience data corruption. When using the -snapshot option, writeback caching is used by default.

The host page can be avoided entirely with cache=none. This will attempt to do disk IO directly to the guests memory. QEMU may still perform an internal copy of the data.

Some block drivers perform badly with cache=writethrough, most notably, qcow2. If performance is more important than correctness, cache=writeback should be used with qcow2. By default, if no explicit caching is specified for a qcow2 disk image, cache=writeback will be used. For all other disk types, cache=writethrough is the default.

Então, você também terá que brincar com a opção elevator do kernel: você terá que anexar elevator=noop em sua linha de comando do grub linux desta forma:

# Edit your /etc/default/grub.conf (on Debian-based distribution)
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

Uma melhor explicação disso está disponível em: link ; mas em poucas palavras, o kernel do host linux e o kernel guest linux tentam otimizar o I / O e ele tende a ser pior do que qualquer coisa para o convidado (o convidado deve deixar essa tarefa para o host).

    
por 24.03.2012 / 08:39