Pergunta

Por que várias conexões do mesmo host alcançam melhor taxa de transferência do que várias conexões de diferentes hosts?

Suspeito que seja algo relacionado ao kernel (Linux), mas uma confirmação ajudaria muito.

Mais detalhes que tenho 1 processo de receptor, vamos chamá -lo de R. Aceita conexões recebidas e recebe dados usando select ().

Eu tenho 3 processos de remetente S1, S2, S3. Eles se conectam ao R e enviam dados a uma taxa fixa, ou seja, 200 mit por segundo cada.

Se S1, S2 e S3 estiverem na mesma máquina, obtenho melhores resultados do que ter cada um deles em uma máquina diferente. (R está em ambos os casos em outra máquina)

Exemplo: r no host0, s1, s2, s3 no host2, r recebe a 600mbbit/s

R no host0, s1 no host1, s2 no host2, s3 no host3, r recebe a 480mbbit/s

Isso parece contra-intuitivo para mim, eu esperava o contrário, pois no segundo caso os remetentes não precisam compartilhar o cartão de rede e o processador (não que esperam que o processador ou o cartão de rede sejam gargalos ...)

Os hosts acima são nós em um cluster Linux com um interruptor Gigabit dedicado duplex. Eles estão executando 2.6.24-24-genérico (mais recente Ubuntu, eu acho)]

Foi útil?

Solução

Provavelmente, quando os remetentes estão todos em uma máquina, os pacotes de saída são bem na fila e enviaram uma vez por vez (apenas em virtude do fato de que estão todos passando por uma NIC).

Enquanto no caso de várias pontas, duas máquinas costumam enviar pacotes ao mesmo tempo, e então ele cabe à troca de rede para fila. Isso se manifestará ao envio do TCP como uma latência nervosa - às vezes um pacote será alterado diretamente para o receptor; outras vezes, ele terá que esperar um ou dois pacotes dos outros remetentes dentro das filas do interruptor.

Espero que o jitter de latência por si só seja suficiente para derrubar sua largura de banda-lembre-se de que, para sustentar 200 Mbps com o Windows padrão TCP, você precisa de um tempo de ida e volta mínimo de 2,6ms, o que é bastante apertado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top