You will be able to achieve linerate by assigning either the PF or just a VF to your VM.
One interesting thing you can do is have to VM's that have VF's on the same PF assigned to them and then send traffic from VM to VM via VF's. This will go at faster than the 1Gbps linerate, should be around 2.5Gbps.
As for defining the # of VF's. The driver in the kernel does not allow you to specify the # of VF's on an individual port. The Sourceforge driver however does. If you are looking for this level of granularily I suggest moving to the Sourceforge driver. It is something we are looking at implementing in the kenel drivers as well, however it this will take some time as we need to work with the open source community more closely.
And for those of you who don't understand all this VF, PF, VM stuff I've other blogs on the topic:
Thx for your detailed answers. Very helpful. However, it triggers more questions. :-)
1. What do you mean about kernel driver? Is that the driver currently in the Linux src tree? What's the main difference between the kernel driver and SF driver?
2. In order to support jumbo frame for a VF, can I just change MTU of that VF? Or the MTU is only controllable by PF?
The kernel driver is in the Linux src tree, yes. The SourceForge driver is a bit different and has some additional options. The descrepency is due to the fact that there are a lot more restrictions on options you can provide to a driver in the Linux source tree.
For the 82576, you can specify Jumbo Frame on a per VF basis from within the VF driver interface. So from the guest OS.