GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan kecepatan tautan dari adaptor jaringan virtio-net

Virtio adalah driver para-virtualized, yang berarti OS dan driver sadar bahwa itu bukan Perangkat fisik. Pengemudi benar-benar merupakan API antara tamu dan hypervisor sehingga kecepatannya benar-benar terputus dari perangkat fisik atau standar Ethernet apa pun.

Ini adalah hal yang baik karena ini lebih cepat daripada hypervisor yang berpura-pura menjadi perangkat fisik dan menerapkan konsep "kecepatan tautan" yang sewenang-wenang untuk mengalir.

VM hanya membuang frame ke bus dan tugas host adalah menangani perangkat fisik; VM tidak perlu mengetahui atau peduli dengan kecepatan tautan perangkat fisik host.

Salah satu keuntungan dari ini adalah bahwa ketika paket bergerak di antara 2 VM pada host yang sama, mereka dapat mengirim paket secepat CPU host dapat memindahkannya dari satu set memori ke yang lain, menyetel "kecepatan tautan" di sini hanya memasukkan batas kecepatan yang tidak diperlukan.

Ini juga memungkinkan host untuk melakukan kerja sama adaptor dan menyebarkan lalu lintas ke beberapa tautan tanpa setiap VM perlu dikonfigurasi secara eksplisit untuk mendapatkan bandwidth penuh dari penyiapan.

Jika Anda ingin mengetahui seberapa cepat Anda benar-benar dapat mentransfer data dari VM Anda ke lokasi lain, Anda perlu melakukan pengujian throughput aktual dengan alat seperti iperf .


Untuk memperluas sedikit tentang ini karena saya juga baru saja membahas ini dan juga agak bingung dengan kurangnya detail kecepatan saat menjalankan ethtool pada VM:

$ ethtool eth0
Settings for eth0:
    Link detected: yes

Ketika saya melihat lshw keluaran:

$ 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

Ini memberi tahu kita bahwa driver perangkat yang digunakan untuk VM ini divirtualisasi, dalam hal ini adalah VM yang berjalan di KVM sehingga VM menggunakan driver virtio_* untuk semua interaksinya dengan "perangkat keras".

$ 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

Modul kernel ini tersedia untuk OS tertentu (Linux, BSD, dan Windows). Dengan driver ini terinstal di VM Anda, kernel di VM Anda memiliki akses khusus ke perangkat keras yang mendasarinya melalui kernel yang berjalan di hypervisor Anda.

Ingatlah bahwa dengan hypervisor ada 2 tipe berbeda. ESX/vsphere dianggap tipe-1. Pengingat tentang jenis:

  • Tipe-1, hypervisor asli atau bare-metal
  • Tipe-2 atau hypervisor yang dihosting

KVM lebih mirip dengan tipe-2, tetapi memiliki beberapa elemen, seperti virtio_*, yang membuatnya berperilaku dan bekerja lebih seperti tipe-1, dengan mengekspos ke virtualisasi kernel Linux yang mendasari hypervisor sedemikian rupa sehingga VM dapat memiliki akses semi-langsung ke sana.

Kecepatan NIC saya?

Mengingat Anda menjalankan hypervisor paravirtualisasi, Anda harus membuka hypervisor yang sebenarnya untuk mengetahui kecepatan teoretis NIC Anda menggunakan ethtool . Sebagai gantinya hanya bisa mengetahuinya dengan melakukan sesuatu seperti menggunakan iperf untuk membandingkan NIC yang sedang dimuat, dan secara eksperimental mencari tahu seperti apa kecepatan NIC.

Misalnya, di sini saya memiliki 2 server yang berjalan di 2 hypervisor yang berbeda. Menggunakan iperf di kedua server:

$ sudo yum install iperf

Kemudian jalankan satu server sebagai iperf server di host1 VM:

host1$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------ 

Kemudian pada klien VM 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

Pada output host1 Anda akan melihat ini:

$ 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

Di sini kita dapat melihat bahwa NIC mampu mencapai 8,60Gbits/dtk.


Linux
  1. Skrip Shell untuk Menemukan Status dan Kecepatan Tautan Antarmuka Jaringan (CentOS/RHEL)

  2. Cara memeriksa kecepatan koneksi di Ubuntu

  3. Dapatkan kecepatan tautan secara terprogram?

  1. Memulai NetworkManager di Linux

  2. Bagaimana cara mendapatkan kecepatan jam CPU ARM di Linux?

  3. Dapatkan kekuatan sinyal jaringan Wi-Fi yang terhubung dengan nmcli

  1. Geo – Utilitas BASH Sederhana Untuk Mendapatkan Detail Jaringan Dan Geolokasi

  2. (Mudah) Uji Kecepatan Unduhan Internet Anda di Terminal Linux

  3. Kecepatan Lambat Di Hotspot Dibuat Dari Ubuntu 16.04 Dengan Adaptor Jaringan Nirkabel Rtl8723be?