Currently libvirt provides lots of useful information on the HW capabilities of the host and its attached devices. I’m interested in extending the HW capability discovery of libvirt, to a point where it is capable of discovering the HW offload capabilities of host PCI devices. Take a NIC for example, this feature would enable libvirt discover the supported NIC offload features, csum, tso, etc.

 

So where might a feature like this be used. Consider an Openstack deployment, a VM may have a workload that depends on specific NIC HW offload capabilities in order to stay within certain throughput, CPU utilisation or latency thresholds. For this scenario, it’s important that the VM is placed on a host with PCI devices that provide the required NIC HW offload capabilities. If libvirt could provide this functionality, this information could be used during the VM scheduling phase when all nodes are evaluated for their suitability.

 

From what I understand, libvirt currently uses ioctl’s to get the NIC state, MTU, etc. Could the ethtool ioctl framework be used to discover the HW offload features provided by the hosts network controllers.

E.g.

·         ETHTOOL_GRXCSUM

·         ETHTOOL_GTXCSUM

·         ETHTOOL_GTSO

·         ETHTOOL_GFLAGS

 

So I’m looking for your opinions on this feature proposal, does it make sense, is it already being worked on.

 

Thanks

James