Patent ID: 9146873
Filing Date: 2015-09-29
Classification: G06F,H04L

Abstract:
1. A method comprising: establishing a first window for a queue structure of a given size maintained at least in part in a cache located at a multi-core processor, the cache for use by a core for the multi-core processor, the core configured to operate in cooperation with a network interface card for a network device, the first window to include portions of the queue structure having identifiers for active allocated buffers maintained in memory for the network device, the active allocated buffers configured to at least temporarily maintain data received or to be forwarded by the network interface card, the core configured to execute instructions to handle data received by the network interface card, the core to function as a consumer for the data received and the network interface card to function as a producer for the data received, the network interface card configured to cause the identifiers to be written to the portions of the queue structure maintained at least in part in the cache for use by the core without the identifiers being subject to eviction; and adjusting the first window based on information gathered while the identifiers are read from or written to the portions of the queue structure, the information gathered while the identifiers are read from and written to the queue structure to include information that indicates the core requires additional allocated buffers based on the core reading the identifiers in order to consume data stored in allocated buffers at a rate faster than the network interface card can write the identifiers to the portions of the queue structure included in the first window, the gathered information to indicate that additional active allocated buffers are needed to maintain a line rate throughput for forwarding data via a network communication channel capable of being coupled to the network interface card, the adjusted first window to result in a second window, the second window to include more portions of the queue structure having identifiers for active allocated buffers than were included in the first window.