Versões diferentes do iperf para windows dão resultados totalmente diferentes

4

Medindo a saída TCP de um cliente Windows para o servidor Solaris:
WXP SP3 com iperf 1.7.0 - > retorna uma média em torno de 90Mbit
Mesmo cliente, mesmo servidor, mas iperf 2.0.5 para windows - > retorna uma média de 8,5 Mbit

Discrepâncias semelhantes foram observadas na conexão com outros servidores (W2008, W2003)

É difícil chegar a algumas conclusões quando versões diferentes da mesma ferramenta fornecem resultados muito diferentes.

Exemplo abaixo:

C:\temp>iperf -v (from iperf.fr)
iperf version 2.0.5 (08 Jul 2010) pthreads

C:\temp>iperf -c solaris10
Client connecting to solaris10, TCP port 5001
TCP window size: 64.0 KByte (default)

[ 3] local 10.172.181.159 port 2124 connected with 10.172.180.209 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.2 sec 10.6 MBytes 8.74 Mbits/sec

Execução abismal, mas agora testei do mesmo host (Windows XP SP3 32bit e 100Mbit) para o mesmo servidor (Solaris 10 / sparc 64bit e 1Gbit rodando iperf 2.0.5 com janela padrão de 48k) com o velho iperf

C:\temp>1iperf -v
iperf version 1.7.0 (13 Mar 2003) win32 threads

C:\temp>1iperf.exe -c solaris10 -w64k
Client connecting to solaris10, TCP port 5001
TCP window size: 64.0 KByte

[1208] local 10.172.181.159 port 2128 connected with 10.172.180.209 port 5001
[ ID] Interval Transfer Bandwidth
[1208] 0.0-10.0 sec 112 MBytes 94.0 Mbits/sec

Então um iperf com uma janela de 64k diz 8.75Mbit e o velho iperf com o mesmo tamanho de janela diz 94.0Mbit. Estes resultados são constantes através de testes repetidos.

A partir do meu teste, o lançamento de iperf (antigo) com tamanho de janela "x" e iperf (novo) com tamanho de janela "x" em vez de produzir resultados iguais ou muito próximos produz resultados totalmente diferentes. A única diferença que vejo é o antigo compilado como threads do win32 vs. pthreads, mas o paralelismo (-P 10) parece funcionar em ambos.

Alguém tem uma pista ou pode recomendar uma ferramenta que dê resultados que eu possa confiar ??

EDIT: Olhando para os rastreamentos do iperf (antigo), ele define o sinalizador de Escala da Janela TCP como 3 no pacote SYN, quando executo o iperf (novo), isso é definido como 0 no pacote inicial. Uma análise rápida do tamanho da janela através da troca mostra o iperf (antigo) indo e voltando, mas principalmente em 32k, enquanto o iperf (novo) permanece na maior parte em 64k. Talvez ajude alguém a ligar os pontos.

    
por Albert Mata 28.05.2012 / 16:38

3 respostas

2

A versão mais recente do iperf que você tem está usando uma biblioteca de threads diferente (threads do win32 vs. pthread). Só isso poderia explicar a diferença no desempenho.

Pode haver alguma outra diferença de código entre 1.xe 2.x de iperf. Pode ser simples, como as opções padrão alteradas de 1.x para 2.x (como TCP_WINDOW_SIZE, ...).

Certifique-se de que ambos estejam usando TCP (ou udp), por exemplo, executando novamente com a opção --udp.

Você pode tentar os arquivos da lista de discussão iperf-users, ou até postar sua pergunta lá.

    
por 01.03.2013 / 22:44
0

Isso não se qualifica como uma resposta adequada, mas você já tentou garantir que a versão do iperf na extremidade do Solaris corresponde àquela que você está executando no Windows. Eu não fui capaz de reproduzir isso usando o iperf 2.0.4 no Linux e 2.0.5 no Windows. Então, estou suspeitando que o comportamento que você está vendo tem a ver com a versão que está sendo usada na sua caixa Solaris não está jogando bem com a versão mais recente para o Windows.

    
por 14.08.2012 / 21:32
0

Não acredito que a última afirmação na @ resposta do Fahad esteja correta! Os clientes Solaris e Linux iPerf estão, definitivamente, empurrando a largura de banda correta para o analisador de protocolo. O Windows iPerf 2.x não está derivando o valor correto, mas o iPerf 1.07 é; portanto, tive que me adaptar à versão 1.x para obter resultados precisos.

    
por 08.04.2013 / 22:26