Extended message block for network device drivers

   
   

The present invention manages memory buffers in network device drivers in a flexible operating system (e.g., the Solaris operating system) that increase performance of the operating system at high throughputs with no detriment to the flexible nature of the operating system. Embodiments of the present invention reuse the (same) allocated and dma_binded memory buffers again and again, eliminating the repeated memory management of each data packet. In one embodiment, an rx-descriptor ring is treated as a true circular ring. A new data structure named rxbuffer_id is also defined along with a device-freemsg( ) function. In another embodiment, a device driver allocates and links a memory block (e.g., a rxbuffer_id data structure) with a message block at the time of allocating the message block for relocating incoming data packets. The memory block contains all the needed information for reuse of the message block. In a further embodiment, the device-freemsg( ) function is called by the operating system utilizing the db_lastfree field of the dblk_t. The performance of the network device driver using the present invention is thus improved. The improvement in performance applies to all data packet sizes because CPU processing time is reduced. Moreover, the performance gain is further improved when the host machine (having the operating system using embodiments of the present invention) is used to route data packets because, for example, as the network driver of the host machine, it does not need to do any further copying and ddi_dma_addr_binding to route a received data packet.

La presente invenzione controlla gli amplificatori di memoria nei driver di dispositivo della rete in un sistema operativo flessibile (per esempio, il sistema operativo di Solaris) quelle prestazioni di aumento del sistema operativo agli alti rendimenti senza detrimento alla natura flessibile del sistema operativo. I metodi di realizzazione di presente invenzione riutilizzano (stessi) assegnata e dma_binded gli amplificatori di memoria diverse volte, eliminando l'amministrazione ripetuta di memoria di ogni pacchetto di dati. In un incorporamento, un anello di rx-descrittore è trattare come un vero anello circolare. Una nuova struttura di dati chiamata rxbuffer_id inoltre è definita con una funzione del dispositivo-freemsg(). In un altro incorporamento, un driver di dispositivo assegna e collega un blocchetto di memoria (per esempio, una struttura di dati del rxbuffer_id) con un blocchetto del messaggio ai tempi dell'assegnazione del blocchetto del messaggio per la riassegnazione dei pacchetti ricevuti di dati. Il blocchetto di memoria contiene tutte le informazioni necessarie per riutilizzazione del blocchetto del messaggio. In un ulteriore incorporamento, nella funzione del dispositivo-freemsg() è denominato dal sistema operativo che utilizza il campo di db_lastfree del dblk_t. Le prestazioni del driver di dispositivo della rete che usando la presente invenzione sono migliorate così. Il miglioramento nelle prestazioni si applica a tutti i formati del pacchetto di dati perché il tempo di lavorazione del CPU è ridotto. Inoltre, il guadagno di prestazioni più ulteriormente è migliorato quando la macchina ospite (avendo il sistema operativo usando i metodi di realizzazione di presente invenzione) è utilizzata per dirigere i pacchetti di dati perché, per esempio, come il driver della rete della macchina ospite, esso non deve fare nuova copiatura e ddi_dma_addr_binding per dirigere un pacchetto ricevuto di dati.

 
Web www.patentalert.com

< Standardized interface between Java virtual machine classes and a host operating environment

< Data transformation architecture

> Method and device for a context-based memory management system

> Method and apparatus for managing independent asynchronous I/O operations within a virtual machine

~ 00147