Medição do throughput da rede com taxas de transferência do netcat vs. CIFS / SMB

1

Eu tenho tentado medir e avaliar a taxa de transferência da LAN como parte de um projeto maior. Nossa LAN é construída usando switches Cat5e e HP ProCurve 1800-24G que suportam autodetecção de 10/100/1000 Mbps. A topologia física é bastante simples. Nós temos um ProCurve em nosso rack de servidor que todos os servidores estão conectados (eu me refiro a ele incorretamente como o switch "backbone"). Cada um dos nossos três switches nos quais todas as máquinas clientes estão conectadas é conectado ao switch "backbone" usando um cabo / porta separado para cada switch. É basicamente um design "hub". A estação de trabalho que estou testando está a dois switches da chave "backbone" e tem uma unidade IDE antiga nela. Eu usei HDTune para medir a velocidade da minha unidade a aproximadamente 60 MB / s. Nossos servidores são um HP DL380 G5 com um conjunto RAID6 de unidades SAS de porta única de 15GB de 15K e dois processadores Intel Xeon Duo Core a 3.0Ghz.

Eu li alguns dos outros ( aqui , e aqui ) perguntas sobre este tópico, bem como sobre o hardware do Tom article , portanto, estou ciente de que minha taxa de transferência real ficará muito aquém da largura de banda máxima teórica de uma rede de 1 Gbit (por exemplo, uma taxa de transferência de 124 MB / s). No entanto, a verdadeira coisa que está me intrigando são as discrepâncias entre os números que estou usando o netcat versus a sincronização de uma transferência de arquivos usando CIFS / SMB.

Estou usando a versão cygwin do netcat da seguinte forma:

No "servidor":

nc -vv -l -p 1234 > /dev/null

No "cliente":

time yes|nc -vv -n 192.168.1.10 1234

Para testar a taxa de transferência de arquivos usando CIFS / SMB, eu apenas faço algo parecido com isto usando o cygwin:

time cp local_file.iso /remote_dir/

Agora, a menos que eu tenha feito minha matemática (dividir bytes transferidos por segundos, para obter bytes por segundo e converter de lá) completamente errado, a transferência com o netcat é realmente muito lenta. Como 4-8 MB / s lento. Por outro lado, usando um arquivo .iso de 120MB como um arquivo de transferência, eu calculo a taxa de transferência para o servidor CIFS / SMB em torno de 30-35 MB / s. Ainda muito mais lento que eu esperaria, mas um número completamente diferente do que eu uso o netcat.

Devo mencionar que estou realmente usando dois servidores diferentes para fazer o teste netcat vs. CIFS / SMB. Estou usando um host XenServer para netcat e um Windows 2003 Server para CIFS (não tenho a opção de instalar o netcat no servidor Windows). Eles são idênticos em termos de hardware. Agora eu sei que isso pode ser um pouco de apple para laranjas comparação, mas se eu fizer uma transferência CIFS para o host XenServer eu obter taxas de transferência em torno de 30 MB / s que parecem concordar com o resultado chegar ao Windows 2003 Server.

Acho que realmente tenho duas perguntas: 1) Por que os diferentes números entre o netcat e o tempo de transferência do arquivo de compartilhamento CIFS / SMB? e 2) Por que minha taxa de transferência real é tão baixa? Eu sei que meus discos só podem enviar tantos dados para o NIC tão rápido, mas certamente eu deveria ver algo em torno de 60 MB / s?

    
por kce 10.12.2010 / 20:10

2 respostas

0

Eu realmente não tenho uma resposta sólida aqui além de ter muito cuidado com a ferramenta que você usa para medir a taxa de transferência real. Eu usei o netcat (as versões cygwin e GNU), transferências CIFS / SMB cronometradas, transferências SCP cronometradas, iperf e NetCPS em uma infinidade de hosts em ambas as direções E é claro que obtive respostas descontroladamente divergentes. No entanto, descobri com o uso cuidadoso e metódico da mesma ferramenta que eu obteria números semelhantes em diferentes hosts.

A outra coisa que vale a pena mencionar é que muitas dessas ferramentas testam apenas o rendimento da rede. Sua carga útil é enviada da memória diretamente para a rede (acredito que tanto o iperf quanto o NetCPS façam isso). Embora isso seja útil para ajudar a testar o desempenho da rede e identificar problemas de infraestrutura, isso não dá uma boa noção de como será o desempenho dos nós finais do cliente. No meu caso, posso obter cerca de 25 a 30 MB / s da minha estação de trabalho usando algo como uma transferência de arquivos cronometrada, mas o iperf relatará que posso obter 45 a 50 MB / s.

Assim, praticamente tudo que eu sei sobre a primeira metade da minha pergunta ... diferentes ferramentas lhe darão resultados radicalmente diferentes ao medir a largura de banda da rede.

Quanto à segunda parte da minha pergunta, eu realmente não tenho ideia. As taxas de transferência em torno de 25 a 30 MB / s parecem horríveis para os nós finais até que você perceba que eles só podem enviar dados para a rede tão rápido quanto suas unidades e barramentos irão (e minha estação de trabalho é sloowww). Eu gostaria de poder usar mais de 25% da minha largura de banda teórica? Sim, mas pelo que li, meus resultados não são totalmente incomuns. Descobri que os servidores eram, é claro, muito mais rápidos (60-70 MB / seg), o que fica próximo da velocidade máxima de disco medida (o HDTune reporta cerca de 1GB / seg ... parece lento para um único canal 15K RPM RAID-6 SAS drives?). O estranho era que alguns servidores pareciam ser muito mais lentos e que existia uma taxa de transferência assimétrica dependendo de qual máquina agia como o cliente e qual agia como o servidor. Por exemplo: eu teria 45MB / seg em uma direção e 12MB / seg na outra. Eu suspeito que o fato de esses servidores estarem em sub-redes separadas possa ser o culpado, mas eu não confirmei isso. Cheguei mesmo a testar a placa de rede, trocar a porta e o cabo para tentar encontrar a falha. Eu acho que a falha está no design de topografia de rede e, possivelmente, o roteador, mas eu não posso realmente ter certeza desde que nenhum benchmarking foi feito antes da minha chegada aqui. Longa história curta ... certas coisas são mais lentas do que o resto da rede por uma quantidade significativa. Estranho mesmo.

Topografia da rede física:

       ----- 146.63.205.65 ----|--------|
       |                       | "Main" |---- [Client Switch # 1]
 <--[NetWare 6.5]              | Switch |---- [Client Switch # 2]
       |                       |        |---- [Client Switch # 3]
       ----- 192.168.61.1 -----|--------| 
                                 |
                                 |
                             "Servers"
    
por 21.12.2010 / 01:14
1

veja quão rápido é uma leitura no xen - use algo como hdparam ou apenas fazer uma cópia local, que dará uma idéia sobre desempenho do disco

para transferir arquivos tente Uma ferramenta diferente como dd é estranha porque o nc é lento - é muito rápido para mim por exemplo

    
por 10.12.2010 / 21:57