I'm trying to determine the speed of my ethernet uplinks using ethtool on my VM (a VMware ESX Server).

Running the command gives the following output:

~> ethtool eth0
Settings for eth0:
    Current message level: 0x00000007 (7)
    Link detected: yes

This obviously doesn't contain the information I'm looking for, that would be displayed on a non-VM machine. Is it possible to use this command to determine uplink speed on VMWare VMs?

Thanks, Paul

  • The prompt in your example indicates that you're not root - what happens if you use "sudo ethtool eth0" instead? – RainyRat Dec 3 '09 at 12:26
  • I have edited the prompt for brevity; I was running this command as root. – Symmetric Dec 4 '09 at 14:50

That looks like you used the "flexible" adapter type in the VM configuration, which looks like the AMD PCnet32 ethernet controller which uses the pcnet32 driver. If you create your VM with a different adapter type, e.g. e1000, you will get the e1000 driver which will give you more useful ethtool output.

  • Exactly what I needed, thanks. I've been told that the e1000 emulated drivers are a bit basic, so in other situations using the VMtools driver might have been a better solution, but in this case your solution is perfect (as I can't install VMtools). Thanks! – Symmetric Dec 7 '09 at 18:08
  • I'm glad that helped. Even though you get a "Speed: 1000Mb/s" type message from this, be aware that the actual speed will depend greatly on the CPU utilization and general busy-ness of the server. Your traffic is going through several layers of software and emulation to get to your VM. – Shannon Nelson Dec 8 '09 at 3:44

I've seen inconsistent correspondence between reported link speed and actual bandwidth in VMware. I'd suggest using something like iperf to get a measured result.

  • From inside the VM, iperf is one tool that would be useful. If you have access to the ESX server COS, you might try using esxtop to watch the network throughput. – Shannon Nelson Dec 20 '09 at 8:09

The NIC in the VM is connected to a software switch which only then in turn uplinked to physical ports - you'll never get a real speed although you can get the uplink speed via the VM SDK tools.

  • Is it possible to insert a value into the VM so that it thinks it knows the speed of the uplink? I'm not so interested in knowing the exact speed, but the application I'm testing needs to receive a value in order to run. – Symmetric Dec 3 '09 at 17:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.