Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > e05c4514608e650af9b28d9be1d35a18 > files > 378

howto-html-it-10.1-4mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
 <TITLE>Linux Ethernet-HOWTO: Suggerimenti per migliorare le prestazioni</TITLE>
 <LINK HREF="Ethernet-HOWTO-4.html" REL=next>
 <LINK HREF="Ethernet-HOWTO-2.html" REL=previous>
 <LINK HREF="Ethernet-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="Ethernet-HOWTO-4.html">Avanti</A>
<A HREF="Ethernet-HOWTO-2.html">Indietro</A>
<A HREF="Ethernet-HOWTO.html#toc3">Indice</A>
<HR>
<H2><A NAME="perf"></A> <A NAME="s3">3.</A> <A HREF="Ethernet-HOWTO.html#toc3">Suggerimenti per migliorare le prestazioni</A></H2>

<P>Ecco qua un po' di trucchi da usare se si soffre di problemi di
basso throughput Ethernet o per guadagnare un pochino di velocit&agrave; nei
trasferimenti ftp.</P>
<P>Il programma <CODE>ttcp.c</CODE> &egrave; un buon test per misurare la velocit&agrave; di
throughput. Un altro modo comunemente usato &egrave; di fare un <CODE>ftp> get
grosso_file /dev/null</CODE> dove       <CODE>grosso_file</CODE> &egrave; &gt;1MB e
risiede nel buffer della macchina in trasmissione (si faccia il 'get' almeno
due volte, poich&eacute; la prima volta si caricher&agrave; la cache del buffer
nella macchina in trasmissione). Si deve mettere il file nella
cache del buffer perch&eacute; non si &egrave; interessati ad includere nella
misura la velocit&agrave; di accesso ai file dal disco. Questo &egrave; anche
il motivo per cui si inviano i dati in ingresso a <CODE>/dev/null</CODE>
piuttosto che al disco.</P>

<H2><A NAME="ss3.1">3.1</A> <A HREF="Ethernet-HOWTO.html#toc3.1">Concetti generali</A>
</H2>

<P>Anche una scheda a 8 bit &egrave; in grado di ricevere pacchetti back-to-back
(uno dietro l'altro) senza alcun problema. Le difficolt&agrave; nascono
quando il computer non riesce a estrarre i pacchetti ricevuti
dalla scheda abbastanza velocemente da far spazio ai pacchetti in
arrivo. Se il computer non libera abbastanza velocemente la
memoria della scheda dai pacchetti gi&agrave; ricevuti, la scheda non
avr&agrave; spazio dove mettere i nuovi pacchetti.</P>
<P>In questo caso o si perdono (drop) i nuovi pacchetti oppure si
scrivono sopra a quelli gi&agrave; ricevuti (overrun). In entrambi i
casi si interrompe seriamente il flusso regolare del traffico
causando/richiedendo la ritrasmissione e degradando seriamente le
prestazioni fino ad un fattore di 5!</P>
<P>Le schede con a bordo pi&ugrave; memoria sono in grado di bufferizzare
pi&ugrave; pacchetti e quindi gestire grossi picchi di traffico (burst)
back-to-back senza perdere nessun pacchetto. D'altra canto questo significa
che la scheda non necessita di una cos&igrave; bassa latenza 
nell'estrazione dei pacchetti dal buffer da parte del computer per evitare la
perdita di pacchetti.</P>
<P>La maggior parte delle schede a 8 bit hanno un buffer da 8kB e la
maggior parte di quelle a 16 ne hanno uno da 16kB. La maggior
parte dei driver per Linux riserva 3kB del buffer per due
buffer di trasmissione, quindi nel caso di una scheda a 8 bit rimangono solo
5kB di spazio per la ricezione. Questo &egrave; spazio sufficiente solo
per tre pacchetti Ethernet a dimensione massima (1500 byte).</P>

<H2><A NAME="ss3.2">3.2</A> <A HREF="Ethernet-HOWTO.html#toc3.2">Schede ISA e velocit&agrave; del bus ISA</A>
</H2>

<P>Come menzionato in precedenza, se i pacchetti vengono rimossi abbastanza
velocemente dalla scheda allora la condizione di drop/overrun non
si verificher&agrave; anche se la dimensione del buffer per i pacchetti in arrivo &egrave;
ridotta. Il fattore che determina la frequenza con la quale i
pacchetti vengono rimossi dalla scheda e messi nella memoria del
computer corrisponde alla velocit&agrave; del percorso dati che collega le due,
ovverosia la velocit&agrave; del bus ISA (ma se la CPU &egrave; un vecchio e lento
386sx-16 allora anche questo avr&agrave; la sua influenza).</P>
<P>Il clock del bus ISA raccomandato &egrave; circa 8Mhz, ma molte schede madri e
dispositivi periferici possono essere fatti funzionare a frequenze
pi&ugrave; elevate. La frequenza di clock per il bus ISA solitamente pu&ograve;
essere impostata nel setup della CMOS, selezionando un divisore della
frequenza di clock della scheda madre/CPU. Alcune schede madri
ISA e PCI/ISA possono non avere questa opzione e quindi si &egrave;
vincolati dalle impostazioni di fabbrica.</P>
<P>Per esempio, ecco qui alcune velocit&agrave; di ricezione misurate dal
programma TTCP su un 486 a 40Mhz, con una scheda a 8 bit WD8003EP,
a diverse velocit&agrave; del bus ISA.</P>
<P>
<HR>
<PRE>
        Velocit&agrave; bus ISA (MHz)     Rx TTCP (kB/s)
        ----------------------    --------------
        6.7                       740
        13.4                      970
        20.0                      1030
        26.7                      1075
</PRE>
<HR>
</P>
<P>Voglio vedere chi riesce a far meglio di 1075kB/s con una
<EM>qualsiasi</EM> scheda Ethernet a 10Mb/s usando TCP/IP.
Comunque, non ci si aspetti che qualsiasi sistema funzioni a
velocit&agrave; del bus ISA molto elevate. La maggior parte dei sistemi
non funzioneranno correttamente a velocit&agrave; superiori a 13MHz
(inoltre, in alcuni sistemi PCI la velocit&agrave; del bus ISA &egrave; bloccata
a 8 Mhz, cosicch&eacute; l'utente finale non ha la possibilit&agrave; di incrementarla).</P>
<P>Oltre a una velocit&agrave; di trasferimento pi&ugrave; elevata, si trarr&agrave; anche
beneficio da una riduzione nell'uso della CPU dovuta alla durata
minore dei cicli di memoria e di I/O (si noti che anche i dischi
fissi e le schede video presenti nel bus ISA mostreranno
solitamente un aumento delle prestazioni dovuto all'incremento
della velocit&agrave; del bus ISA).</P>
<P>Ci si assicuri di fare un back up dei propri dati prima di fare
esperimenti con velocit&agrave; del bus ISA superiori agli 8Mhz e di
controllare accuratamente che tutte le periferiche ISA funzionino
correttamente dopo aver fatto qualsiasi incremento alla velocit&agrave;
del bus.</P>

<H2><A NAME="ss3.3">3.3</A> <A HREF="Ethernet-HOWTO.html#toc3.3">Impostare la finestra TCP di ricezione (TCP Rx Window)</A>
</H2>


<P>Ancora una volta, le schede con poca memoria RAM a bordo e percorsi
dati tra la scheda e la memoria del computer relativamente lenti
avranno dei problemi. L'impostazione predefinita per la finestra di
ricezione TCP &egrave; di 32kB, il che significa che un computer veloce nella
sottorete a cui appartiene la propria macchina, pu&ograve; scaricare in
quest'ultima 32kB di dati senza fermarsi per controllare se tutti sono
stati ricevuti correttamente.</P>
<P>Le versioni recenti del comando <CODE>route</CODE> hanno la possibilit&agrave; di
impostare al volo la dimensione di questa finestra. Solitamente
la riduzione della dimensione di questa finestra &egrave; necessaria solo
per la rete locale, poich&eacute; i computer che sono dietro ad un paio
di router o gateway sono abbastanza 'bufferizzati' da non avere
problemi. Un esempio d'uso potrebbe essere:</P>
<P>
<HR>
<PRE>
        route add &lt;qualcosa> ... window &lt;dim_fin>
</PRE>
<HR>
</P>
<P>dove <CODE>dim_fin</CODE> &egrave; la dimensione della finestra che si vuole usare
(in byte). Una scheda 3c503 a 8 bit su un bus ISA che va a 8Mhz o
meno dovrebbe funzionare bene con una dimensione della finestra di
circa 4kB. Una finestra troppo grande causer&agrave; drop e overrun dei
pacchetti e una riduzione drastica del throughput. Si possono
verificare le condizioni operative con <CODE>cat /proc/net/dev</CODE>,
che elencher&agrave; il numero di drop/overrun verificatisi.</P>

<H2><A NAME="ss3.4">3.4</A> <A HREF="Ethernet-HOWTO.html#toc3.4">Incrementare le prestazioni NFS</A>
</H2>

<P>Alcuni utenti hanno osservato che l'uso di una scheda a 8 bit con client NFS
causa prestazioni peggiori di quanto previsto quando vengono usati
pacchetti di 8kB (la dimensione nativa Sun).</P>
<P>Una possibile causa di questo potrebbe essere la
differente dimensione del buffer a bordo tra schede a 8 e 16
bit. La dimensione massima di un pacchetto Ethernet &egrave; di approssimativamente 1500
byte. Affinch&eacute; arrivi un pacchetto NFS di 8kB ci vogliono circa
sei pacchetti back to back Ethernet di dimensione massima. Sia le
schede a 8 bit che quelle a 16 non hanno problemi a ricevere
pacchetti back to back. Il problema sorge quando la macchina non
rimuove in tempo i pacchetti dal buffer della scheda e il buffer
va in overflow. Il fatto che le schede a 8 bit
necessitano di un ulteriore ciclo di bus ISA per ogni
trasferimento non aiuta. Quel che si <EM>pu&ograve;</EM> fare se si ha una
scheda a 8 bit &egrave; di impostare la dimensione del trasferimento NFS
a 2kB (o anche 1kB) o provare a incrementare la velocit&agrave; del bus
ISA per far s&igrave; che il buffer della scheda venga svuotato pi&ugrave;
velocemente. Ho scoperto che una vecchia scheda WD8003E a 8MHz
(senza altro carico di sistema) pu&ograve; sostenere un traffico notevolei a
dimensioni NFS di 2kB, ma non a 4kB, dove le prestazioni si
degradano di un fattore tre.</P>
<P>D'altra parte, se l'opzione predefinita di mount &egrave; di usare la
dimensione di un 1kB per i pacchetti NFS e si usa come minimo una scheda ISA a 16 bit,
si riscontrer&agrave; un incremento significativo nel passare a pacchetti NFS di 4kB
(o addirittura 8kB).</P>

<HR>
<A HREF="Ethernet-HOWTO-4.html">Avanti</A>
<A HREF="Ethernet-HOWTO-2.html">Indietro</A>
<A HREF="Ethernet-HOWTO.html#toc3">Indice</A>
</BODY>
</HTML>