Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.2. Impostazioni di rete ottimizzate

Il processo di ottimizzazione delle prestazioni è un processo eseguito a priori. Spesso vengono modificate variabili conosciute, prima di eseguire un'applicazione o implementare un sistema. Se la modifica è inefficace, allora si passa alla modifica di altre variabili. Questa logica deriva dal fatto che per l'utente il sistema non opera sempre su livelli ottimali; Per questo motivo generalmente si apportano le modifiche ritenute necessarie. In alcuni casi esguiamo queste modifiche seguendo delle ipotesi calcolate.
Come precedentemente indicato lo stack di rete esegue processi di ottimizzazione automatizzati. È necessario quindi capire il processo di ottimizzazione della rete, ed in particolare del funzionamento dello stack di rete e dei requisiti delle risorse di rete del sistema specifico. Configurazioni di rete incorrette possono ridurre sensibilmente le prestazioni.
Per esempio, considerate il problema del bufferfloat. L'aumento della profondità della coda del buffer causa alle connessioni TCP una congestione delle finestre maggiore rispetto a quella prevista dal link (a causa della profondità del buffer). Tuttavia queste connessioni presentano altresì valori RRT molto grandi, ciò è dovuto alla quantità di tempo che i frame trascorrono in-coda. Tale situazione causa un output non ottimale poichè diviene impossibile rilevare la presenza di una congestione.
Per quanto riguarda le prestazioni della rete è consigliato mantenere le impostazioni predefinite, a meno che un particolare problema diventi apparente. Questi problemi includono una perdita dei frame, output netto ridotto e altri problemi simili. Anche in tali situazioni è consigliato verificare in modo dettagliato il tipo di errore e non semplicemente modificare le impostazioni (ad esempio aumentare la lunghezza della coda/buffer, ridurre la latenza delle interruzioni, ecc).
Per diagnosticare in modo corretto la presenza di un problema utilizzare il seguente strumento:
netstat
Una utilità a linea di comando che stampa le connessioni di rete, tabelle di instradamento, statistiche dell'interfaccia, connessioni di mascheramento e appartenenze multicast. Essa è in grado di ripristinare le informazioni del sottosistema di rete dal file system /proc/net/. I file includono:
  • /proc/net/dev (informazioni del dispositivo)
  • /proc/net/tcp (Informazioni del socket TCP)
  • /proc/net/unix (Informazioni socket del dominio di Unix)
Per maggiori informazioni su netstat e sui file di riferimento di /proc/net/ consultare la pagina man di netstat: man netstat.
dropwatch
Una utilità di monitoraggio che controlla la perdita dei pacchetti da parte del kernel. Per maggiori informazioni consultare la pagina man di dropwatch: man dropwatch.
ip
Una utilità per la gestione ed il controllo degli instradamenti, dispositivi, politica di instradamento e tunnel. Per maggiori informazioni consultare la pagina man di ip: man ip.
ethtool
Utilità per la visualizzazione e la modifica delle impostazioni del NIC. Per maggiori informazioni consultare la pagina man di ethtool: man ethtool.
/proc/net/snmp
Un file per la visualizzazione dei dati ASCII necessari per le informazioni sulla gestione dell'IP, ICMP, TCP e UDP per un snmp agent. Usato anche per la visualizzazione di statistiche UDP-lite in tempo reale.
La SystemTap Beginners Guide contiene numerosi script d'esempio da usare per registrare e controllare le prestazioni della rete. Questa guida è disponibile su http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.
Dopo aver raccolto i dati utili sui problemi presenti nelle prestazioni della rete, sarà possibile formulare una teoria — e probabilmente avere una soluzione. [5] Per esempio, un aumento degli errori di input UDP in /proc/net/snmp indica che una o più code di ricezione del socket risultano essere sature quando lo stack di rete tenta di mettere in coda nuovi frame in un socket dell'applicazione.
Ciò indica la presenza di alcuni problemi per i pacchetti in almeno una coda. In questo questa situazione potrebbe indicare che la coda del socket passa pacchetti con una velocità molto bassa, o che il volume dei pacchetti è troppo grande per la coda. In presenza di quest'ultimo scenario è consigliato verificare i log di qualsiasi applicazione che utilizza una quantità di rete molto elevata e controllare la presenza di dati persi -- per risolvere questo problema ottimizzare o riconfigurare l'applicazione interessata.

Dimensione del buffer di ricezione del socket

Le domensioni per la ricezione e l'invio dei Socket sono modificate dinamicamente, per questo motivo non vengono quasi mai modificati manualmente. Se analisi aggiuntive come quelle presenti nell'esempio della rete di SystemTap, sk_stream_wait_memory.stp, indicano che la velocità per la gestione di una coda del socket è troppo bassa, aumentate la profondità della coda del socket dell'applicazione. Per fare questo aumentate la dimensione dei buffer di ricezione usati dal socket, configurando uno dei seguenti valori:
rmem_default
Un parametro del kernel che controlla la dimensione predefinita dei buffer di ricezione usati dai socket. Per la configurazione eseguire il seguente comando:
sysctl -w net.core.rmem_default=N
Sostituire N con la dimensione del buffer desiderata, in byte. Per determinare il valore di questo parametro del kernel consultare /proc/sys/net/core/rmem_default. Ricordate che il valore di rmem_default non dovrebbe essere maggiore di rmem_max (/proc/sys/net/core/rmem_max); se necessario aumentare il valore di rmem_max.
SO_RCVBUF
Una opzione del socket in grado di controllare la dimensione massima di un buffer di ricezione del socket, in byte. Per maggiori informazioni su SO_RCVBUF consultare la pagina man: man 7 socket.
Per configurare SO_RCVBUF usare l'utilità setsockopt. È possibile ottenere il valore corrente di SO_RCVBUF usando il comando getsockopt. Per maggiori informazioni sull'utilizzo delle utilità consultare la pagina man di setsockopt: man setsockopt.


[5] Sezione 8.3, «Panoramica sulla ricezione dei pacchetti» contiene una panoramica sul percorso di un pacchetto, ciò potrà assistere l'utente nel determinare la posizione delle aree "problematiche" presenti in uno stack di rete.