Baixa velocidade de upload no guest do KVM com o virtio eth driver no OpenStack em 3.14 [closed]

0

Depois de atualizar um nó de cálculo do OpenStack para o kernel 3.14, estou obtendo uma velocidade de upload baixa de todos os convidados do KVM ao usar o driver do virtio ethernet. As velocidades de download não são afetadas e o download de HTTP fica a uma constante de 50 MB / s; no entanto, os uploads começam com 2 MB / se caem para kilobits por segundo (em uma rede de 1 gbps). Isso inclui tanto TX fora da rede quanto TX entre máquinas virtuais.

Configuração:

  • Icehouse OpenStack com rede de neutrões
  • Rede encapsulada GRE sob plug-in ml2 via openvswitch
  • GRO está desativado em todas as interfaces físicas, que estão no driver igb 2.0.5
  • as interfaces de dados estão conectadas por meio de portas / switch de 1 gbit
  • nó de rede dedicado único com vários nós de computação
  • todos os servidores executando 14.04 (também tentou 14.10 em um nó de computação, mas o problema persiste)

Quando o driver é comutado para e1000, o desempenho da rede retorna à velocidade esperada (mas o e1000 produz um desempenho pior que o virtio; cerca de 16 MB / s de upload). Além disso, em outro nó ainda executando o kernel 3.13, a velocidade de upload é > 50 MB / s (e a transferência da VM no nó 3.13 para a VM no nó 3.14 é boa, enquanto a transferência na direção oposta tem esse problema de upload agitado).

No SSH do convidado, simplesmente executar o cat em um arquivo de 2000 linhas mostra o problema, com congelamentos a cada 2 segundos. Em um convidado normal, ele imprime em meio segundo.

Observe que apenas o nó de computação é afetado por esse problema - com dois nós de computação no mesmo cluster, um nó executando 3,13 e o outro executando 3,14, e o nó de rede de nêutrons executando outra coisa (não importa, mas acho que é no 3.16 no momento), o 3.13 ainda está bom, enquanto os hóspedes do nó 3.14 têm o problema.

Eu observei o relatório de erros no link . No entanto

  • a) entendo que o encaminhamento de IP não é necessário no nó de cálculo (depois de desabilitá-lo via "echo 0 > / proc / sys / net / ipv4 / ip_forward" a rede guest ainda é executada) e
  • b) depois de atualizar para o mais novo 3,14, o mais novo 3,15 e o mais novo 3,16 do link , o problema persiste .
por perennate 28.07.2014 / 22:06

1 resposta

1

Parece que isso não estava relacionado ao kernel, mas, por algum motivo, a atualização para o kernel mainline 3.14 fez com que o TSO fosse ativado na ponte, no toque e em outras interfaces que o OpenStack cria automaticamente.

Depois de executar ethtool -K [interface] gro off tso off em cada interface qbr, qvb, qvo e tap, o driver virtio retorna ao bom desempenho.

Como eu preciso do 3.14 para algumas outras mudanças relacionadas ao bcache, acabei corrigindo o OpenStack nova em /usr/lib/python2.7/dist-packages/nova/network/linux_net.py para executar o comando ethtool (via utils.execute com run_as_root = True) cada vez que uma dessas interfaces é criada. Até agora parece estar funcionando.

    
por perennate 29.07.2014 / 19:29