locked
Rete LAN: perchè lenta con Windows ma velocissima con Linux? RRS feed

  • Domanda

  • Salve,
    nella mia LAN ho un server IBM con ubuntu server installato e un PC con Windows 7 Pro x64.

    Il PC è dotato di una vecchia scheda madre Asus A8N-SLI Deluxe con Windows 7 pro x64, 4GB ram e 1 CPU AMD Dual-Core Opteron 180

    Facendo il boot dal mio PC con Ubuntu Desktop LiveCD e utilizzando iperf come software di test per connettività tra il PC e il server sono riuscito a raggiungere questi valori:

    Ubuntu Server:
    $ iperf -s

    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.0.50 port 5001 connected with 192.168.0.119 port 48730
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-10.0 sec  1.10 GBytes   942 Mbits/sec

    PC client:
    iperf -c 192.168.0.50

    ------------------------------------------------------------
    Client connecting to 192.168.0.50, TCP port 5001
    TCP window size: 21.0 KByte (default)
    ------------------------------------------------------------
    [  3] local 192.168.0.119 port 48730 connected with 192.168.0.50 port 5001
    [  3]  0.0-10.0 sec  1.10 GBytes    944 Mbits/sec


    Facendo lo stesso test tra il mio PC con windows e il server son riuscito a raggiuntere questi deludenti valori:

    Ubuntu Server:
    $ iperf -s

    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.0.50 port 5001 connected with 192.168.0.110 port 50554
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-10.0 sec   440 MBytes   369 Mbits/sec


    PC client:
    c:\>iperf -c 192.168.0.50
    ------------------------------------------------------------
    Client connecting to 192.168.0.50, TCP port 5001
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    [156] local 127.0.0.1 port 50553 connected with 192.168.0.50 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [156]  0.0-10.0 sec   440 MBytes   369 Mbits/sec


    Come faccio a comprendere dove si trova il problema, analogo a come ho risolto localmente la velocità di copia file, e come risolverlo?
    Ho provato anche ad effettuare dei test con un crossover cable collegando direttamente i due dispositivi (PC e Server), disabilitando l'antivirus (Kaspersky Internet Security 2013), provando a fare il boot di Windows in safe mode con rete. Ho anche fatto questo test da un portatile per verificare se non fosse il mio PC con windows il problema. Ho anche effettuato un test locale da PC a PC.
    Ecco i risultati:

    Ethernet Crossover Cable between PC and Notebook

    (both have Gbit NIC)

    ================================================

     

    # Server - PC

    iperf -s

    ------------------------------------------------------------

    Server listening on TCP port 5001

    TCP window size: 8.00 KByte (default)

    ------------------------------------------------------------

    OpenSCManager failed - Accesso negato. (0x5)

    [252] local 192.168.0.110 port 5001 connected with 192.168.0.120 port 49487

    [ ID] Interval       Transfer     Bandwidth

    [252]  0.0-10.0 sec   202 MBytes   169 Mbits/sec

     

    # Client - Notebook

    C:\>iperf -c 192.168.0.110

    ------------------------------------------------------------

    Client connecting to 192.168.0.110, TCP port 5001

    TCP window size: 8.00 KByte (default)

    ------------------------------------------------------------

    [156] local 127.0.0.1 port 49486 connected with 192.168.0.110 port 5001

    [ ID] Interval       Transfer     Bandwidth

    [156]  0.0-10.0 sec   202 MBytes   169 Mbits/sec

     

     

    Ethernet Crossover Cable between IBM Server and Notebook

    (both have Gbit NIC)

    ========================================================

     

    # Server – Ubuntu

    $ iperf -s

    ------------------------------------------------------------

    Server listening on TCP port 5001

    TCP window size: 85.3 KByte (default)

    ------------------------------------------------------------

    [  4] local 192.168.0.50 port 5001 connected with 192.168.0.120 port 49490

    [ ID] Interval       Transfer     Bandwidth

    [  4]  0.0-10.0 sec   584 MBytes   490 Mbits/sec

     

     

    # Client - Notebook

    C:\>iperf -c 192.168.0.50

    ------------------------------------------------------------

    Client connecting to 192.168.0.50, TCP port 5001

    TCP window size: 8.00 KByte (default)

    ------------------------------------------------------------

    [156] local 127.0.0.1 port 49489 connected with 192.168.0.50 port 5001

    [ ID] Interval       Transfer     Bandwidth

    [156]  0.0-10.0 sec   584 MBytes   490 Mbits/sec

     

     

    Ethernet Crossover Cable between PC and PC

    (Gbit NIC)

    ==========================================

     

    # Server

    iperf -s

    ------------------------------------------------------------

    Server listening on TCP port 5001

    TCP window size: 8.00 KByte (default)

    ------------------------------------------------------------

    OpenSCManager failed - Accesso negato. (0x5)

    [252] local 192.168.0.110 port 5001 connected with 192.168.0.110 port 52970

    [ ID] Interval       Transfer     Bandwidth

    [252]  0.0-10.0 sec  1.43 GBytes  1.23 Gbits/sec

     

    # Client

    C:\>iperf -c 192.168.0.110

    ------------------------------------------------------------

    Client connecting to 192.168.0.110, TCP port 5001

    TCP window size: 8.00 KByte (default)

    ------------------------------------------------------------

    [156] local 192.168.0.110 port 52970 connected with 192.168.0.110 port 5001

    [ ID] Interval       Transfer     Bandwidth

    [156]  0.0-10.0 sec  1.43 GBytes  1.23 Gbits/sec


    Ringrazio in anticipo per il supporto offertomi.
    Spiro


    giovedì 21 febbraio 2013 13:33

Tutte le risposte

  • Ciao, Windows 7 ha molte funzionalità per incrementare la velocità di trasferimento dati nella rete ma in alcune condizioni queste possono causare l'effetto opposto.

    Penso che nel tuo caso il problema possa dipendere dal supporto al NetDMA di Windows 7 (abilitato di default). Per ulteriori informazioni su questa funzionalità puoi consultare questo articolo relativo a Windows Server 2008: http://support.microsoft.com/kb/951037

    Prova a disabilitare questa caratteristica e a ripetere i test.

    In alternativa la problematica potrebbe derivare anche dalla funzionalità di Auto-Tuning Level che non riesce a determinare correttamente le condizioni del collegamento impostando il TCP Receive Window (RWIN) in maniera non corretta. Per ulteriori informazioni puoi consultare questo articolo: http://support.microsoft.com/kb/947239

    Anche in questo caso si può provare a disabilitare la caratteristica e a ripetere i test.

    sabato 23 febbraio 2013 20:45
    Moderatore
  • Ciao Fabrizio,

    per prima cosa voglio ringraziarti molto per aver risposto al mio Thread visto che nessuno fino ad ora lo ha fatto.

    Auto-Tuning level è stato già modificato. Ho anche implementato la prima modifica. Questo è come la mia interfaccia al momento è configurata:

    netsh interface tcp show global
    Query sullo stato attivo in corso...

    Parametri globali TCP
    ----------------------------------------------
    Stato Receive-Side Scaling: enabled
    Stato Chimney Offload: disabled
    Stato NetDMA: enabled
    Accesso cache diretto (DCA): disabled
    Livello regolazione automatica finestra ricezione: disabled
    Provider controllo congestione componente aggiuntivo: none
    Funzionalità ECN: disabled
    Timestamp RFC 1323: disabled
    ** L'impostazione autotuninglevel indicata sopra risulta dall'euristica di ridimensionamento delle finestre, che ignora la configurazione locale o dei criteri in almeno un profilo.

    Appena riesco effettuerò nuovamente i test.
    Per il momento grazie infinite.
    Spiro

    giovedì 28 febbraio 2013 13:56
  • OK, facci sapere.


    giovedì 28 febbraio 2013 13:59
    Moderatore
  • Ho effettuato quanto dettomi, come sopra potete vedere.
    Ho rieffettuato i test e non è cambiato nulla. Credo proprio che abbandono la speranza in quanto non ne vedo alcuna. Sarebbe da passare a Linux o MAC.

    PRIMO TEST

    server:
    root@ubuntu:~# iperf -s
    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.0.50 port 5001 connected with 192.168.0.110 port 51255
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-20.0 sec  1.09 GBytes   466 Mbits/sec

    client:
    C:\Temp>iperf -c 192.168.0.50 -w 1024k -i 2 -t 20 -f M
    ------------------------------------------------------------
    Client connecting to 192.168.0.50, TCP port 5001
    TCP window size: 1.00 MByte
    ------------------------------------------------------------
    [156] local 127.0.0.1 port 51254 connected with 192.168.0.50 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [156]  0.0- 2.0 sec   111 MBytes  55.4 MBytes/sec
    [156]  2.0- 4.0 sec   110 MBytes  55.1 MBytes/sec
    [156]  4.0- 6.0 sec   109 MBytes  54.4 MBytes/sec
    [156]  6.0- 8.0 sec   109 MBytes  54.5 MBytes/sec
    [156]  8.0-10.0 sec   111 MBytes  55.7 MBytes/sec
    [156] 10.0-12.0 sec   107 MBytes  53.4 MBytes/sec
    [156] 12.0-14.0 sec   107 MBytes  53.6 MBytes/sec
    [156] 14.0-16.0 sec   116 MBytes  58.2 MBytes/sec
    [156] 16.0-18.0 sec   116 MBytes  58.1 MBytes/sec
    [156] 18.0-20.0 sec   115 MBytes  57.5 MBytes/sec
    [156]  0.0-20.0 sec  1112 MBytes  55.5 MBytes/sec

    SECONDO TEST

    server:
    root@ubuntu:~# iperf -s
    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 85.3 KByte (default)
    ------------------------------------------------------------
    [  4] local 192.168.0.50 port 5001 connected with 192.168.0.110 port 51269
    [ ID] Interval       Transfer     Bandwidth
    [  4]  0.0-10.0 sec   397 MBytes   333 Mbits/sec


    client:
    C:\Temp>iperf -c 192.168.0.50
    ------------------------------------------------------------
    Client connecting to 192.168.0.50, TCP port 5001
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    [156] local 127.0.0.1 port 51268 connected with 192.168.0.50 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [156]  0.0-10.0 sec   397 MBytes   333 Mbits/sec

    Cordiali saluti,
    Spiro

    sabato 2 marzo 2013 07:01
  • Ma il server e il client sono collegati direttamente tramite cavo? Hai modo di fare qualche test utilizzando invece un server Windows?

    C'è da dire che il networking tra Windows e Linux non ha mai brillato in fatto di prestazioni, quindi i client Linux e MacOS X (sempre base Unix) sono sicuramente avvantaggiati in questo caso.


    sabato 2 marzo 2013 19:58
    Moderatore
  • Ciao Fabrizio,

    I test che ho effettuato, come commentato sopra, sono connessi tra loro o tramite infrastruttura Ethernet locale LAN o direttamente con cavo Ethernet Crossover.
    Onde evitare errori di interpretazioni non utilizzo un server Windows. I test sono eseguiti tra un server IBM con Ubuntu server e il mio PC con windows 7 e con un portatile con windows 7.

    In aggiunta sono riuscito ad effettuare un ulteriore test, che non avevo fatto, tra il portatile e il mio PC.

    Ecco i risultati:

    (1) Custom Test
    ===============

    server (laptop):

    C:\Temp>iperf -s
    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    OpenSCManager failed - Accesso negato. (0x5)
    [276] local 192.168.0.120 port 5001 connected with 192.168.0.110 port 61136
    [ ID] Interval       Transfer     Bandwidth
    [276]  0.0-10.0 sec   275 MBytes   230 Mbits/sec
    [268] local 192.168.0.120 port 5001 connected with 192.168.0.110 port 61211
    [ ID] Interval       Transfer     Bandwidth
    [268]  0.0-20.0 sec   520 MBytes   218 Mbits/sec


    client (Desktop PC):

    C:\Temp>iperf -c 192.168.0.120 -w 1024k -i 2 -t 20 -f M
    ------------------------------------------------------------
    Client connecting to 192.168.0.120, TCP port 5001
    TCP window size: 1.00 MByte
    ------------------------------------------------------------
    [156] local 127.0.0.1 port 61210 connected with 192.168.0.120 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [156]  0.0- 2.0 sec  50.7 MBytes  25.3 MBytes/sec
    [156]  2.0- 4.0 sec  54.1 MBytes  27.1 MBytes/sec
    [156]  4.0- 6.0 sec  46.3 MBytes  23.1 MBytes/sec
    [156]  6.0- 8.0 sec  50.4 MBytes  25.2 MBytes/sec
    [156]  8.0-10.0 sec  54.7 MBytes  27.3 MBytes/sec
    [156] 10.0-12.0 sec  46.9 MBytes  23.5 MBytes/sec
    [156] 12.0-14.0 sec  51.3 MBytes  25.6 MBytes/sec
    [156] 14.0-16.0 sec  57.5 MBytes  28.8 MBytes/sec
    [156] 16.0-18.0 sec  50.6 MBytes  25.3 MBytes/sec
    [156] 18.0-20.0 sec  57.4 MBytes  28.7 MBytes/sec
    [156]  0.0-20.0 sec   520 MBytes  26.0 MBytes/sec


    (2) Basic Tests
    ===============

    server (laptop):

    C:\Temp>iperf -s
    ------------------------------------------------------------
    Server listening on TCP port 5001
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    OpenSCManager failed - Accesso negato. (0x5)
    [268] local 192.168.0.120 port 5001 connected with 192.168.0.110 port 61325
    [ ID] Interval       Transfer     Bandwidth
    [268]  0.0-10.2 sec   250 MBytes   206 Mbits/sec


    client (Desktop PC):

    C:\Temp>iperf -c 192.168.0.120
    ------------------------------------------------------------
    Client connecting to 192.168.0.120, TCP port 5001
    TCP window size: 8.00 KByte (default)
    ------------------------------------------------------------
    [156] local 127.0.0.1 port 61324 connected with 192.168.0.120 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [156]  0.0-10.2 sec   250 MBytes   206 Mbits/sec

    Come si può vedere non sono dei risultati incoraggianti.

    Se ho una scheda di rete in entrambe i dispositivi di 1Gbit/sec come mai ottengo risultati così bassi?

    è questo di cui sono molto rammaricato. I test di cui sono molto fiero sono quelli effettuati tra Linux server e Linux Desktop Live CD (sul mio PC) che riportano una velocitò di 942 Mbits/sec

    Ora, cosa c'è che non comprendo o che sbaglio o che pretendo Windows faccia ed invece non riesce a fare?

    Grazie,

    Spiro

    domenica 3 marzo 2013 15:22
  • Se i test vengono eseguiti sempre attraverso iperf potrebbero anche non essere attendibili, considera che è sempre un software di terze parti.

    http://social.technet.microsoft.com/Forums/en/w7itpronetworking/thread/5388af17-6429-4834-8b46-5f1d895e6cca

    Hai confermato ad esempio che queste prestazioni molto inferiori sono presenti anche in scenari di utilizzo reali?

    Prova ad eseguire un test con -w 256k -l 256k per entrambi i computer ed eventualmente anche dei test incrociati con altre utility.

    domenica 3 marzo 2013 16:55
    Moderatore