Latenza di rete: 100 Mbit contro 1 Gbit


11

Ho un server web con una connessione corrente di 100 Mbit e il mio provider offre un aggiornamento a 1 Gbit. Comprendo che ciò si riferisce alla velocità effettiva, ma più grandi sono i pacchetti, più velocemente possono essere trasmessi, quindi mi aspetto una leggera riduzione dei tempi di risposta (ad es. Ping). Qualcuno lo ha mai confrontato?

Esempio (server da 100 ma 100 mbit) con carico di 30 byte:

> ping server -i0.05 -c200 -s30
[...]
200 packets transmitted, 200 received, 0% packet loss, time 9948ms
rtt min/avg/max/mdev = 0.093/0.164/0.960/0.093 ms

Esempio (server da 100 ma 100 mbit) con carico di 300 byte (inferiore a MTU):

> ping server -i0.05 -c200 -s300
[...]
200 packets transmitted, 200 received, 0% packet loss, time 10037ms
rtt min/avg/max/mdev = 0.235/0.395/0.841/0.078 ms

Quindi dalle 30 alle 300 la media. la latenza aumenta da 0,164 a 0,395 - mi aspetto che questo sia un aumento più lento per una connessione da 1 GB a 1 GB. Mi aspetterei addirittura che 100mbit a 1gbit siano più veloci, se la connessione avviene tramite uno switch che prima attende fino a quando non riceve l'intero pacchetto.

Aggiornamento: leggi attentamente i commenti alle risposte! La connessione non è satura e non credo che questo aumento di velocità avrà importanza per gli umani per una richiesta, ma riguarda molte richieste che si sommano (Redis, Database, ecc.).

Per quanto riguarda la risposta di @LatinSuD :

> ping server -i0.05 -c200 -s1400
200 packets transmitted, 200 received, 0% packet loss, time 9958ms
rtt min/avg/max/mdev = 0.662/0.866/1.557/0.110 ms

Inoltre c'è una codifica diversa (10b / 12b?) Con nuove schede e cavi Ethernet gbit, quindi potrebbe avere il 25% di prestazioni in più su 10x (se saturo) vs 100Mbit forse?
huseyin tugrul buyukisik,

Risposte:


15

L'unico modo in cui la latenza calerebbe sensibilmente è se l'attuale collegamento a 100 Mbit è saturo. Se non è saturo, probabilmente non noterai alcun cambiamento.

Inoltre, il presupposto che il collegamento 1Gbit sarà in grado di supportare pacchetti più grandi non è corretto. La dimensione massima del pacchetto è determinata dall'MTU dei vari dispositivi lungo il percorso intrapreso dal pacchetto, a partire dalla scheda NIC sul server, fino all'MTU del computer del cliente. Nelle applicazioni LAN interne (quando si ha il controllo su tutti i dispositivi lungo il percorso), a volte è possibile aumentare l'MTU, ma in questa situazione, si è praticamente bloccati con l'MTU predefinito di 1500. Se si inviano pacchetti più grandi di ciò finirà per essere frammentato, riducendo così in realtà le prestazioni.


2
"Apprezzabilmente" è la parola chiave qui. Ho appena controllato due server con hardware identico e basso carico di rete, ma con velocità Ethernet diverse. Il tempo medio di ping (locale, con l'origine ping sulla stessa sottorete) è passato da 0,21 millisecondi a 0,17 millisecondi. Effettuando il ping degli stessi server da casa, ognuno ha avuto un tempo di 53 millisecondi. Ci sono troppi fattori al di fuori del controllo del tuo provider per rendere questo aggiornamento utile.
Mike Renfro,

1
+1 Tecnicamente c'è una differenza, tuttavia è completamente inapprezzabile a meno che la particolare applicazione non sia incredibilmente sensibile alla latenza.
Chris S,

Grazie per il test! Da 0,21 a 0,17 è un miglioramento del 20%, il che è fantastico. Non mi preoccupo del ping da casa (50ms) ma il tempo in cui la richiesta rimane al provider. Abbiamo ottimizzato al massimo tutte le elaborazioni (CPU) e non drive-IO (RAM / cache / ecc.), Quindi ora mi chiedo quanto la velocità di rete tra i server si aggiunga all'intera latenza totale. Ad esempio, facciamo ~ 20 richieste Redis per una richiesta server web. @MikeRenfro: puoi fare lo stesso test con un carico maggiore? Il ping normale è di 30 byte, in media. Redis intorno a 250. Mi aspetto che la differenza cresca.
Andreas Richter,

2
@Andreas; Penso che tu abbia perso del tutto il punto di quei commenti. Questo è un miglioramento di 40 nanosecondi. Un importo assolutamente impercettibile per gli esseri umani . E questo non è un numero cumulativo, non è come se ogni richiesta impiegasse più di 40 nanosecondi; è solo il primo sarà molto più veloce, quindi il secondo sarà allineato proprio dietro di esso in entrambi i modi.
Chris S,

1
@ChrisS: la domanda non riguardava la percettività : era una domanda se qualcuno l'avesse mai testato e Mike lo ha fatto. Inoltre non sono 40 nano-secondi, sono micro-secondi , quindi ti manca il punto per fattore 1000 ... complimenti. Credetemi, so che sto facendo ... Il 20% sarebbe sufficiente per giustificare i costi aggiuntivi.
Andreas Richter,

12

SÌ gbit ha una latenza inferiore, poiché:

  • lo stesso numero di byte può essere trasferito in tempi più rapidi

MA il miglioramento è apprezzabile solo se i pacchetti hanno una certa dimensione:

  • Pacchetto da 56 byte => praticamente nessun trasferimento più veloce
  • Pacchetto da 1000 byte => 20% di trasferimento più veloce
  • Pacchetti 20000 byte => trasferimento dell'80% più veloce

Quindi, se hai un'applicazione molto sensibile alla latenza (4ms contro 0,8ms, andata e ritorno per 20kb) e richiedi il trasferimento di pacchetti più grandi, il passaggio da 100mbit a gbit può darti una riduzione della latenza, anche se usi molto meno di 100mbit / s in media (= il collegamento non è saturato in modo permanente).

Server (100mbit) -> Switch (gbit) -> Server (100mbit):

size: 56 :: rtt min/avg/max/mdev = 0.124/0.176/0.627/0.052 ms
size: 100 :: rtt min/avg/max/mdev = 0.131/0.380/1.165/0.073 ms
size: 300 :: rtt min/avg/max/mdev = 0.311/0.463/2.387/0.115 ms
size: 800 :: rtt min/avg/max/mdev = 0.511/0.665/1.012/0.055 ms
size: 1000 :: rtt min/avg/max/mdev = 0.560/0.747/1.393/0.058 ms
size: 1200 :: rtt min/avg/max/mdev = 0.640/0.830/2.478/0.104 ms
size: 1492 :: rtt min/avg/max/mdev = 0.717/0.782/1.514/0.055 ms
size: 1800 :: rtt min/avg/max/mdev = 0.831/0.953/1.363/0.055 ms
size: 5000 :: rtt min/avg/max/mdev = 1.352/1.458/2.269/0.073 ms
size: 20000 :: rtt min/avg/max/mdev = 3.856/3.974/5.058/0.123 ms

Server (gbit) -> Switch (gbit) -> Server (gbit):

size: 56 :: rtt min/avg/max/mdev = 0.073/0.144/0.267/0.038 ms
size: 100 :: rtt min/avg/max/mdev = 0.129/0.501/0.630/0.074 ms
size: 300 :: rtt min/avg/max/mdev = 0.185/0.514/0.650/0.072 ms
size: 800 :: rtt min/avg/max/mdev = 0.201/0.583/0.792/0.079 ms
size: 1000 :: rtt min/avg/max/mdev = 0.204/0.609/0.748/0.078 ms
size: 1200 :: rtt min/avg/max/mdev = 0.220/0.621/0.746/0.080 ms
size: 1492 :: rtt min/avg/max/mdev = 0.256/0.343/0.487/0.043 ms
size: 1800 :: rtt min/avg/max/mdev = 0.311/0.672/0.815/0.079 ms
size: 5000 :: rtt min/avg/max/mdev = 0.347/0.556/0.803/0.048 ms
size: 20000 :: rtt min/avg/max/mdev = 0.620/0.813/1.222/0.122 ms

= in media su più server riduzione dell'80% della latenza per ping da 20kb

(Se solo uno dei collegamenti è gbit, avrai comunque una riduzione della latenza del 5% per un ping di 20kb.)


1
Con la maggior parte delle apparecchiature di rete memorizzate e inoltrate, un pacchetto deve essere ricevuto completamente da uno switch / router prima che venga trasmesso. Le connessioni più veloci riducono questo tempo, riducendo anche la latenza (purché la connessione non ottenga la velocità da più collegamenti paralleli).
Brian,

1
A causa della spiegazione, questa risposta è di gran lunga la migliore sulla pagina. Gli altri sembrano voler spiegare questo fatto ipotizzando un caso speciale: le prestazioni della rete su una lunga distanza / molti switch. Ciò è importante da considerare, soprattutto considerando la preoccupazione dell'OP (server web), ma questa risposta mostra anche quanta differenza può fare la differenza di velocità in un singolo hop.
Tyler,

3

Penso che tu abbia un malinteso fondamentale sulla latenza della larghezza di banda e sulla "velocità". La velocità è una funzione della larghezza di banda e della latenza. Ad esempio, prendere in considerazione una spedizione di dati su DVD spediti in tutto il paese impiegando 3 giorni per arrivare. Confrontalo con l'invio dei dati su Internet. Internet ha una connessione a latenza molto più bassa, ma per far corrispondere la "velocità" della connessione alla spedizione dovresti ricevere a 9.6MB al secondo ( esempio di riferimento da questa fonte ).

Nel tuo caso, l'aggiornamento a una larghezza di banda più elevata ti consentirebbe di servire più utenti simultanei ma non migliorerebbe la latenza di ogni singolo utente.


Ciò è errato: è sufficiente confrontare il ping con un payload diverso che è al di sotto dell'attuale MTU: ping server -i0.05 -c200 -s30 rispetto al server ping -i0.05 -c200 -s300 ... O parlando nell'esempio: il il camion con DVD 1mio guiderebbe più lentamente, perché è più pesante di quello con 1 DVD.
Andreas Richter,

2
Il tempo di ping di @andreas non è tutta la storia, quindi prendiamo in considerazione l'argomento che i pacchetti inferiori all'MTU arrivano più velocemente dei pacchetti all'intero MTU. la differenza è che non hai tutti i dati che il pacchetto 1 ha a pieno mtu nello stesso lasso di tempo impiegato dai 2 pacchetti per arrivare. La latenza è il tempo impiegato per l'arrivo di tutti i dati. per tornare all'analogia del camion, anche se ci vuole un camion con 1 Cd per arrivare in metà tempo mentre il camion che trasporta 500 cd richiede ancora quel camion 500 viaggi per consegnare i dati (750 giorni contro 3).
Jim B,

@JimB: sì, come detto la mia domanda non riguardava l'ampiezza, ma la velocità: l'intero camion ha bisogno di 10 ore per essere scansionato dalla dogana, quello piccolo solo 1 ora. 100 mbit / s significa anche che un pacchetto a 100 bit richiede un minimo teorico di 0.000954 ms e un pacchetto a 1000 bit un minimo teorico di 0,00954 ms. Naturalmente tempo di elaborazione / ecc. sulla scheda di rete / switch / ecc. rendere un pezzo più alto dell'intera latenza, ma mi aspetto anche che siano più veloci in uno switch da 1 gbit, ecc. Si prega di vedere il commento di @MikeRenfro, in realtà l'ha testato e ha ottenuto un aumento del 20%.
Andreas Richter,

@andreas - 20% sulla stessa sottorete che è irrilevante per la tua domanda
Jim B

1
@andreas Il 20% di un ping sub-millisecondo è ancora un ping sub-millisecondo. Anche il 150% di un ping al di sotto dei millisecondi, come nei test, non avrà importanza nel mondo reale. Hai davvero un'applicazione in cui è importante che i tuoi dati siano arrivati ​​lì in 0.0003 secondi anziché 0.0002 secondi ?
Shane Madden

2

Stai guardando il mondo attraverso un foro stenopeico. Un test valido delle differenze di latenza a velocità diverse sarebbe tra due schede NIC identiche collegate con un cavo cross-connect. Impostare le velocità di matematica delle schede di rete di 10 MB, 100 MB e 1000 MB. Ciò mostrerà che non vi è praticamente alcuna differenza di latenza alle diverse velocità. Tutti i pacchetti viaggiano alla stessa velocità del filo indipendentemente dalla larghezza di banda massima utilizzata. Una volta aggiunti gli switch con memorizzazione e inoltro della cache, tutto cambia. Il test della latenza tramite uno switch deve essere eseguito con solo due connessioni allo switch. Qualsiasi altro traffico può influire sulla latenza del test. Anche in questo caso lo switch può eseguire il roll-over dei log, regolare i contatori del tipo di pacchetto, aggiornare il clock interno, ecc. Tutto può influire sulla latenza.

Sì, il passaggio da 100 MB a 1 GB potrebbe essere più veloce (latenza inferiore) a causa di modifiche hardware, NIC diversa, switch diversi, driver diversi. Ho visto cambiamenti maggiori nella latenza del ping rispetto alle differenze del driver rispetto a qualsiasi altra modifica; larghezza di banda, switch, schede di rete di scaricamento, ecc.

Lo switch sarebbe il prossimo grande cambiamento con cut-through significativamente più veloce di store and forward per i test a trasmissione singola. Tuttavia, un negozio ben progettato e un interruttore in avanti possono superare l'interruttore di interruzione nelle prestazioni complessive sotto carico elevato. All'inizio del gigabit ho visto switch backplane ad alte prestazioni da 10 MB con latenza inferiore rispetto agli switch gigabit economici.

I ping test sono praticamente irrilevanti per l'analisi delle prestazioni quando si utilizza Internet. Sono test rapidi per farsi un'idea di ciò che accade sul trasporto al momento del test. Il test delle prestazioni di produzione è molto più complicato di un semplice ping. Gli switch ad alte prestazioni sono computer e sotto carico elevato si comportano in modo diverso: modifica della latenza.

Avere una scheda di rete più lenta o una scheda di rete impostata su una velocità più lenta, potrebbe effettivamente aiutare un server con raffiche simultanee limitando l'input al server utilizzando la cache degli switch. Una singola ritrasmissione può annullare qualsiasi diminuzione della latenza. Di solito sono importanti i livelli di traffico a carico medio-alto, non i singoli test ping. ad esempio, il vecchio Sun Ultrasparc lento (latenza più elevata per un singolo ping) supera il nuovo desktop Gigabit economico utilizzato come server di sviluppo con un carico della larghezza di banda inferiore al 70% 100 MB. Il desktop ha una scheda NIC gb più veloce, una connessione più veloce gb-gb, una memoria più veloce, più memoria, un disco più veloce e un processore più veloce ma non funziona così come hardware / software di classe server ottimizzati. Questo non vuol dire che un server ottimizzato corrente che esegue gb-gb non sia più veloce del vecchio hardware, anche in grado di gestire carichi di throughput più grandi. C'è solo più complessità nella domanda di "

Scopri se il tuo provider utilizza switch diversi per le connessioni da 100 MB a 1 GB. Se utilizzano lo stesso backplane di switch di quanto pagherei per l'aumento solo se i livelli di traffico superavano la larghezza di banda inferiore. Altrimenti potresti scoprire che in breve tempo molti altri utenti passeranno al gigabit e i pochi utenti rimasti sul vecchio switch ora hanno prestazioni più elevate - bassa latenza, durante carichi elevati sullo switch (carico complessivo dello switch, non solo sui tuoi server ).

Esempio di mele e arance: l'ISP locale ha fornito un nuovo switch per servizi in bundle, DSL e telefono. Inizialmente gli utenti hanno visto un aumento delle prestazioni. Il sistema è stato ipervenduto. Ora gli utenti che rimangono sul vecchio switch hanno prestazioni costanti più elevate. A tarda notte, gli utenti del nuovo sistema sono più veloci. La sera, sotto carico elevato, i vecchi client switch hanno chiaramente sovraperformato il nuovo sistema sovraccarico.

Una latenza inferiore non è sempre correlata a una consegna più rapida. Citi MySQl nelle 20 richieste di servire una sola pagina. Quel traffico non dovrebbe essere sulla stessa scheda NIC richiesta dalla pagina. Lo spostamento di tutto il traffico interno su una rete interna ridurrà le collisioni e il conteggio totale dei pacchetti sulla scheda NIC in uscita e fornirà guadagni maggiori rispetto al guadagno di latenza di 0,04 ms di un singolo pacchetto. Ridurre il numero di richieste per pagina per ridurre la latenza del caricamento delle pagine. Comprimi pagine, html, css, javascript, immagini per ridurre i tempi di caricamento della pagina. Queste tre modifiche forniranno maggiori guadagni complessivi in ​​corso rispetto al pagamento per la larghezza di banda non utilizzata per ottenere una riduzione della latenza di 0,04 ms. Il ping deve essere eseguito 24 ore ed essere mediato per vedere il reale cambiamento di latenza. Gli smart switch ora eseguono il throttling adattivo di tipo RTSP con piccoli aumenti iniziali della larghezza di banda e grandi trasferimenti strozzati. A seconda delle dimensioni della tua pagina (grafica, html / css / javascript di grandi dimensioni) potresti vedere latenze / larghezza di banda della connessione iniziale molto inferiori / superiori rispetto a una pagina di grandi dimensioni o trasferimenti di pagine complete. Se parte della tua pagina è in streaming, potresti vedere prestazioni drasticamente diverse tra la pagina e lo stream.


Grazie per tutto l'ottimo input: 1.) È lo stesso interruttore, 2.) Una seconda scheda NIC per suoni interni / esterni risonabili e che vale la pena provare, anche se ad esempio MySQL / ecc. sono tutti bidirezionali, quindi le collisioni "solo" sarebbero ridotte alla metà, 3.) Un test del mondo reale è preferibile solo a Nic-Nic, Mike lo ha fatto con una sottorete e ha ottenuto ciò che ti aspettavi reg. hardware: "56 byte = miglioramento del 19%, 200 byte = 27%, 1000 byte = 59%! Quindi più è grande il pacchetto, più conta. E Gigabit è aumentato solo da 0,17ms (56 byte) a 0,23ms (1000 byte ) => 35%, mentre 100 Mbit sono aumentati da 0,21 a 0,56 => 166% ".
Andreas Richter,

1

Supponiamo che i pacchetti da 300 byte (se lo usi -s 300, sarebbero effettivamente più grandi a causa delle intestazioni).

300 bytes = 2400 bits
2400 bits / 100Mbit/sec = 0.024ms

0,024 ms è approssimativamente il tempo effettivo richiesto per inviare il frame (senza contare il tempo di accesso medio né le intestazioni).

In una sequenza di ping-pong ci vorrebbe il doppio del tempo (0,048 ms), più il tempo necessario al sistema operativo per elaborare la query.

Ciò significa per me che la tua latenza è causata da un 90% di diversi fattori generali. Non sono sicuro se vedrai molte differenze con Gb. Una differenza probabilmente inferiore a 1ms non sarà evidente su un server web.

Ad ogni modo potresti provare con un pacchetto davvero grande come 1400 byte?


Qualcuno ha già eseguito i numeri per un determinato server e la differenza è tornata a 40 nanosecondi. Il tuo pronostico è spento di un fattore 25 volte troppo grande.
Chris S,

@LatinSuD: grazie per l'approccio costruttivo e non incolpare che non so cosa sto facendo. Pubblicherò i risultati nella domanda reale poiché posso formulare lì. Ma a proposito. Mi aspetto anche che l' overhead del 90% abbia un aumento di velocità , poiché anche i processori nelle schede di rete, ecc. Sono più veloci per GBit (si spera). @ChrisS: micro-secondi e non capisco cosa intendi con il 25.
Andreas Richter

Mi scuso per aver mescolato micro e nano; in ogni caso è impercettibile. LatinSuD ha ipotizzato una differenza di 1 millisecondo intero, che è 25 volte superiore ai 40 microsecondi trovati da Mike.
Chris S,

@ChrisS: nessuna preoccupazione. 0,04ms era per un ping di 38 byte, se il nostro pacchetto server-server medio è di circa 300 byte, la differenza potrebbe essere 0,4ms. Se ora facciamo 20 richieste per un server web requst (Redis, MySQL, ecc.), Ciò porterebbe ad un aumento della velocità di 8 ms, che sarebbe un aumento del 10% della velocità per le attuali richieste web e giustificherebbe totalmente i costi aggiuntivi. Semplicemente non ho le risorse qui per eseguire i test da solo, ma credetemi, anche se non è percepibile dagli umani, può comunque essere rilevante. Come l'elettricità o dio.
Andreas Richter,

1
@Andreas, dubito fortemente che si ridimensionerà in quel modo; sia un pacchetto 10 volte più grande ha una latenza 10 volte inferiore e 20 volte il numero di pacchetti 20 volte più veloce. In caso contrario, si tratta di una riduzione del 10% del sovraccarico della rete, è comunque necessario tenere conto del tempo trascorso nell'applicazione, che probabilmente sarà uno o più ordini di grandezza più lunghi del componente di latenza di rete. Spero che funzioni bene per te in ogni caso.
Chris S,

1

Questo dipende dal tipo di switch a cui ti stai connettendo. Su alcuni fornitori (come Crisco ... intendo Cisco), i pacchetti ICMP torneranno alla CPU ( bavaglio ).

Potresti scoprire che un test migliore sarebbe quello di eseguire un test da host a host utilizzando un collegamento da 100 Mbps e 1 Gbps (ovvero non un test da host a switch o da host a router).

Alla fine della giornata, la latenza scenderà alla velocità di inoltro sullo switch e ai dettagli dell'architettura dello switch (dove gli ASIC sono posizionati sul tabellone, come viene gestito il blocco tra le line card, ecc.). Buona fortuna con i tuoi test.


Grazie, mi riferisco solo ai test Host-Switch-Host e non capisco tutto lo switch interno. Mi piacerebbe semplicemente vedere, se qualcuno avesse mai fatto un benchmark: Host- (100mbit) -Switch- (100mbit) -Host, Host- (100mbit) -Switch- (1gbit) -Host and Host- (1gbit) -Switch- (1gbit ) -Host latenza per pacchetti di diverse dimensioni. Se nessuno lo ha fatto, lo farò e pubblicherò la risposta qui.
Andreas Richter,

1
Ero solito rivendere il cambio. Basti dire che le tue scoperte mi suggeriscono che sei collegato a uno switch Cisco. Esistono altre alternative che offrono latenze più basse. Come hai giustamente sottolineato, una maggiore larghezza di banda non si traduce in latenze più basse (Comcast è il principale colpevole per rendere le persone stupide in questo senso). Dato che ti trovi in ​​un ambiente ospitato, probabilmente sei bloccato con il loro hardware (e poiché in un ambiente ospitato, i pochi microsec extra non sono tremendamente cruciali). Mostrami milioni di pps allo stato stazionario e mi interesserò a fornire maggiori dettagli. :)
Sean,
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.