Interazione tra scheda di rete e calcolatore: hardware e driver
Transcript
Interazione tra scheda di rete e calcolatore: hardware e driver
Interazione tra scheda di rete e calcolatore: hardware e driver Guido Marchetto Introduzione • Il driver gestisce tutte le comunicazioni tra la periferica di rete e l’host Comunicazioni NIC – Sistema operativo Comunicazioni NIC – Spazio utente • Si appoggia sul driver che gestisce il bus PCI utilizzandone l’API da esso fornita • Le schede sono Bus-master DMA Ogni scheda dispone di un DMA controller che gestisce le comunicazioni sul bus in modo indipendente dalle altre Forte riduzione del carico sulla CPU centrale Lo stack di rete di FreeBSD process system calls socket layer socket queues function call protocol layer (TCP,UDP,IP,etc.) function call to start output interface queues software interrupt (caused by interface layer) protocol queue (IP input queue) interface layer hardware interrupt (caused by network device) I descrittori DMA Indice di scrittura Mbuf pointer … 2 1 N Mbuf Mbuf Indice di lettura Trasmissione • Funzione di output di Ethernet • Funzione per accodamento e inizio trasmissione – E’ la stessa per ogni “livello 2” • Funzione di trasmissione del driver – Estrazione dalla coda – Verifica di disponibilità di descrittori – Mapping mbuf – descrittore • Eventualmente ricollocazione in coda – Berkeley Packet Filter (BPF) tap – Il tutto avviene per scambio di puntatori Trasmissione • Trasferimento sul PCI gestito dal DMA controller • Interrupt di avvenuta trasmissione a trasferimento avvenuto • Interrupt service routine del driver – Incremento del numero di descrittori liberi – free dell’mbuf – Interrupt mitigation • I trasferimenti possono coinvolgere più descrittori (DMA chains) Ricezione • Ricezione del pacchetto sulla scheda • Trasferimento in memoria tramite DMA • Interrupt service routine del driver – Creazione dell’mbuf e “casting” sulla zona di memoria puntata dal descrittore – Incremento del numero di descrittori liberi – Interrupt mitigation • I trasferimenti possono coinvolgere più descrittori (DMA chains) Ricezione • Alcune parti esterne al driver • Funzione di input di Ethernet – BPF tap – Scelta del corretto livello superiore e accodamento nella relativa coda di ingresso – Interrupt software • Permette di uscire dalla ISR ad alta priorità • Interrupt service routine – Funzioni relative al livello superiore – Il pacchetto arriva a livello applicazione o, in caso di forwarding, alle funzioni di output Latenze • Qual è l’efficienza del sistema? • Quali latenze vengono introdotte? Dove? Di che entità? ⇒ Misure sul tempo impiegato da un pacchetto per andare dalle code di uscita di un nodo al livello IP del successivo Latenze Distribuzione del ritardo Latenze Componenti del ritardo Latenze Possibili cause • Contese sul bus PCI – Nel testbed: • PCI 32bit/33MHz (~1Gb/s) • 3 interfacce 100Mb/s (600Mb/s sul bus) • Interrupt mitigation in ricezione – Disabilitato nel testbed • Ricezione di burst di pacchetti – Se gli interrupt sono bloccati i pacchetti si accumulano – Problema analogo all’interrupt mitigation • Architettura monoprocessore Throughput • Receive livelock – Con un alto input rate il sistema rimane sempre nella ISR ad alta priorità – Overflow della coda di ingresso del livello superiore – Throughput → 0 • Funzionamento in polling – Le ISR ad alta priorità vengono eliminate • Si interrogano periodicamente le schede in RX • Si liberano periodicamente in descrittori in TX – Throughput → 0 senza un limite sul numero di estrazioni per ciclo • Il sistema non riesce a liberare i descrittori in TX – Possibile aumento della latenze Throughput (Mogul, Ramakrishnan, “Eliminating Receive Livelock in an Interrupt-driven Kernel”)