System for ascertaining task off-load capabilities of a device and enabling selected capabilities and when needed selectively and dynamically requesting the device to perform the task
First Claim
1. In a computer system environment having an operating system and at least one peripheral hardware device, a method for dynamically offloading, on a per-packet basis and depending on the then current needs of the computer system, an operating task from the operating system to the peripheral hardware device, thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising:
- a step for ascertaining, by the operating system, task offload capabilities of the peripheral hardware device;
a step for enabling, by the operating system, selected task offload capabilities of the peripheral hardware device that are selected from among the ascertained task offload capabilities, said selected task offload capabilities being enabled to the extent such selected task offload capabilities are needed for one or more data packets; and
in the event that an operating task to be otherwise performed for a data packet by the operating system corresponds to an enabled task offload capability of the peripheral hardware device, and depending on the then current needs of the computer system, an act of the operating system selectively and dynamically requesting that the peripheral hardware device, rather than the operating system, perform the operating task by sending a data packet to the peripheral hardware device that indicates that the peripheral hardware device is to perform the operating task.
3 Assignments
0 Petitions
Accused Products
Abstract
The present invention is directed to a method and computer program product for offloading specific processing tasks that would otherwise be performed in a computer system'"'"'s processor and memory, to a peripheral device, or devices, that are connected to the computer. The computing task is then performed by the peripheral, thereby saving computer system resources for other computing tasks and increasing the overall computing efficiency of the computer system. In one preferred embodiment, the disclosed method is utilized in a layered network model, wherein computing tasks that are typically performed in network applications are instead offloaded to the network interface card (NIC) peripheral. An application executing on the computer system first queries the processing, or task offload capabilities of the NIC, and then selectively enables those capabilities that may be subsequently needed by the application. The specific processing capabilities of a NIC are made available by creating a task offload buffer data structure, which contains data indicative of the processing capabilities of the corresponding NIC. Once an application has discerned the capabilities of a particular NIC, it will selectively utilize any of the enabled task offload capabilities of the NIC by appending packet extension data to the network data packet that is forwarded to the NIC. The device driver of the NIC will review the data contained in the packet extension, and then cause the NIC to perform the specified operating task(s). This offloading of computing tasks on a per-packet basis allows an application to selectively offload tasks on a dynamic, as-needed basis. As such, applications executing on the computer system processor are able to offload tasks in instances where it is busy processing other computing tasks and processor overhead is high. Multiple tasks can also be offloaded in batches to a particular peripheral.
171 Citations
15 Claims
-
1. In a computer system environment having an operating system and at least one peripheral hardware device, a method for dynamically offloading, on a per-packet basis and depending on the then current needs of the computer system, an operating task from the operating system to the peripheral hardware device, thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising:
-
a step for ascertaining, by the operating system, task offload capabilities of the peripheral hardware device;
a step for enabling, by the operating system, selected task offload capabilities of the peripheral hardware device that are selected from among the ascertained task offload capabilities, said selected task offload capabilities being enabled to the extent such selected task offload capabilities are needed for one or more data packets; and
in the event that an operating task to be otherwise performed for a data packet by the operating system corresponds to an enabled task offload capability of the peripheral hardware device, and depending on the then current needs of the computer system, an act of the operating system selectively and dynamically requesting that the peripheral hardware device, rather than the operating system, perform the operating task by sending a data packet to the peripheral hardware device that indicates that the peripheral hardware device is to perform the operating task. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a computer system environment having an operating system and at least one peripheral hardware device, a method for dynamically offloading, on a per-packet basis and depending on the then current needs of the computer system, an operating task from the operating system to the peripheral hardware device, thereby freeing up host processor resources and increasing the overall efficiency of the computer system, the method comprising:
-
ascertaining, by the operating system, task offload capabilities of the peripheral hardware device;
the act of the operating system communicating with the peripheral hardware device to enable selected task offload capabilities of the peripheral hardware device that are selected from among the ascertained task offload capabilities, said selected task offload capabilities being enabled to the extent such task offload capabilities are needed for one or more packets; and
in the event that an operating task to be otherwise performed for a data packet by the operating system corresponds to an enabled task offload capability of the peripheral hardware device, and depending on the then current needs of the computer system, an act of the operating system selectively and dynamically requesting that the peripheral hardware device, rather than the operating system, perform the operating task by sending a data packet to the peripheral hardware device that indicates that the peripheral hardware device is to perform the operating task. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
Specification