Desempenho de rede em grande transferência de dados

3

Estou usando DD over Netcat para copiar um disco rígido de um sistema para outro, clone reto.

Eu inicializei o RIP em cada sistema.

sistema de destino: nc -l -p 9000 | pv | dd de = / dev / hda sistema fonte: dd if = / dev / hda | pv | nc 9000 -q 10

A transferência parece estar pairando em torno de 10 ou 11 MB / s, com explosões perto de 18 registrando. Os dois sistemas estão conectados a um comutador gigabit. Ethtool eth0 em ambos está mostrando:

Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: umbg
    Wake-on: g
    Current message level: 0x00000007 (7)
    Link detected: yes

Acho que posso estar confundindo alguns números com as taxas de transferência, mas essa é uma velocidade esperada para transferir os dados?

EDIT: Eu tentei usar dois cabos diferentes que estão marcados como 5e compatíveis e usei um conector cruzado para vincular os dois sistemas diretamente. Enquanto a ethtool ainda diz que está configurada para uma velocidade de 1000Mb / s, a taxa de transferência parece ser apenas ligeiramente maior do que antes. Ou as unidades são sucktacular, as placas de rede são cruas ou o processador deve ser um gargalo, eu estou supondo.

EDIT2 Eu tentei pegar um segundo disco rígido de uma unidade que precisa ser clonada e fisicamente conectada ao clone mestre. Originalmente, um canal IDE foi para um HD e outro foi para o CD-ROM. Peguei o disco rígido do master e o conectei ao mesmo canal que o CD-ROM, então eles devem ser / dev / hda e / dev / hdb. Peguei o cabo que estava no CD e o conectei ao "blank slate", então ele deve ser / dev / hdc.

Eu reiniciei e executei "dd if = / dev / hda | pv | dd de = / dev / hdc", e estou recebendo uma gritante ... 10 MB / s. Ele está flutuando descontroladamente entre 8 MB / se spiking para 12.

Então ... Eu estou pensando que são os discos rígidos que estão dando uma performance ruim ... Eu estou tão acostumado a ser um gargalo na rede que é estranho eu pensar em discos como sendo o problema!

    
por Bart Silverstrim 03.08.2009 / 16:52

5 respostas

0

A maior parte da lentidão vem do gargalo do HD. Seu HD médio vai empurrar 40-50mb através de uma rede em um disco / sistema / rede completamente ociosos. Adicione as sobrecargas do dd em um pipe tcp netcat que não é de forma alguma otimizado para o tráfego de rede, e as velocidades começam a cair.

A maior parte da lentidão vem do tamanho da janela TCP. Pacote atravessa e tem que esperar por uma resposta antes de enviar o próximo. Normalmente, uma rede interna tem uma latência tão baixa que ninguém percebe isso. Quando você despeja em uma maneira não otimizada de rede de fazê-lo, as janelas começam a ir em todo o lugar. Um ótimo exemplo disso foi a cópia do arquivo de rede Vistas na versão anterior ao SP1, que dava velocidades de transferência inferiores a 100kb por segundo quando o ajuste da janela TCP estava muito errado.

Também para referência, eu tenho duas caixas aqui do que consistentemente empurrar 60-80 meg / s através de sua rede para outra fácil. Eles têm NICs dedicados, RAID 10 e um monte de unidades SAS de 10000 RPM para dar esse tipo de velocidade.

    
por 04.08.2009 / 17:01
2

O que faz dd if=/dev/zero of=/dev/hda no destino e   dd if=/dev/hda of=/dev/null na origem  dê como o mais baixo dos dois que lhe dará um melhor caso.

Se você tem cpu de reposição conside gzip -fast

Vale a pena definir pacotes jumbo (mtu grande)

    
por 03.08.2009 / 21:25
1

Eu esperaria mais de 20 MB / s, você está usando cabeamento cat 6 / 5e?

Eu também rodaria iostat (parte do pacote sysstat) e talvez veja se o iostat acha que as unidades estão a 100% de utilização:

iostat -c 2 -x

Aqui está um bom artigo sobre redes de gigabit do Tom's Hardware: Gigabit Ethernet: Cara, Onde está minha largura de banda?

    
por 03.08.2009 / 16:57
0

Canalize seu fluxo de dados por meio de compactação / descompactação para aumentar sua taxa de transferência geral ao custo de algumas CPUs.

    
por 03.08.2009 / 21:16
0

Eu ganho 12MB / s, mas costumava ter muito menos - meu problema particular eram as unidades. Eu estava usando um 'servidor de armazenamento' Dell barato desagradável com uma placa RAID horrível. Eliminar o RAID, substituindo por uma configuração JBOD, faz uma grande diferença, mesmo quando eu coloco o software RAID5 no topo.

Eu também consideraria a configuração de quadros jumbo no switch, o que melhorará consideravelmente sua taxa de transferência. ( ifconfig eth0 mtu 9000 temporariamente, ou adicione MTU 9000 ao seu arquivo ifcfg para configurar o jumbo nas suas interfaces linux).

    
por 04.08.2009 / 16:54