Data processing system
A data processing system being configured to select between different hardware resources for the running of an application configured for the sending and receiving of data over a network. The selection of hardware resources may be between resources on the network interface device, and hardware resources on the host. The selection of hardware resources may be between first and second hardware resources on the network interface device. An API is provided in the data processing system that responds to requests from the application irrespective of the hardware on which the application is executing.
1. A network interface device arranged to couple a host computing device to a network, the network interface device comprising:
first hardware resources and second hardware resources;
an application configured to: run on one or more of the first and second hardware resources of the network interface device;
an entity running on hardware of the network interface device, wherein the entity comprises components of at least one runtime support running on hardware of the network interface device, which supports the application, wherein the at least one runtime support is configured to:
make requests to an application programming interface of the host computing device;
receive, from the application programming interface, an indication of available hardware resources of the network interface device; and
select between available resources of the first hardware resources and the second hardware resources to determine a selected hardware resource for running the application on the network interface device, so that at least a part of the application runs on the selected hardware resource on the network interface device.
2. A network interface device as claimed in claim 1 , wherein the network interface device is configured to select between the first hardware resources and the second hardware resources in dependence upon at least one of: system workload; availability of the first hardware resources; and availability of the second hardware resources.
3. A network interface device as claimed in claim 1 , wherein the at least one runtime support comprises a virtual machine environment.
4. A network interface device as claimed in claim 1 , wherein the application comprises at least one of:
form a message for transmission over the network; and
consume a message received over the network.
5. A data processing system comprising:
a host computing device comprising hardware resources;
a network interface device arranged to couple the host computing device to a network, the network interface device comprising hardware resources; and
an application programming interface configured to receive requests from a first entity running on the hardware of the host computing device and a second entity running on the hardware of the network interface device, wherein the first entity comprises a first application and the second entity comprises a second application, wherein first entity comprises components of at least one first runtime support, and the second entity comprises components of at least one second runtime support,
wherein the components of the at least one first runtime support, which supports the first application, are configured to run on at least one of the host computing device and the network interface device, and wherein the components of the at least one second runtime support, which supports the second application, are configured to run on at least one of the host computing device and the network interface device,
wherein operations performed by the application programming interface in response to the requests are independent of whether the requests are received from the first entity or the second entity,
wherein the application programming interface is configured to receive requests from the first and second applications to determine available hardware resources of the data processing system, and
wherein the components of the at least one first and second runtime supports are configured to select between the determined available hardware resources of the host computing device and the hardware resources of the network interface device for running the first and second applications.
6. A data processing system as claimed in claim 5 , wherein the first entity and the second entity are different instances of an application.
7. A data processing system as claimed in claim 5 , wherein the requests comprise at least one of: requests for access to hardware resources on behalf of an application; and requests for an indication as to the availability of hardware resources of the data processing system.
8. A data processing system as claimed in claim 5 , wherein responses to the requests provided by the application programming interface are independent of the hardware on which the first entity and the second entity execute.
9. A data processing system as claimed in claim 5 , wherein the data processing system is configured to select between the hardware resources of the network interface device and the hardware resources of the host computing device in dependence upon at least one of: system workload; availability of the hardware resources of the host computing device; and availability of the hardware resources of the network interface device.
10. A data processing system as claimed in claim 5 , wherein the application is configured to at least one of:
form a message for transmission over the network; and
consume a message received over the network.