Para expandir um pouco sobre isso, porque eu também entrei recentemente nisso e também fiquei meio confuso com a falta de detalhes de velocidade ao executar ethtool
em uma VM:
$ ethtool eth0
Settings for eth0:
Link detected: yes
Quando pesquisei lshw
output:
$ lshw -class network -short
H/W path Device Class Description
==========================================================
/0/100/3 network Virtio network device
/0/100/3/0 eth0 network Ethernet interface
Isso está nos dizendo que o driver de dispositivo sendo usado para essa VM é virtualizado, neste caso, essa é uma VM em execução no KVM e, portanto, a VM está usando os drivers virtio_ * para todas as suas interações com "hardware".
$ lsmod | grep virt
virtio_rng 13019 0
virtio_balloon 13864 0
virtio_net 28096 0
virtio_console 28066 1
virtio_scsi 18453 2
virtio_pci 22913 0
virtio_ring 22746 6 virtio_net,virtio_pci,virtio_rng,virtio_balloon,virtio_console,virtio_scsi
virtio 14959 6 virtio_net,virtio_pci,virtio_rng,virtio_balloon,virtio_console,virtio_scsi
Estes módulos do kernel estão disponíveis para determinados sistemas operacionais (Linux, BSD e Windows). Com esses drivers instalados em sua VM, o kernel em sua VM tem acesso especial ao hardware subjacente por meio do kernel que está sendo executado em seu hipervisor.
Lembre-se de que, com hipervisores, existem dois tipos distintos. ESX / vsphere são considerados tipo 1 . Lembrete sobre os tipos:
- Hypervisores tipo 1, nativos ou bare-metal
- Hypervisores de tipo 2 ou hospedados
KVM é mais parecido com um tipo 2, mas tem alguns elementos, como virtio_ *, que faça com que ele se comporte e se apresente como um tipo 1, expondo à virtualização o kernel Linux subjacente do hipervisor de tal forma que as VMs possam ter acesso semi-direto a ele.
A velocidade da minha placa de rede?
Se você estiver usando um hipervisor paravirtualizado , é necessário entrar no hipervisor real para descobrir as hipóteses do seu NIC. velocidade usando ethtool
. Em vez disso, só é possível descobrir algo como usar iperf
para comparar a NIC sob carga e, experimentalmente, descobrir o que a velocidade das NICs parece ser.
Por exemplo, aqui tenho 2 servidores que estão sendo executados em dois hipervisores diferentes. Usando iperf
nos dois servidores:
$ sudo yum install iperf
Em seguida, executando um servidor como um servidor iperf
na VM host1:
host1$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
Em seguida, em uma máquina cliente host2:
host2$ iperf -c 192.168.100.25
------------------------------------------------------------
Client connecting to 192.168.100.25, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.100.101 port 55854 connected with 192.168.100.25 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 10.0 GBytes 8.60 Gbits/sec
Na saída do host1, você verá isso:
$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.100.25 port 5001 connected with 192.168.100.101 port 55854
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 10.0 GBytes 8.60 Gbits/sec
Aqui podemos ver que a NIC conseguiu subir para 8.60Gbits / seg.