Allocation of processors for processing packets
AssigneeIntel Corporation
InventorsGregory J. Bowers, Kevin C. Scott, Manasi Deval
Life of this patent
Estimating the term…
Abstract
Examples described herein identify a flow that is considered heavy or high in transmit or receive rate. A filter rule can be assigned to the flow such that packets of the heavy flow are allocated to a queue and core for processing. Various queues and cores can be dedicated to processing received or transmitted packets of heavy flows and various queues and cores can be dedicated to process received or transmitted packets of non-heavy flows. An application acceleration layer can be used to migrate an application to a core that is to process received or transmitted packets of a heavy flow.
Claims26
A network interface comprising:
- circuitry to assign a packet of a flow, received from a network, to a heavy flow based at least, in part, on a receive rate of packets of the flow from the network and based on a rule to identify a flow as a heavy flow;
- circuitry to, based on the packet not being identified as part of the heavy flow, assign the packet to one or more queues by receive side scaling (RSS);
- circuitry to, based on the packet being identified as part of the heavy flow, assign the packet to a second set of one or more queues, wherein the second set of one or more queues are associated with one or more processor cores and the second set of one or more queues are excluded from allocation using the RSS;
- and
- a direct memory access (DMA) engine to copy the packet to memory allocated to the assigned one or more queues.
A method for allocating packets in a flow for processing, the method comprising:
- determining a flow associated with a received packet, wherein the received packet is received from a network;
- applying a flow allocation rule associated with the flow, wherein the flow allocation rule comprises allocation as a heavy flow;
- if the flow is to be allocated as a non-heavy flow, selecting a queue from a group of queues allocated to non-heavy flows by a hash-based calculation;
- if the flow is to be allocated as a heavy flow, selecting a queue from a group of queues allocated to store one or more packets of one or more heavy flows, wherein the group of queues allocated to store one or more packets of one or more heavy flows is not part of the group of queues allocated to non-heavy flows by the hash-based calculation and wherein at least one of the queues in the group of queues allocated to non-heavy flows by the hash-based calculation is associated with a core and at least one of the queue in the group of queues allocated to store one or more packets of one or more heavy flows is associated with a second core;
- and
- copying the received packet to memory allocated to the selected queue.
A system comprising:
- a computing platform comprising one or more processors and one or more memory devices and
- a network interface communicatively coupled to the computing platform, the network interface comprising:
- a classifier to determine a flow associated with a received packet, wherein the received packet is received from a network;
- a filter configured to apply a rule based on whether the flow of the received packet is considered heavy;
- an allocator to assign the received packet to a queue of a first set of one or more queues allocated to receive one or more packets of a heavy flow if the flow is considered heavy and assign, by receive side scaling (RSS), the received packet to a queue of a second set of one or more queues associated with a non-heavy flow if the flow is considered not heavy, wherein the queue allocated to receive one or more packets of a heavy flow is not part of the second set of one or more queues, the queue allocated to receive one or more packets of a heavy flow is associated with at least one core, and the queue of the second set of one or more queues is associated with at least one core;
- and
- a direct memory access (DMA) engine to transfer the packet to memory allocated to the assigned queue.
A non-transitory computer-readable medium comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:
- configure a network interface to:
- assign a packet received by the network interface from a network for processing by at least one core allocated to process packets of an elephant flow if the packet is part of an elephant flow and
- assign a packet received by the network interface for processing by at least one core allocated to process packets of a mouse flow by a hash calculation if the packet is part of a mouse flow, wherein the at least one core allocated to process packets of the mouse flow does not include the at least one core allocated to process packets of the elephant flow.
An apparatus comprising:
- a network device interface comprising:
- circuitry to categorize a packet of a flow, received from a network, as an elephant flow based at least, in part, on a receive rate of packets of the flow from the network and based on a rule to identify a flow as an elephant flow;
- circuitry to, based on the packet not being identified as part of the elephant flow, assign the packet to one or more cores by receive side scaling (RSS);
- and
- circuitry to, based on the packet being identified as part of the elephant flow, assign the packet to a second set of one or more cores, wherein the second set of one or more cores are excluded from allocation using the RSS.
Dependencies are inferred from the claim text.