Gunakan Netperf dan sockperf untuk menguji laju pengalihan paket (PPS), lebar pita jaringan, dan latensi jaringan Instance ECS.
Untuk mencegah kehilangan data, uji kinerja jaringan pada Instance ECS baru yang tidak berisi data.
Metrik tipe instans diverifikasi dalam Lingkungan pengujian. Kinerja aktual dapat bervariasi tergantung pada faktor-faktor seperti beban instans dan model jaringan.
Prasyarat
Persiapan
Buat Instance ECS untuk pengujian. Lihat Custom launch ECS instances.
PentingGunakan instans dengan tipe instans yang sama untuk memastikan hasil pengujian akurat dan dapat dibandingkan.
Pastikan semua instans pengujian berada dalam Virtual Private Cloud (VPC) yang sama, terhubung ke vSwitch yang sama, dan berada dalam security group yang sama.
Lingkungan contoh
Tabel berikut mencantumkan tipe dan jumlah instans yang direkomendasikan untuk mesin pengujian dan mesin pengujian tambahan. Pilih mesin sebagai server atau klien berdasarkan skenario pengujian Anda.
Uji laju pengalihan paket (hanya untuk instans Linux)
CatatanTidak tersedia alat untuk menguji laju pengalihan paket instans Windows.
Laju pengalihan paket kurang dari 6.000.000 pps
Item pengujian
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Number of instances
1
1
Network
Public IP addresses are assigned.
Laju pengalihan paket lebih dari 6.000.000 pps dan kurang dari 20.000.000 pps
Item pengujian
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.16xlarge
ecs.g7.16xlarge
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Number of instances
1
3
Network
Public IP addresses are assigned.
Laju pengalihan paket lebih dari 20.000.000 pps
Item pengujian
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.32xlarge
ecs.g7.32xlarge
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Number of instances
1
3
Network
Public IP addresses are assigned.
Uji lebar pita jaringan dan latensi
Instans Linux
Item pengujian
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Number of instances
1
1
Network
Public IP addresses are assigned.
Instans Windows
Item pengujian
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Windows Server 2022
Windows Server 2022
Number of instances
1
1
Network
Public IP addresses are assigned.
Prosedur
Uji laju pengalihan paket (hanya Linux)
Tidak tersedia alat untuk menguji laju pengalihan paket instans Windows.
Laju pengalihan paket kurang dari 6.000.000 pps
Hubungkan ke mesin pengujian dan mesin pengujian tambahan. Lihat Log on to a Linux instance using Workbench.
Di kedua mesin, unduh paket instalasi Netperf:
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gzDi kedua mesin, instal Netperf dan sar.
Ekstrak paket instalasi Netperf:
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gzPeriksa nomor versi GNU Compiler Collection (
GCC).gcc -v 2>&1Jika
GCClebih baru dari V10 di salah satu mesin, lakukan langkah-langkah berikut agarGCCdapat dikompilasi dengan benar. Jika tidak, lewati langkah ini.Buka file
nettest_omni.c.cd netperf vim src/nettest_omni.cTekan i untuk masuk ke mode Insert dan hapus variabel yang dideklarasikan berikut dari file
nettest_omni.c:/* different options for the sockets */ int loc_nodelay, /* don't/do use NODELAY locally */ rem_nodelay, /* don't/do use NODELAY remotely */ loc_sndavoid, /* avoid send copies locally */ loc_rcvavoid, /* avoid recv copies locally */ rem_sndavoid, /* avoid send copies remotely */ rem_rcvavoid; /* avoid recv_copies remotely */Tekan Esc, ketik
:wq, lalu tekan Enter untuk menyimpan dan menutup file.
Instal Netperf dan sar.
cd netperf sudo ./configure sudo make && sudo make install
Di mesin pengujian, jalankan 64 layanan netserver:
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf > /dev/null 2>&1 & donePeriksa Alamat IP pribadi mesin pengujian:
ifconfig || ip addr
Di mesin pengujian tambahan, kirim traffic ke mesin pengujian:
#!/bin/bash server_ip=<Private IP address of the test machine> for j in `seq 64`; do port=$[16000+j] netperf -H ${server_ip} -l ${run_time:-300} -t UDP_STREAM -p $port -- -m 1 -D > /dev/null 2>&1 & doneGanti
<Private IP address of the test machine>dengan Alamat IP pribadi aktual yang diperoleh pada langkah sebelumnya.
Di mesin pengujian, uji laju pengalihan paket:
sar -n DEV 1Periksa kolom
rxpck/s. Nilairxpck/smenunjukkan jumlah paket yang diterima per detik. Dalam contoh ini, nilainya sekitar 940.000.
Laju pengalihan paket lebih dari 6.000.000 pps dan kurang dari 20.000.000 pps
Hubungkan ke mesin pengujian dan mesin pengujian tambahan. Lihat Log on to a Linux instance using Workbench.
Di keempat mesin (tiga tambahan + satu pengujian), instal sockperf:
sudo yum install -y autoconf automake libtool gcc-c++ cd /opt sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz sudo tar -zxf 3.8.tar.gz cd sockperf-3.8/ sudo ./autogen.sh sudo ./configure sudo make -j `cat /proc/cpuinfo| grep process | wc -l` sudo make installPeriksa Alamat IP pribadi mesin pengujian:
ifconfig || ip addr
Di setiap mesin pengujian tambahan, kirim traffic ke mesin pengujian:
server_ip="<Private IP address of the test machine>" threads=64 msg_size=14 run_time=60 basePort=6666 for((i=0;i<$threads;++i));do nohup sockperf tp -i $server_ip --pps max -m ${msg_size} -t ${run_time} --port $[${basePort}+${i}] 2>&1 & doneGanti
<Private IP address of the test machine>dengan nilai aktual.run_timemenentukan durasi traffic.Di keempat mesin, uji laju pengalihan paket:
sar -n DEV 1Periksa kolom
rxpck/sdi mesin pengujian. Nilairxpck/smenunjukkan jumlah paket yang diterima per detik. Dalam contoh ini, nilainya sekitar 12.000.000 pps.
Laju pengalihan paket lebih dari 20.000.000 pps
Hubungkan ke mesin pengujian dan mesin pengujian tambahan. Lihat Log on to a Linux instance using Workbench.
Di keempat mesin (tiga tambahan + satu pengujian), instal sockperf:
sudo yum install -y autoconf automake libtool gcc-c++ cd /opt sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz sudo tar -zxf 3.8.tar.gz cd sockperf-3.8/ sudo ./autogen.sh sudo ./configure sudo make -j `cat /proc/cpuinfo| grep process | wc -l` sudo make installDi mesin pengujian, bind interrupt requests (IRQs) ke core CPU.
Binding IRQs ke core CPU tertentu mengurangi context switching dan meningkatkan efisiensi pemrosesan paket pada PPS tinggi.
a=$(cat /proc/interrupts | grep virtio2-input | awk -F ':' '{print $1}') cpu=0 for irq in $a; do echo $cpu >/proc/irq/$irq/smp_affinity_list let cpu+=2 donePeriksa Alamat IP pribadi mesin pengujian:
ifconfig || ip addr
Di setiap mesin pengujian tambahan, kirim traffic ke mesin pengujian:
server_ip="<Private IP address of the test machine>" threads=64 msg_size=14 run_time=60 basePort=6666 for((i=0;i<$threads;++i));do nohup sockperf tp -i $server_ip --pps max -m ${msg_size} -t ${run_time} --port $[${basePort}+${i}] 2>&1 & doneGanti
<Private IP address of the test machine>dengan nilai aktual.run_timemenentukan durasi traffic.Di keempat mesin, uji laju pengalihan paket:
sar -n DEV 1Periksa kolom
rxpck/sdi mesin pengujian. Nilairxpck/smenunjukkan jumlah paket yang diterima per detik. Dalam contoh ini, nilainya sekitar 20.000.000 pps.
Uji lebar pita jaringan
Instans Linux
Hubungkan ke mesin pengujian dan mesin pengujian tambahan. Lihat Log on to a Linux instance using Workbench.
Di kedua mesin, unduh paket instalasi Netperf:
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gzDi kedua mesin, instal Netperf dan sar.
Ekstrak paket instalasi Netperf.
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gzPeriksa nomor versi
GCC.gcc -v 2>&1Jika
GCClebih baru dari V10 di salah satu mesin, lakukan langkah-langkah berikut agarGCCdapat dikompilasi dengan benar. Jika tidak, lewati langkah ini.Buka file
nettest_omni.c.cd netperf vim src/nettest_omni.cTekan i untuk masuk ke mode Insert dan hapus variabel yang dideklarasikan berikut dari file
nettest_omni.c:/* different options for the sockets */ int loc_nodelay, /* don't/do use NODELAY locally */ rem_nodelay, /* don't/do use NODELAY remotely */ loc_sndavoid, /* avoid send copies locally */ loc_rcvavoid, /* avoid recv copies locally */ rem_sndavoid, /* avoid send copies remotely */ rem_rcvavoid; /* avoid recv_copies remotely */Tekan Esc, ketik
:wq, lalu tekan Enter untuk menyimpan dan menutup file.
Instal Netperf dan sar.
cd netperf sudo ./configure sudo make && sudo make install
Di mesin pengujian, jalankan 64 layanan netserver:
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf 2>&1 & donePeriksa Alamat IP pribadi mesin pengujian:
ifconfig || ip addr[ecs-user@izxxx ecZ ~]$ ifconfig || ip addr eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 17.xxx.xxx.15 netmask 25xxx.0 broadcast 17.xxx.55 inet6 fexxx38:c158 prefixlen 64 scopeid 0x20<link> ether 00:xxx:xxx txqueuelen 1000 (Ethernet) RX packets 178595 bytes 106030163 (101.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 116902 bytes 70189540 (66.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 2 bytes 140 (140.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2 bytes 140 (140.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0Di mesin pengujian tambahan, kirim traffic ke mesin pengujian:
#!/bin/bash server_ip=<Private IP address of the test machine> for j in `seq 64`; do port=$[16000+j] netperf -H ${server_ip} -l ${run_time:-300} -t TCP_STREAM -p $port -- -D > /dev/null 2>&1 & doneGanti
<Private IP address of the test machine>dengan Alamat IP pribadi aktual yang diperoleh pada langkah sebelumnya.#!/bin/bash server_ip=<Private IP address of the test machine> for j in `seq 64`; do port=$[16000+j] netperf -H ${server_ip} -l ${run_time:-300} -t TCP_STREAM -p $port -- -D > /dev/null 2>&1 & done [1] 5100 [2] 5101 [3] 5102 [4] 5103Di mesin pengujian, uji lebar pita jaringan:
sar -n DEV 1Periksa kolom
rxkB/s. NilairxkB/smenunjukkan ukuran paket yang diterima dalam KB/s. Kalikan dengan 8 untuk mengonversi ke Kbit/s sebagai nilai lebar pita jaringan.
Instans Windows
Hubungkan ke mesin pengujian dan mesin pengujian tambahan. Lihat Connect to a Windows instance by using a password or a key.
Instal alat pengujian dan nonaktifkan firewall di kedua mesin.
Unduh alat ntttcp.exe dan catat path tempat alat tersebut disimpan.
Buka kotak dialog Run. Masukkan powershell lalu klik OK untuk menjalankan PowerShell.
Nonaktifkan firewall di kedua mesin agar koneksi tidak diblokir:
Set-NetFirewallProfile -Profile * -Enabled:falseAtau, buat aturan firewall inbound yang mengizinkan NTTTCP (ntttcp.exe) di kedua mesin:
$ntttcpPath = "<Path of ntttcp.exe>" New-NetFirewallRule -DisplayName ntttcp -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $ntttcpPathCatatanGanti
<Path of ntttcp.exe>dengan nilai aktual.
Di mesin pengujian, konfigurasikan receive side scaling (RSS) untuk adaptor jaringan.
RSS mendistribusikan paket yang diterima ke beberapa core CPU untuk meningkatkan kinerja jaringan. Atur jumlah antrian RSS berdasarkan jumlah CPU:
Jika mesin memiliki hingga 16 core CPU, atur jumlah antrian penerima RSS sesuai jumlah core CPU.
Jika mesin memiliki lebih dari 16 core CPU, nonaktifkan RSS. Sebagian besar adaptor jaringan hanya mendukung hingga 16 antrian RSS, sehingga melebihi batas ini dapat menyebabkan alokasi sumber daya tidak merata.
$cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors if ($cpuNum -le 16) { Set-NetAdapterRss -Name <Name of the network adapter on the test machine> -NumberOfReceiveQueues $cpuNum } else { Disable-NetAdapterRss -Name <Name of the network adapter on the test machine> }CatatanGanti
<Name of the network adapter on the test machine>dengan nilai aktual. JalankanGet-NetAdapter | Select-Object Nameuntuk melihat nama adaptor.Modifikasi konfigurasi RSS akan me-restart layanan adaptor jaringan, yang dapat mengganggu koneksi. Tunggu hingga koneksi pulih sebelum melanjutkan.
Di mesin pengujian, siapkan untuk menerima data:
$serverIp = (Get-NetIPConfiguration -InterfaceAlias <Name of the network adapter on the test machine>).IPv4Address.IPAddress $cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors $threadNum = $cpuNum & <Path of ntttcp.exe on the test machine> -r -m $threadNum,0,$serverIp -t 300CatatanGanti
<Name of the network adapter on the test machine>dan<Path of ntttcp.exe on the test machine>dengan nilai aktual.Di mesin pengujian tambahan, kirim data:
$serverIp = "<Private IP address of the test machine>" $threadNum = "<Thread number of the test machine>" <Path of ntttcp.exe on the auxiliary test machine> -s -m $threadNum,*,$serverIp -t 100CatatanGanti
<Private IP address of the test machine>,<Thread number of the test machine>, dan<Path of ntttcp.exe on the auxiliary test machine>dengan nilai aktual. Jalankanipconfiguntuk mendapatkan Alamat IP pribadi dan$cpuNumuntuk mendapatkan jumlah thread.Lihat lebar pita jaringan di mesin pengujian.
Nilai
Throughput(MB/s)menunjukkan lebar pita jaringan.
Uji latensi jaringan
Instans Linux
Hubungkan ke mesin pengujian dan mesin pengujian tambahan. Lihat Log on to a Linux instance using Workbench.
Di kedua mesin, instal
sockperf:sudo yum install -y autoconf automake libtool gcc-c++ cd /opt sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz sudo tar -zxf 3.8.tar.gz cd sockperf-3.8/ sudo ./autogen.sh sudo ./configure sudo make -j `cat /proc/cpuinfo| grep process | wc -l` sudo make installPeriksa Alamat IP pribadi mesin pengujian:
ifconfig || ip addrDalam output perintah, alamat inet antarmuka eth0 adalah Alamat IP pribadi instans.
[ecs-user@izxxx ecZ ~]$ ifconfig || ip addr eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 17.xxx.xxx.15 netmask 25xxx.0 broadcast 17.xxx.55 inet6 fexxx38:c158 prefixlen 64 scopeid 0x20<link> ether 00:xxx:xxx txqueuelen 1000 (Ethernet) RX packets 178595 bytes 106030163 (101.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 116902 bytes 70189540 (66.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 2 bytes 140 (140.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2 bytes 140 (140.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0Di mesin pengujian, jalankan sockperf:
sockperf sr --tcp --daemonizeDi mesin pengujian tambahan, kirim traffic ke mesin pengujian:
sockperf pp -i <Private IP address of the test machine> --tcp -t 30 -m 14 --full-log=result.jsonGanti
<Private IP address of the test machine>dengan nilai aktual dari langkah sebelumnya.Lihat hasil latensi jaringan.
Dalam data yang dikembalikan:
avg-latency: latensi rata-rata dalam mikrodetik.percentile 99.000: latensi persentil ke-99 dalam mikrodetik.

Instans Windows
Hubungkan ke mesin pengujian dan mesin pengujian tambahan. Lihat Connect to a Windows instance by using a password or a key.
Instal alat pengujian dan nonaktifkan firewall di kedua mesin.
Unduh alat latte.exe dan catat path tempat alat tersebut disimpan.
Buka kotak dialog Run. Masukkan powershell lalu klik OK untuk menjalankan PowerShell.
Nonaktifkan firewall di kedua mesin agar koneksi tidak diblokir:
Set-NetFirewallProfile -Profile * -Enabled:falseAtau, buat aturan firewall inbound yang mengizinkan Latte (latte.exe) di kedua mesin:
$lattePath = "<Path of latte.exe>" New-NetFirewallRule -DisplayName Latte -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $lattePathCatatanGanti
<Path of latte.exe>dengan nilai aktual.
Di mesin pengujian, siapkan untuk menerima data:
$serverIp = (Get-NetIPConfiguration | Where-Object {$_.InterfaceAlias -eq '<Name of the network adapter on the test machine>'} | Select-Object -ExpandProperty IPv4Address).IPAddress $port = <Communication port> & "<Path of latte.exe on the test machine>" -a "$serverIp`:$port" -i 65535CatatanGanti
<Name of the network adapter on the test machine>dan<Path of latte.exe on the test machine>dengan nilai aktual. JalankanGet-NetAdapter | Select-Object Nameuntuk melihat nama adaptor.Tentukan nomor port untuk
<Communication port>. Gunakan port yang sama di kedua mesin.
Di mesin pengujian tambahan, kirim data:
$serverIp = "<Private IP address of the test machine>" $port = <Communication port> & "<Path of latte.exe on the auxiliary test machine>" -c -a "${serverIp}:$port" -i 65535CatatanGanti
<Private IP address of the test machine>dan<Path of latte.exe on the auxiliary test machine>dengan nilai aktual. Jalankanipconfiguntuk mendapatkan Alamat IP pribadi.Tentukan nomor port untuk
<Communication port>. Gunakan port yang sama di kedua mesin.
Lihat hasil latensi jaringan.
Nilai
Latency(usec)menunjukkan latensi jaringan rata-rata dalam mikrodetik.