Laju pengalihan paket (PPS), bandwidth jaringan, dan latensi jaringan merupakan metrik utama untuk menilai kinerja jaringan Instance ECS. Pengujian kinerja jaringan membantu Anda mengevaluasi stabilitas, latensi, dan throughput-nya sehingga memungkinkan peningkatan pengalaman pengguna dan kinerja aplikasi. Topik ini menjelaskan cara menggunakan alat seperti Netperf dan sockperf untuk menguji kinerja jaringan Instance ECS.
-
Untuk mencegah kehilangan data, lakukan pengujian kinerja jaringan pada Instance ECS baru yang kosong.
-
Metrik tipe instans divalidasi dalam lingkungan pengujian. Kinerja aktual suatu instans dapat bervariasi tergantung pada faktor-faktor seperti beban instans dan model jaringan.
Siapkan lingkungan pengujian
Persyaratan
-
Siapkan Instance ECS untuk berbagai skenario pengujian, seperti pengujian laju pengalihan paket (PPS), bandwidth jaringan, dan latensi jaringan. Untuk informasi tentang cara membuat Instance ECS, lihat Custom launch ECS instances.
PentingUntuk memastikan hasil pengujian yang akurat dan dapat dibandingkan, gunakan instans dengan tipe yang sama. Hal ini mencegah perbedaan jumlah vCPU, ukuran memori, dan bandwidth jaringan memengaruhi hasil pengujian.
-
Untuk setiap pengujian, semua Instance ECS harus berada dalam VPC yang sama, menggunakan VSwitch yang sama, dan berada dalam security group yang sama.
Contoh lingkungan
Tabel berikut menunjukkan contoh tipe dan jumlah instans untuk mesin pengujian dan mesin pengujian tambahan. Pilih mesin sesuai kebutuhan selama pengujian Anda.
-
Menguji laju pengalihan paket (PPS) Instance ECS (untuk Linux saja)
CatatanTopik ini tidak menyertakan instruksi untuk menguji laju pengalihan paket (PPS) pada instans Windows karena alat benchmarking yang sesuai tidak tersedia.
Kurang dari 6.000.000 pps
Spesifikasi
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1
1
Network
Public IP addresses assigned.
6.000.000 hingga 20.000.000 pps
Spesifikasi
Mesin uji
Mesin pengujian tambahan
Instance type
ecs.g7.16xlarge
ecs.g7.16xlarge
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1
3
Network
Public IP addresses assigned.
Lebih dari 20.000.000 pps
Spesifikasi
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.32xlarge
ecs.g7.32xlarge
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1
3
Network
Public IP addresses assigned.
-
Menguji bandwidth jaringan dan latensi jaringan Instance ECS
Instans Linux
Spesifikasi
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1
1
Network
Public IP addresses assigned.
Instans Windows
Spesifikasi
Mesin pengujian
Mesin pengujian tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Windows Server 2022
Windows Server 2022
Jumlah instans
1
1
Network
Public IP addresses assigned.
Uji kinerja jaringan
Uji network PPS (Linux saja)
Topik ini tidak menyediakan prosedur untuk menguji laju pengalihan paket (PPS) pada instans Windows karena alat pengujian yang sesuai tidak tersedia secara umum.
Kurang dari 6.000.000 PPS
-
Hubungkan ke instans pengujian dan instans pengujian tambahan.
Untuk informasi selengkapnya, lihat Log on to a Linux instance using Workbench.
-
Pada kedua instans—pengujian dan pengujian tambahan—jalankan perintah berikut untuk mengunduh Netperf.
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz -
Pada kedua instans—pengujian dan pengujian tambahan—instal Netperf dan alat pemantauan sar.
-
Jalankan perintah berikut untuk menginstal dependensi dan mengekstrak paket Netperf.
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gz -
Jalankan perintah berikut untuk memeriksa versi
gcc.gcc -v 2>&1 -
Jika versi
gccpada instans pengujian atau instans pengujian tambahan lebih baru dari 10, lakukan langkah-langkah berikut agargccdapat dikompilasi dengan benar. Jika tidak, lewati langkah ini.-
Jalankan perintah berikut untuk mengubah file
nettest_omni.c.cd netperf vim src/nettest_omni.c -
Tekan i untuk masuk ke mode Insert dan hapus secara manual deklarasi variabel dari file
nettest_omni.c.Hapus deklarasi variabel berikut:
/* 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 */ -
Untuk menyimpan perubahan dan keluar, tekan Esc, masukkan
:wq, lalu tekan Enter.
-
-
Jalankan perintah berikut untuk mengompilasi dan menginstal Netperf.
cd netperf sudo ./configure sudo make && sudo make install
-
-
Pada instans pengujian, jalankan skrip berikut untuk menjalankan 64 layanan netserver.
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf > /dev/null 2>&1 & done -
Pada instans pengujian, jalankan perintah berikut untuk menanyakan Alamat IP pribadinya.
ifconfig || ip addr
-
Pada instans pengujian tambahan, jalankan skrip berikut untuk mengirim traffic ke instans pengujian.
#!/bin/bash server_ip=<test_instance_private_ip_address> 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
<test_instance_private_ip_address>dengan Alamat IP pribadi instans pengujian yang Anda peroleh pada langkah sebelumnya.
-
Pada instans pengujian, jalankan perintah berikut untuk menguji laju pengalihan paket.
sar -n DEV 1Pada hasil pengujian, periksa nilai pada kolom
rxpck/s. Nilairxpck/smenunjukkan jumlah total paket yang diterima oleh instans pengujian per detik. Seperti yang ditunjukkan pada gambar berikut, rata-rata jumlah paket yang diterima oleh instans pengujian per detik sekitar 940.000.
6.000.000 hingga 20.000.000 PPS
-
Hubungkan ke instans pengujian dan instans pengujian tambahan.
Untuk informasi selengkapnya, lihat Log on to a Linux instance using Workbench.
-
Pada instans pengujian dan ketiga instans pengujian tambahan, jalankan perintah berikut untuk menginstal 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 install -
Pada instans pengujian, jalankan perintah berikut untuk menanyakan Alamat IP pribadinya.
ifconfig || ip addr
-
Pada masing-masing ketiga instans pengujian tambahan, jalankan skrip berikut untuk mengirim traffic ke instans pengujian.
server_ip="<test_instance_private_ip_address>" 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 & donePada skrip tersebut,
<test_instance_private_ip_address>adalah Alamat IP pribadi instans pengujian, danrun_timeadalah durasi pengujian. Ubah nilai-nilai ini sesuai kebutuhan. -
Pada instans pengujian dan ketiga instans pengujian tambahan, jalankan perintah berikut untuk menguji laju pengalihan paket.
sar -n DEV 1Pada instans pengujian, periksa nilai pada kolom
rxpck/s. Nilairxpck/smenunjukkan jumlah paket yang diterima oleh instans pengujian per detik. Misalnya, instans pengujian menerima sekitar 12 juta paket per detik.
Lebih dari 20.000.000 PPS
-
Hubungkan ke instans pengujian dan instans pengujian tambahan.
Untuk informasi selengkapnya, lihat Log on to a Linux instance using Workbench.
-
Pada instans pengujian dan ketiga instans pengujian tambahan, jalankan perintah berikut untuk menginstal 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 install -
Pada instans pengujian, jalankan skrip berikut untuk bind interrupt requests (IRQs).
Dalam skenario PPS tinggi, binding interrupt requests (IRQs) ke core CPU tertentu menjaga pemrosesan IRQ tetap pada core tersebut. Hal ini mengurangi context switching dan meningkatkan efisiensi pemrosesan.
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 done -
Pada instans pengujian, jalankan perintah berikut untuk menanyakan Alamat IP pribadinya.
ifconfig || ip addr
-
Pada masing-masing ketiga instans pengujian tambahan, jalankan skrip berikut untuk mengirim traffic ke instans pengujian.
server_ip="<test_instance_private_ip_address>" 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 & donePada skrip tersebut,
<test_instance_private_ip_address>adalah Alamat IP pribadi instans pengujian, danrun_timeadalah durasi pengujian. Ubah nilai-nilai ini sesuai kebutuhan. -
Pada instans pengujian dan ketiga instans pengujian tambahan, jalankan perintah berikut untuk menguji laju pengalihan paket.
sar -n DEV 1Pada instans pengujian, periksa nilai pada kolom
rxpck/s. Nilairxpck/smenunjukkan jumlah paket yang diterima oleh instans pengujian per detik. Pada contoh yang ditunjukkan pada gambar berikut, jumlah paket yang diterima per detik sekitar 20 juta.
Uji lebar pita jaringan
Instans Linux
-
Hubungkan ke instans pengujian dan instans pengujian tambahan.
Untuk informasi selengkapnya, lihat Log on to a Linux instance using Workbench.
-
Pada kedua instans—pengujian dan pengujian tambahan—jalankan perintah berikut untuk mengunduh Netperf.
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz -
Pada kedua instans—pengujian dan pengujian tambahan—instal Netperf dan alat pemantauan sar.
-
Jalankan perintah berikut untuk menginstal dependensi dan mengekstrak paket Netperf.
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gz -
Jalankan perintah berikut untuk memeriksa versi
gcc.gcc -v 2>&1 -
Jika versi
gccpada instans pengujian atau instans pengujian tambahan lebih baru dari 10, lakukan langkah-langkah berikut agargccdapat dikompilasi dengan benar. Jika tidak, lewati langkah ini.-
Jalankan perintah berikut untuk mengubah file
nettest_omni.c.cd netperf vim src/nettest_omni.c -
Tekan i untuk masuk ke mode Insert dan hapus secara manual deklarasi variabel dari file
nettest_omni.c.Hapus deklarasi variabel berikut:
/* 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 */ -
Untuk menyimpan perubahan dan keluar, tekan Esc, masukkan
:wq, lalu tekan Enter.
-
-
Jalankan perintah berikut untuk mengompilasi dan menginstal Netperf.
cd netperf sudo ./configure sudo make && sudo make install
-
-
Pada instans pengujian, jalankan skrip berikut untuk menjalankan 64 layanan netserver.
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf 2>&1 & done -
Pada instans pengujian, jalankan perintah berikut untuk menanyakan Alamat IP pribadinya.
ifconfig || ip addr
-
Pada instans pengujian tambahan, jalankan skrip berikut untuk mengirim traffic ke instans pengujian.
#!/bin/bash server_ip=<test_instance_private_ip_address> 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
<test_instance_private_ip_address>dengan Alamat IP pribadi instans pengujian yang Anda peroleh pada langkah sebelumnya.
-
Pada instans pengujian, jalankan perintah berikut untuk menguji network bandwidth.
sar -n DEV 1Pada hasil pengujian, kolom rxkB/s menunjukkan data yang diterima dalam KB/s. Untuk menghitung bandwidth dalam Kbps, kalikan nilai ini dengan 8 (karena 1 byte = 8 bit).
Contohnya ditunjukkan pada gambar berikut.

Instans Windows
-
Hubungkan ke instans pengujian dan instans pengujian tambahan.
Untuk informasi selengkapnya, lihat Log on to a Windows instance using Workbench.
-
Pada kedua instans—pengujian dan pengujian tambahan—instal alat pengujian dan konfigurasikan firewall.
-
Unduh alat ntttcp.exe dan catat path penyimpanannya.
-
Buka kotak dialog Run, masukkan powershell, lalu tekan Enter untuk membuka PowerShell.
-
Jalankan perintah berikut untuk menonaktifkan firewall. Hal ini mencegah firewall memblokir koneksi antara kedua instans.
Set-NetFirewallProfile -Profile * -Enabled:falseAtau, tambahkan aturan inbound untuk mengizinkan paket ntttcp.exe melewati firewall.
$ntttcpPath = "<path_to_ntttcp_exe>" New-NetFirewallRule -DisplayName ntttcp -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $ntttcpPathCatatanAnda harus mengganti
<path_to_ntttcp_exe>dengan path aktual file ntttcp.exe sesuai lingkungan Anda.
-
-
Pada instans pengujian, jalankan perintah berikut untuk mengonfigurasi fitur receive side scaling (RSS) pada adapter jaringan.
Receive side scaling (RSS) adalah teknologi driver jaringan yang mendistribusikan pemrosesan penerimaan jaringan secara efisien ke beberapa core CPU pada sistem multiprosesor. Perintah berikut melakukan operasi berikut:
-
Jika instans pengujian memiliki 16 core CPU atau kurang, jumlah antrian penerima RSS diatur sama dengan jumlah core CPU. Hal ini memastikan setiap core CPU memiliki antrian penerima khusus untuk memproses network traffic.
-
Jika instans pengujian memiliki lebih dari 16 core CPU, fitur RSS dinonaktifkan. Hal ini karena banyak adapter jaringan membatasi jumlah maksimum antrian RSS hingga 16. Melanjutkan penggunaan RSS dalam kasus ini dapat menyebabkan alokasi sumber daya yang tidak merata atau meningkatkan kompleksitas manajemen.
$cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors if ($cpuNum -le 16) { Set-NetAdapterRss -Name <name_of_the_network_adapter> -NumberOfReceiveQueues $cpuNum } else { Disable-NetAdapterRss -Name <name_of_the_network_adapter> }Catatan-
Anda harus mengganti
<name_of_the_network_adapter>dengan nama adapter jaringan pada instans pengujian. Anda dapat menjalankan perintahGet-NetAdapter | Select-Object Nameuntuk memperoleh namanya. -
Memodifikasi konfigurasi RSS memerlukan restart adapter, yang dapat mengganggu sementara koneksi jaringannya. Tunggu hingga koneksi pulih sebelum melanjutkan.
-
-
Pada instans pengujian, jalankan perintah berikut untuk mempersiapkan penerimaan data.
$serverIp = (Get-NetIPConfiguration -InterfaceAlias <name_of_the_network_adapter>).IPv4Address.IPAddress $cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors $threadNum = $cpuNum & <path_to_ntttcp_exe_on_test_instance> -r -m $threadNum,0,$serverIp -t 300CatatanAnda harus mengganti
<name_of_the_network_adapter>dan<path_to_ntttcp_exe_on_test_instance>dengan nilai sesuai lingkungan Anda. -
Pada instans pengujian tambahan, jalankan perintah berikut untuk mengirim data.
$serverIp = "<test_instance_private_ip_address>" $threadNum = "<thread_num_of_test_instance>" <path_to_ntttcp_exe_on_auxiliary_instance> -s -m $threadNum,*,$serverIp -t 100CatatanAnda harus mengganti
<test_instance_private_ip_address>,<thread_num_of_test_instance>, dan<path_to_ntttcp_exe_on_auxiliary_instance>dengan nilai sesuai lingkungan Anda. Anda dapat menjalankan perintahipconfiguntuk memperoleh Alamat IP pribadi instans pengujian dan menemukan jumlah thread instans pengujian dari nilai variabel$cpuNum. -
Pada instans pengujian, lihat network bandwidth yang diuji.
Pada hasil pengujian, nilai
Throughput(MB/s)menunjukkan network bandwidth.
Uji latensi jaringan
Instans Linux
-
Hubungkan ke instans pengujian dan instans pengujian tambahan.
Untuk informasi selengkapnya, lihat Log on to a Linux instance using Workbench.
-
Pada kedua instans—pengujian dan pengujian tambahan—jalankan perintah berikut untuk menginstal
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 install -
Pada instans pengujian, jalankan perintah berikut untuk menanyakan Alamat IP pribadinya.
ifconfig || ip addr
-
Pada instans pengujian, jalankan perintah berikut untuk menjalankan layanan.
sockperf sr --tcp --daemonize -
Pada instans pengujian tambahan, jalankan perintah berikut untuk mengirim traffic ke instans pengujian.
sockperf pp -i <test_instance_private_ip_address> --tcp -t 30 -m 14 --full-log=result.jsonGanti
<test_instance_private_ip_address>dengan Alamat IP pribadi instans pengujian yang Anda peroleh pada langkah sebelumnya. -
Pada instans pengujian, lihat network latency yang diuji.
Contoh hasil pengujian ditunjukkan pada gambar berikut:
-
Baris hasil yang diawali dengan
avg-latencymenunjukkan latensi rata-rata dalam mikrodetik (μs). -
Baris hasil yang diawali dengan
percentile 99.000menunjukkan latensi persentil ke-99 dalam mikrodetik (μs).

-
Instans Windows
-
Hubungkan ke instans pengujian dan instans pengujian tambahan.
Untuk informasi selengkapnya, lihat Masuk ke instans Windows menggunakan Workbench.
-
Pada kedua instans—pengujian dan pengujian tambahan—instal alat pengujian dan konfigurasikan firewall.
-
Unduh alat latte.exe dan catat path penyimpanannya.
-
Buka kotak dialog Run, masukkan powershell, lalu tekan Enter untuk membuka PowerShell.
-
Jalankan perintah berikut untuk menonaktifkan firewall. Hal ini mencegah firewall memblokir koneksi antara kedua instans.
Set-NetFirewallProfile -Profile * -Enabled:falseAtau, tambahkan aturan inbound untuk mengizinkan paket latte.exe melewati firewall.
$lattePath = "<path_to_latte_exe>" New-NetFirewallRule -DisplayName Latte -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $lattePathCatatanAnda harus mengganti
<path_to_latte_exe>dengan path aktual file latte.exe pada instans pengujian sesuai lingkungan Anda.
-
-
Pada instans pengujian, jalankan perintah berikut untuk mempersiapkan penerimaan data.
$serverIp = (Get-NetIPConfiguration | Where-Object {$_.InterfaceAlias -eq '<name_of_the_network_adapter>'} | Select-Object -ExpandProperty IPv4Address).IPAddress $port = <communication_port> & "<path_to_latte_exe_on_test_instance>" -a "$serverIp`:$port" -i 65535Catatan-
Anda harus mengganti
<name_of_the_network_adapter>dan<path_to_latte_exe_on_test_instance>dengan nilai sesuai lingkungan Anda. Anda dapat menjalankan perintahGet-NetAdapter | Select-Object Nameuntuk memperoleh nama adapter jaringan. -
Parameter
<communication_port>ditentukan pengguna. Pastikan nomor port sama pada kedua instans—pengujian dan pengujian tambahan.
-
-
Pada instans pengujian tambahan, jalankan perintah berikut untuk mengirim data.
$serverIp = "<test_instance_private_ip_address>" $port = <communication_port> & "<path_to_latte_exe_on_auxiliary_instance>" -c -a "${serverIp}:$port" -i 65535Catatan-
Anda harus mengganti
<test_instance_private_ip_address>dan<path_to_latte_exe_on_auxiliary_instance>dengan nilai sesuai lingkungan Anda. Anda dapat menjalankan perintahipconfiguntuk memperoleh Alamat IP pribadi instans pengujian. -
Parameter
<communication_port>ditentukan pengguna. Pastikan nomor port sama pada kedua instans—pengujian dan pengujian tambahan.
-
-
Pada instans pengujian, lihat network latency yang diuji.
Pada hasil pengujian, nilai
Latency(usec)menunjukkan latensi transmisi data rata-rata dalam mikrodetik (μs).