Perché ricevo solo 300-400 Mbit / s sulla mia rete 1000 Mbit / s?


17

La mia configurazione è così:

Laptop <--> Router <--> Desktop

Tutti supportano Gigabit Ethernet. Sto utilizzando il benchmark TCP / IP "iperf" su laptop e desktop e non ho mai ottenuto un throughput raw superiore a 400 Mbit / s. Il laptop è un Intel Core 2 Duo 2 GHz con Windows XP, il desktop è un Intel Core 2 quad 2.4 GHz con Windows 7. Quali elementi posso vedere per massimizzare la velocità di rete tra di loro? Impostazioni del software? Un modo per sapere se il mio cavo non è conforme alle specifiche? Come sapere se il controller Gigabit Ethernet in uno dei dispositivi non è in grado di raggiungere la velocità massima?

Risposte:


11

1 Gbit / s è il massimo teorico di questa connessione.

Molte cose possono influenzare questo.

Aspettati un successo nelle prestazioni delle tue schede di rete di bordo, poiché molto probabilmente saranno (in base alle descrizioni dei dispositivi "Laptop" e "Desktop") adattatori basati su host che si basano sulla CPU per elaborare il traffico di rete. Pertanto la velocità sarà influenzata dalla CPU che fa altre cose (come ad esempio il trasferimento dei dati dagli HDD al sottosistema di rete).

Inoltre, a seconda di quale sia il "router", potrebbe tentare di elaborare i dati mentre passa dalla porta LAN alla porta LAN, quindi le sue velocità di elaborazione potrebbero anche influenzare le velocità di trasferimento dei dati, indipendentemente dalla velocità delle sue "porte" siamo.

Se fossi in te il mio prossimo test sarebbe quello di procurarmi un cavo patch CR6 "abbastanza lungo" e collegare il notebook direttamente al PC (potresti essere in grado di cavartela con un cavo diretto, come molte auto di supporto di NIC supportano -crossover in questi giorni).

In questo modo (almeno) puoi facilmente eliminare o identificare il router (e / o il cablaggio esistente) come un collo di bottiglia.


Vedi en.wikipedia.org/wiki/… per due possibili piedinature per realizzare un cavo crossover gigabit.
undici81

Buone informazioni di sicuro. In questo caso, se l'utente non è abituato a fabbricare un cavo e l'obiettivo è quello di eliminare possibili rallentamenti, allora probabilmente sta meglio usando un cavo di fabbrica. Niente di peggio di una crimpatura allentata. ;)
Ƭᴇcʜιᴇ007,

14
Solo FYI, con Gigabit Ethernet, i cavi crossover non sono più necessari. Tutti i controller Ethernet Gigabit devono essere in grado di "autosense" il cavo, quindi è possibile utilizzare un cavo standard per collegarsi ai dispositivi Ethernet Gigabit insieme. Proverò a collegare il mio laptop direttamente al desktop e vedrò se c'è differenza.
dav

@davr potresti avere qualche successo?
ebrahim.mr

8

iperf utilizza per impostazione predefinita una finestra di dimensioni piuttosto ridotte.

Aumenta la finestra o eseguila in modalità UDP e saturerà facilmente una connessione a 1 Gbit / s.


Non ci ho pensato, ci proverò.
dav

1
Non lo saturerai con hardware di qualità consumer. La CPU viene generalmente limitata dal bus PCI o PCI-Express. cioè la CPU non può spostare i dati dalla RAM alla scheda di rete abbastanza velocemente. L'hardware di livello server sembra fare di meglio. Lo so, sono un programmatore e ho provato a fare proprio questo. Avvicinarsi ma ora limitato dal mio hardware.
Matt H

1
ha funzionato per me, mi ha sbattuto la testa per un'ora cercando di capire perché l'iperf di Windows mi dà 250mbit / sec e Ubuntu avviato sulla stessa macchina mi dà 925mbit / sec. risulta iperf sui valori predefiniti di Windows alla dimensione della finestra 8k tcp e alla dimensione della finestra 88k su linux.
Omry,

@Omry, iperf su windows è un cane da diverse prospettive. Per lo più ho rinunciato e ho eseguito iperf solo su Linux
Mike Pennington,

4

Jeff Atwood ha una buona analisi del perché il throughput del mondo reale di una rete Gigabit è più vicino, nei suoi calcoli, a 30 MB / s. (grande 'B', non piccola 'b')

... sicuramente non dovresti aspettarti il ​​ridimensionamento perfetto che abbiamo ottenuto passando da 10baseT a 100baseT. Senza alcuna modifica importante, otterrai solo una frazione del decuplo miglioramento della larghezza di banda che potresti aspettarti


Lo strumento "pcattcp" che sta usando è un pezzo di merda. Il mio netbook linux a 900 mhz (che probabilmente è veloce come la sua macchina era nel 2005) fa 300 MB / s su loopback.
user23307

Sì, iperf offre prestazioni notevolmente migliori rispetto al loopback rispetto a pcattcp. Per ora testerò su iperf se non avrò notizia di qualcos'altro che è meglio.
dav

1
Inoltre ho già superato i suoi 240mbit, e quell'articolo ha 5 anni, quindi non è più pertinente, visto come la tecnologia avrebbe dovuto progredire notevolmente da allora.
dav

Bene, considerando che l'interfaccia di loopback è virtuale (nulla viene nemmeno trasferito sulla scheda di rete), ti aspetteresti prestazioni molto migliori (fondamentalmente è quindi processo da elaborare e nessun HDD viene toccato). Ricevo 8.09 Gbit / s (1035Mbytes / s) sull'interfaccia di loopback.
Matt H

3

Se tutto è gigabit, potresti provare ad abilitare i jumbo frame . Uno dei miei amici lo ha fatto con il suo computer di casa e ha notato un enorme aumento della produttività. Tuttavia, ci sono alcuni svantaggi per le applicazioni a bassa latenza come VOIP, come menzionato nell'articolo.


L'aumento non dovrebbe essere così drammatico per la maggior parte delle applicazioni. Tutto ciò farà semplicemente meno sovraccarico del protocollo TCP o UDP per pacchetto. Inoltre, per risultati ottimali, i tuoi switch / router dovrebbero supportare anche i frame jumbo. Dubito che lo farebbe.
Matt H

Per qualsiasi risultato, i tuoi switch devono supportare i frame jumbo. Non è possibile che il dispositivo solo L2 rispedisca un errore ICMP "Pacchetto troppo grande" per indicare alla macchina che deve utilizzare una dimensione del pacchetto inferiore.
cpt_fink,

1

Hai detto che stai usando un router? si tratta di un router standard di consumo (non switch)?

Direi che probabilmente è il tuo collo di bottiglia. Per verificarlo, collega il laptop direttamente al desktop. Imposta il tuo laptop e desktop per utilizzare un indirizzo IP statico come 192.168.1.10 (laptop), 192.168.1.11 (desktop).

Ciò dovrebbe consentire al laptop di comunicare direttamente con il desktop. Esegui iperf tra di loro e riporta il risultato qui.

Ciò dovrebbe funzionare poiché la maggior parte delle schede di rete moderne è in grado di rilevare automaticamente i cavi di trasmissione / ricezione, diversamente dai vecchi tempi in cui era necessario creare un cavo crossover.

Se vedi un netto aumento, allora il tuo router è il colpevole. Alcuni di essi hanno switch sul retro, altri possono effettivamente instradare tra le porte. Molti di questi router hanno prestazioni terribili. Se trovi che questo è il problema, allora se fossi in te aggiornerei il router (che probabilmente va bene per l'uso di Internet) o andrei a comprarti uno switch GigE e collegarlo a cascata sullo switch del router. Collega il tuo laptop e desktop allo switch. In questo modo, ignoreranno il router per parlare tra loro.

Assicurati di ripristinare il laptop e il desktop su DHCP al termine dell'esperimento.

Per darti un'idea, dovresti pensare che penso a 650 Mbit / se superiori. iperf non usa l'hard disk a meno che tu non lo dica. Quindi è memoria per memoria o davvero testare la rete.

Uno degli altri colli di bottiglia è in realtà la velocità con cui la CPU può trasferire i dati dalla memoria alla scheda di rete. Le reti su PCI Express sembrano funzionare meglio. Penso che i laptop siano generalmente abbastanza economici in questi giorni, quindi se non vedi molto sopra, questo potrebbe essere l'altro collo di bottiglia.

Inoltre, gli switch di livello consumer spesso possono far fronte solo alla commutazione di 1 GB tra due porte qualsiasi, mentre gli switch gestiti di fascia alta possono passare contemporaneamente alla velocità del filo su tutte le porte. Questo è uno dei motivi per cui costano molto di più.


1

Abbiamo eseguito numerosi test e si è ridotto al sistema operativo.

Se passiamo da Ubuntu 11.04 a Ubuntu 11.04 (lo stesso con CentOS per macchine Linux), la velocità effettiva è di ~ 938-941 MBits / s costanti. Se passiamo da Windows 7 x64 SP1 Ultimate a Ubuntu 11.04, varia da ~ 440-475 MBits / s. Se passiamo da Windows 2008 R2SP1 x64 a Ubuntu 11.04, la velocità misura ~ 435-635 MBits / s.

Come puoi vedere, le macchine basate su Linux utilizzano completamente i collegamenti Gigabit rispetto a Windows. Stiamo esaminando le impostazioni di Windows che porterebbero allo stesso throughput di Linux sullo stesso hardware. Le limitazioni del disco rigido non sono un fattore poiché questo è in memoria. Per la cronaca, le macchine che abbiamo utilizzato avevano unità a 7200 RPM con SATA 3.0. Sia Ubuntu 11.04 (o base Linux) che Windows hanno superato la velocità teorica di quei collegamenti SATA.


Grazie per le informazioni, aggiorna la tua risposta se trovi delle impostazioni che influenzano la velocità su Windows
davr

questo mi fa chiedermi se iperf non è l'unica parte di Windows che per impostazione predefinita ha una dimensione del pacchetto inferiore a Linux, vedere superuser.com/a/95587/16966
matt wilkie,

0

Le velocità di trasferimento sono buone solo quanto l'anello più debole della catena. Potrebbe non essere la velocità della rete, ma la velocità di scrittura / lettura dei dischi rigidi.

È possibile scaricare il software RamDisk e creare un RamDisk su entrambi i computer. Inserisci un file di dimensioni decenti al suo interno ed esegui un trasferimento in rete tra i RamDisk. Questo dovrebbe mostrare la velocità effettiva della tua rete che non sarà strozzata dalle velocità del tuo disco rigido.


2
Ecco perché ho citato "iperf", ma immagino che non sia quello comune di uno strumento. Fondamentalmente verifica direttamente la velocità della rete, senza leggere / scrivere sul disco rigido, quindi non c'è il collo di bottiglia. Mi rendo conto che l'HDD può essere un collo di bottiglia nell'uso del mondo reale.
dav

0

Non è una risposta diretta alla tua domanda, ma recentemente abbiamo ottenuto il seguente risultato iperftra due box Linux (8 core, 2,66 GHz ciascuno):

------------------------------------------------------------
Client connecting to 192.168.74.15, TCP port 5001
TCP window size:  192 KByte (default)
------------------------------------------------------------
[  3] local 192.168.74.25 port 54016 connected with 192.168.74.15 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

con MTU = 1500 (cioè non usando i frame jumbo). Ciò dovrebbe darti un'idea di quale prestazione è in linea di principio possibile.

Le schede di rete (uscita lspci) sono:

82571EB Gigabit Ethernet Controller

su entrambi i lati.

Potresti voler controllare il carico della CPU sul server e specialmente sul lato client e vedere se questo è vicino al 100%. Anche se devo dire che sul nostro sistema il core più occupato è inattivo all'80% (83%) sul lato ricevente (mittente) mentre gli altri 7 sembrano inattivi al 100% (controllato con mpstat).

Funziona iperfsenza l' -uopzione, ovvero utilizza TCP.


Penso che dovresti avere> 500 o 600 mbit / s su hardware desktop 1 - 2 anni.
Matt H

-4

A differenza di Fibre Channel e tecnologie simili che utilizzano sofisticati schemi di allocazione della larghezza di banda, Ethernet è un protocollo di "ascolto e squawk". Ethernet prima ascolta se qualcuno sta trasmettendo, in tal caso attendi in caso contrario, quindi invia. Il problema è che se due o più parti che desiderano trasmettere ascoltano contemporaneamente, invieranno anche allo stesso tempo! Ciò causerà collisioni e ritrasmissioni. Gli interruttori di fantasia eliminano molto di tutto ciò, ma non tutti.

Con Ethernet dovresti aspettarti di vedere circa il 30-40 percento di larghezza di banda (sembra che tu stia ottenendo questo ... Potrei sbagliarmi sul # esatto, molto dipende dalla qualità dell'interruttore e così via) prima che inizino a verificarsi molte collisioni, con la tecnologia del tessuto è qualcosa come l'80%. Ethernet è economica, il canale in fibra non lo è. . . Non sono sicuro di ciò che Ethernet 4G fa per aggirare questo. . . potrebbe avere una struttura di rete più "simile" simile al canale in fibra e agli amici. Questa è una semplificazione eccessiva, ma è sostanzialmente corretta.


2
Sì, non sto usando un hub "stupido". Penso che la maggior parte delle persone in questi giorni utilizzerà switch o router intelligenti che gestiscono i dispositivi di connessione direttamente tra loro, eliminando le collisioni. Inoltre il mio test coinvolge solo due dispositivi collegati a un singolo router, quindi le collisioni non sarebbero un problema nel mio caso particolare.
dav

davr - scusa mentre interpreto l'avvocato dei diavoli per un momento. . . Cosa impedisce ai tuoi due host di tentare di parlare contemporaneamente? Inoltre, non hai menzionato il tipo di dati trasmessi. . . è quasi esclusivamente TCP o ci sono molti flussi di dati (audio, video, ecc.)? Entrambi i computer trasmettono i dati contemporaneamente o esiste una relazione client / server più delimitata?
TheErudite Troglodyte,

2
Sto usando uno speciale programma di benchmarking TCP / IP in cui solo un computer invia e l'altro ascolta. Ma anche così, Ethernet è full duplex ... se hai solo due macchine, possono entrambe inviare e ricevere l'intera larghezza di banda contemporaneamente.
dav
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.