Há pouco tempo atrás descobri um terrível gargalo que estava prejudicando o compartilhamento de arquivos com o NFS (Network File System). Trata-se da seleção do Modelo de Dispositivo de Rede a ser utilizado como Placa de Rede em uma VM. No KVM são apenas três opções possíveis: e1000
, rtl8139
e virtio
; sendo que a primeira opção, Hypervisor padrão
, no caso do CEFALA é o virtio
. Por não saber do problema, todas as VMs do CEFALA estavam utilizando o rtl8139 por ser um driver mais conhecido. Após perceber que esta configuração acarretava em uma perda em performance, decidi testar os demais modelos para verificar o desempenho de cada um deles.
Os testes utilizaram o iperf combinando os modelos de dispositivos de rede existentes em um enlace virtual: e1000 <-> e1000, rtl8131 <-> rtl8139 e virtio <-> virtio. O iperf foi executado por três vezes consecutivas e o melhor resultado para 10 segundos de transferência é apresentado abaixo:
e1000 <-> e1000
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.48 GBytes 1.27 Gbits/sec
rtl8131 <-> rtl8139
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 179 MBytes 150 Mbits/sec
virtio <-> virtio
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 20.9 GBytes 18.0 Gbits/sec
Os testes deixam claro o desempenho do virtio
em comparação com os demais. Obviamente todas as VMs passaram a utilizá-lo em substituição ao rtl8139
. Como este post não tem o intuito de investigar o motivo da diferença, mas sim de expor a mesma, vou parando por aqui...