Saya memiliki kotak linux yang saya gunakan sebagai iperf3
klien, menguji 2 kotak server Windows 2012 R2 yang identik dengan Broadcom BCM5721, adaptor 1Gb (2 port, tetapi hanya 1 yang digunakan untuk pengujian). Semua mesin terhubung melalui saklar 1Gb tunggal.
Menguji UDP pada misal 300Mbit
iperf3 -uZVc 192.168.30.161 -b300m -t5 --get-server-output -l8192
mengakibatkan hilangnya 14% dari semua paket yang dikirim (untuk kotak server lain dengan perangkat keras yang sama persis, tetapi driver NIC yang lebih lama, kerugiannya sekitar 2%), tetapi kerugian terjadi bahkan pada 50Mbit, meskipun kurang parah. Kinerja TCP menggunakan pengaturan yang setara:
iperf3 -ZVc 192.168.30.161 -t5 --get-server-output -l8192
menghasilkan kecepatan transmisi di utara 800Mbit, tanpa transmisi ulang yang dilaporkan.
Server selalu dimulai menggunakan opsi berikut:
iperf3 -sB192.168.30.161
Siapa yang harus disalahkan?
Kotak klien linux (perangkat keras? Driver? Pengaturan?)?Sunting: Saya baru saja menjalankan tes dari satu kotak server Windows ke yang lain dan paket UDP yang hilang pada 300Mbit bahkan lebih tinggi, sebesar 22%- Kotak windows server (perangkat keras? Driver? Pengaturan?)?
- Sakelar (tunggal) yang menghubungkan semua mesin uji?
- Kabel?
Edit:
Sekarang saya mencoba ke arah lain: Windows -> Linux. Hasil: Paket loss selalu 0 , sementara throughput maksimal sekitar
- 840Mbit untuk
-l8192
, yaitu paket IP terfragmentasi - 250Mbit untuk
-l1472
, paket IP tidak terfragmentasi
Saya kira throughput kontrol aliran caps, dan mencegah hilangnya paket. Terutama yang terakhir, angka tidak terfragmentasi adalah tempat dekat TCP throughput (TCP tidak terfragmentasi menghasilkan angka yang mirip dengan TCP terfragmentasi), tetapi ini merupakan peningkatan yang jauh lebih besar dari Linux -> Windows dalam hal kehilangan paket.
Dan bagaimana cara mengetahuinya?
Saya memang mengikuti saran yang biasa untuk pengaturan driver di server untuk memaksimalkan kinerja dan mencoba untuk mengaktifkan / menonaktifkan / memaksimalkan / meminimalkan / mengubah
- Interupsi Moderasi
- Alur kontrol
- Terima Buffer
- RSS
- Wake-on-LAN
Semua fitur pembongkaran diaktifkan.
Sunting Saya juga mencoba mengaktifkan / menonaktifkan
- Ethernet @ Wirespeed
- Berbagai fitur pembongkaran
- Prioritas & VLAN
Dengan tingkat kerugian yang sama.
Output penuh dari menjalankan UDP:
$ iperf3 -uZVc 192.168.30.161 -b300m -t5 --get-server-output -l8192
iperf 3.0.7
Linux mybox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt4-3 (2015-02-03) x86_64 GNU/Linux
Time: Wed, 13 May 2015 13:10:39 GMT
Connecting to host 192.168.30.161, port 5201
Cookie: mybox.1431522639.098587.3451f174
[ 4] local 192.168.30.202 port 50851 connected to 192.168.30.161 port 5201
Starting Test: protocol: UDP, 1 streams, 8192 byte blocks, omitting 0 seconds, 5 second test
[ ID] Interval Transfer Bandwidth Total Datagrams
[ 4] 0.00-1.00 sec 33.3 MBytes 279 Mbits/sec 4262
[ 4] 1.00-2.00 sec 35.8 MBytes 300 Mbits/sec 4577
[ 4] 2.00-3.00 sec 35.8 MBytes 300 Mbits/sec 4578
[ 4] 3.00-4.00 sec 35.8 MBytes 300 Mbits/sec 4578
[ 4] 4.00-5.00 sec 35.8 MBytes 300 Mbits/sec 4577
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-5.00 sec 176 MBytes 296 Mbits/sec 0.053 ms 3216/22571 (14%)
[ 4] Sent 22571 datagrams
CPU Utilization: local/sender 4.7% (0.4%u/4.3%s), remote/receiver 1.7% (0.8%u/0.9%s)
Server output:
-----------------------------------------------------------
Accepted connection from 192.168.30.202, port 44770
[ 5] local 192.168.30.161 port 5201 connected to 192.168.30.202 port 50851
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-1.01 sec 27.2 MBytes 226 Mbits/sec 0.043 ms 781/4261 (18%)
[ 5] 1.01-2.01 sec 30.0 MBytes 252 Mbits/sec 0.058 ms 734/4577 (16%)
[ 5] 2.01-3.01 sec 29.0 MBytes 243 Mbits/sec 0.045 ms 870/4578 (19%)
[ 5] 3.01-4.01 sec 32.1 MBytes 269 Mbits/sec 0.037 ms 469/4579 (10%)
[ 5] 4.01-5.01 sec 32.9 MBytes 276 Mbits/sec 0.053 ms 362/4576 (7.9%)
TCP run:
$ iperf3 -ZVc 192.168.30.161 -t5 --get-server-output -l8192
iperf 3.0.7
Linux mybox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt4-3 (2015-02-03) x86_64 GNU/Linux
Time: Wed, 13 May 2015 13:13:53 GMT
Connecting to host 192.168.30.161, port 5201
Cookie: mybox.1431522833.505583.4078fcc1
TCP MSS: 1448 (default)
[ 4] local 192.168.30.202 port 44782 connected to 192.168.30.161 port 5201
Starting Test: protocol: TCP, 1 streams, 8192 byte blocks, omitting 0 seconds, 5 second test
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 109 MBytes 910 Mbits/sec 0 91.9 KBytes
[ 4] 1.00-2.00 sec 97.3 MBytes 816 Mbits/sec 0 91.9 KBytes
[ 4] 2.00-3.00 sec 97.5 MBytes 818 Mbits/sec 0 91.9 KBytes
[ 4] 3.00-4.00 sec 98.0 MBytes 822 Mbits/sec 0 91.9 KBytes
[ 4] 4.00-5.00 sec 97.6 MBytes 819 Mbits/sec 0 91.9 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
Test Complete. Summary Results:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-5.00 sec 499 MBytes 837 Mbits/sec 0 sender
[ 4] 0.00-5.00 sec 498 MBytes 836 Mbits/sec receiver
CPU Utilization: local/sender 3.5% (0.5%u/3.0%s), remote/receiver 4.5% (2.0%u/2.5%s)
Server output:
-----------------------------------------------------------
Accepted connection from 192.168.30.202, port 44781
[ 5] local 192.168.30.161 port 5201 connected to 192.168.30.202 port 44782
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 105 MBytes 878 Mbits/sec
[ 5] 1.00-2.00 sec 97.5 MBytes 818 Mbits/sec
[ 5] 2.00-3.00 sec 97.6 MBytes 819 Mbits/sec
[ 5] 3.00-4.00 sec 97.8 MBytes 820 Mbits/sec
[ 5] 4.00-5.00 sec 97.7 MBytes 820 Mbits/sec
sumber
-l
saklar. Itu tidak mengatur ukuran buffer; itu menentukan ukuran paket. Ini adalah jumlah data iperf3 yang akan ditulis ke soket dalam sekali jalan, dan membaca dari soket dalam sekali jalan. Anda dapat mengatur ukuran buffer socket menggunakan-w
. Jika Anda melihat sumbernya, Anda akan melihat bahwa ia memanggilsetsockopt()
untuk mengatur ukuran buffer soket ke apa pun yang Anda tentukan setelahnya-w
.Anda benar-benar ketinggalan pada penyebab paling jelas - adaptor, dan kemudian driver (Anda menyatakan bahwa menggunakan driver versi yang berbeda menghasilkan hasil yang berbeda).
Coba matikan semua kemampuan offload.
sumber