Laju pengalihan paket, bandwidth jaringan, dan latensi jaringan merupakan metrik penting untuk mengukur kinerja jaringan instance Elastic Compute Service (ECS). Laju pengalihan paket, yang diukur dalam paket per detik (pps), menunjukkan jumlah paket yang dapat dialihkan per detik. Bandwidth jaringan menggambarkan laju transfer data pada suatu jaringan, sedangkan latensi jaringan mengacu pada waktu yang diperlukan oleh sebuah paket data untuk berpindah dari pengirim ke penerima. Pengujian kinerja jaringan membantu meningkatkan stabilitas dan throughput jaringan, mengurangi latensi, serta memperbaiki pengalaman pengguna dan kinerja aplikasi. Topik ini menjelaskan cara menggunakan alat seperti Netperf dan sockperf untuk menguji laju pengalihan paket, bandwidth jaringan, dan latensi jaringan instance ECS. Anda dapat memperkirakan kinerja jaringan instance tersebut berdasarkan hasil pengujian.
Untuk mencegah kehilangan data, kami menyarankan Anda menggunakan alat untuk menguji kinerja jaringan pada instance ECS baru yang tidak berisi data.
Metrik tipe instans semuanya diverifikasi dan diperoleh dalam lingkungan pengujian. Dalam skenario aktual, kinerja suatu instans dapat bervariasi tergantung pada faktor lain, seperti beban instans dan model jaringan.
Persiapkan lingkungan pengujian
Prasyarat
Buat instance ECS yang dapat digunakan untuk menguji metrik kinerja jaringan yang berbeda, seperti laju pengalihan paket, bandwidth jaringan, dan latensi jaringan. Untuk informasi tentang cara membuat instance ECS, lihat Buat instance pada tab Custom Launch.
PentingUntuk memastikan akurasi dan komparabilitas hasil pengujian serta menghilangkan dampak faktor lain—seperti spesifikasi instans yang berbeda—terhadap hasil pengujian, kami menyarankan Anda menggunakan instance ECS dengan tipe instans yang sama dalam pengujian kinerja jaringan.
Pastikan semua instance ECS dalam lingkungan pengujian yang sama ditempatkan dalam virtual private cloud (VPC) yang sama, terhubung ke vSwitch yang sama, dan termasuk dalam security group yang sama.
Lingkungan contoh
Berikut adalah tipe dan jumlah instans utama serta instans uji tambahan yang digunakan untuk pengujian kinerja jaringan dalam topik ini. Untuk pengujian Anda sendiri, Anda dapat memilih dua instans berdasarkan lingkungan aktual Anda.
Uji laju pengalihan paket instance ECS (Pengujian ini hanya dapat dilakukan untuk instans Linux)
CatatanTidak tersedia alat untuk menguji laju pengalihan paket instans Windows. Topik ini tidak menjelaskan cara menguji laju pengalihan paket instans Windows.
Laju pengalihan paket kurang dari 6.000.000 pps
Item pengujian
Mesin uji
Mesin uji tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1 unit
1
Network
Allocate a public IP address
Laju pengalihan paket lebih dari 6.000.000 pps dan kurang dari 20.000.000 pps
Item pengujian
Mesin uji
Mesin uji tambahan
Instance type
ecs.g7.16xlarge
ecs.g7.16xlarge
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1 unit
3 units
Network
Allocate a public IP address.
Laju pengalihan paket lebih dari 20.000.000 pps
Contoh Tes
Mesin tes
Mesin uji tambahan
Instance type
ecs.g7.32xlarge
ecs.g7.32xlarge
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1 unit
3 units
Network
Assigning a public IP address
Uji bandwidth jaringan dan latensi jaringan instance ECS
Instans Linux
Item pengujian
Mesin uji
Mesin uji tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Jumlah instans
1
1 unit
Network
Allocate a public IP address
Instans Windows
Item pengujian
Mesin uji
Mesin uji tambahan
Instance type
ecs.g7.large
ecs.g7.large
Image
Windows Server 2022
Windows Server 2022
Instance Count
1 unit
1
Network
Allocating a public IP address
Uji kinerja jaringan
Uji laju pengalihan paket (hanya untuk instans Linux)
Tidak tersedia alat untuk menguji laju pengalihan paket instans Windows. Bagian ini tidak menjelaskan cara menguji laju pengalihan paket instans Windows.
Laju pengalihan paket kurang dari 6.000.000 pps
Hubungkan ke mesin uji dan satu atau beberapa mesin uji tambahan.
Untuk informasi selengkapnya, lihat Connect to a Linux instance using Workbench.
Jalankan perintah berikut pada mesin uji dan mesin uji tambahan untuk mengunduh paket instalasi Netperf:
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gzJalankan perintah berikut pada mesin uji dan mesin uji tambahan untuk menginstal Netperf dan sar.
Jalankan perintah berikut untuk mengekstrak paket instalasi Netperf:
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gzJalankan perintah berikut untuk mengecek nomor versi
gcc.gcc -v 2>&1Jika versi
gccyang diinstal pada mesin uji dan mesin uji tambahan lebih baru dari 10, lakukan langkah-langkah berikut agargccdapat mengompilasi kode dengan benar. Jika tidak, Anda dapat melewati langkah ini.Jalankan perintah berikut untuk memodifikasi file
nettest_omni.c.cd netperf vim src/nettest_omni.cTekan tombol i untuk masuk ke mode edit dan hapus secara manual deklarasi variabel berikut dari file
nettest_omni.c.Deklarasi variabel tersebut adalah sebagai 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 */Setelah memodifikasi file, tekan tombol Esc, ketik
:wq, lalu tekan Enter untuk menyimpan file dan keluar.
Jalankan perintah berikut untuk menginstal Netperf dan sar:
cd netperf sudo ./configure sudo make && sudo make install
Jalankan perintah berikut pada mesin uji 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 & doneJalankan perintah berikut pada mesin uji untuk mengecek Alamat IP pribadi mesin uji:
ifconfig || ip addr
Jalankan perintah berikut pada mesin uji tambahan untuk mengirim traffic ke mesin uji:
#!/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 mesin uji yang Anda peroleh pada langkah sebelumnya. Gambar berikut menunjukkan contohnya.
Jalankan perintah berikut pada mesin uji untuk menguji laju pengalihan paket mesin uji:
sar -n DEV 1Pada hasil pengujian, lihat nilai pada kolom
rxpck/s.rxpck/smenunjukkan jumlah total paket yang diterima mesin uji per detik. Pada contoh yang ditunjukkan pada gambar berikut, rata-rata jumlah paket yang diterima mesin uji per detik sekitar 940.000.
Laju pengalihan paket lebih dari 6.000.000 pps dan kurang dari 20.000.000 pps
Hubungkan ke mesin uji dan satu atau beberapa mesin uji tambahan.
Untuk informasi selengkapnya, lihat Connect to a Linux instance using Workbench.
Jalankan perintah berikut pada tiga mesin uji tambahan dan satu mesin uji 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 installJalankan perintah berikut pada mesin uji untuk mengecek Alamat IP pribadi mesin uji:
ifconfig || ip addr
Jalankan perintah berikut pada masing-masing tiga mesin uji tambahan untuk mengirim traffic ke mesin uji.
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 Alamat IP pribadi mesin uji.run_timemenentukan durasi pengiriman traffic. Anda dapat mengubah nilainya sesuai kebutuhan.Jalankan perintah berikut pada tiga mesin uji tambahan dan satu mesin uji untuk menguji laju pengalihan paket:
sar -n DEV 1Pada mesin uji, lihat nilai pada kolom
rxpck/s.rxpck/smenunjukkan jumlah paket yang diterima mesin uji per detik. Pada contoh yang ditunjukkan pada gambar berikut, jumlah paket yang diterima mesin uji per detik sekitar 12 juta.
Laju pengalihan paket lebih dari 20.000.000 pps
Hubungkan ke mesin uji dan satu atau beberapa mesin uji tambahan.
Untuk informasi selengkapnya, lihat Connect to a Linux instance using Workbench.
Jalankan perintah berikut pada tiga mesin uji tambahan dan satu mesin uji 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 installJalankan perintah berikut pada mesin uji untuk bind interrupt requests (IRQs).
Pada skenario di mana jumlah besar paket dialihkan per detik, Anda dapat bind IRQs ke core CPU untuk memastikan bahwa IRQs diproses oleh core CPU tersebut. Dengan cara ini, context switching berkurang dan efisiensi pemrosesan IRQ meningkat.
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 doneJalankan perintah berikut pada mesin uji untuk mengecek Alamat IP pribadi mesin uji:
ifconfig || ip addr
Jalankan perintah berikut pada masing-masing tiga mesin uji tambahan untuk mengirim traffic ke mesin uji.
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 Alamat IP pribadi mesin uji.run_timemenentukan durasi pengiriman traffic. Anda dapat mengubah nilainya sesuai kebutuhan.Jalankan perintah berikut pada tiga mesin uji tambahan dan satu mesin uji untuk menguji laju pengalihan paket:
sar -n DEV 1Pada mesin uji, lihat nilai pada kolom
rxpck/s.rxpck/smenunjukkan jumlah paket yang diterima mesin uji per detik. Pada contoh yang ditunjukkan pada gambar berikut, jumlah paket yang diterima mesin uji per detik sekitar 20 juta.
Uji bandwidth jaringan
Instans Linux
Hubungkan ke mesin uji dan mesin uji tambahan.
Untuk informasi selengkapnya, lihat Connect to a Linux instance using Workbench.
Jalankan perintah berikut pada mesin uji dan mesin uji tambahan untuk mengunduh paket instalasi Netperf:
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gzJalankan perintah berikut pada mesin uji dan mesin uji tambahan untuk menginstal Netperf dan sar.
Jalankan perintah berikut untuk mengekstrak paket instalasi Netperf:
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gzJalankan perintah berikut untuk mengecek nomor versi
gcc.gcc -v 2>&1Jika versi
gccyang diinstal pada mesin uji dan mesin uji tambahan lebih baru dari 10, lakukan langkah-langkah berikut agargccdapat mengompilasi kode dengan benar. Jika tidak, Anda dapat melewati langkah ini.Jalankan perintah berikut untuk memodifikasi file
nettest_omni.c.cd netperf vim src/nettest_omni.cTekan tombol i untuk masuk ke mode edit dan hapus secara manual deklarasi variabel berikut dari file
nettest_omni.c.Deklarasi variabel tersebut adalah sebagai 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 */Setelah memodifikasi file, tekan tombol Esc, ketik
:wq, lalu tekan Enter untuk menyimpan file dan keluar.
Jalankan perintah berikut untuk menginstal Netperf dan sar:
cd netperf sudo ./configure sudo make && sudo make install
Jalankan perintah berikut pada mesin uji untuk menjalankan 64 layanan netserver:
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf 2>&1 & doneJalankan perintah berikut pada mesin uji untuk mengecek Alamat IP pribadi mesin uji:
ifconfig || ip addr
Jalankan perintah berikut pada mesin uji tambahan untuk mengirim traffic ke mesin uji:
#!/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 mesin uji yang Anda peroleh pada langkah sebelumnya. Gambar berikut menunjukkan contohnya.
Jalankan perintah berikut pada mesin uji untuk menguji bandwidth jaringan:
sar -n DEV 1Lihat nilai pada kolom
rxkB/spada hasil pengujian seperti yang ditunjukkan pada gambar berikut. KolomrxkB/smenampilkan ukuran paket yang diterima mesin uji per detik. Satuan: KB/s. Satu byte sama dengan delapan bit. Anda dapat mengalikan ukuran paket pada kolom rxkB/s dengan delapan untuk mendapatkan nilai bandwidth jaringan dalam Kbit/s.Gambar berikut adalah contohnya.

Instans Windows
Hubungkan ke mesin uji dan mesin uji tambahan.
Untuk informasi selengkapnya, lihat Log on to a Windows instance using Workbench.
Instal alat pengujian dan nonaktifkan firewall pada mesin uji dan mesin uji tambahan.
Unduh alat ntttcp.exe dan catat path tempat alat tersebut disimpan.
Buka kotak dialog Run. Masukkan powershell dan klik OK untuk menjalankan PowerShell.
Jalankan perintah berikut untuk mematikan firewall. Hal ini mencegah firewall memblokir koneksi antara kedua mesin.
Set-NetFirewallProfile -Profile * -Enabled:falseAtau, Anda dapat menambahkan aturan inbound untuk mengizinkan paket dari ntttcp.exe melewati firewall.
$ntttcpPath = "<Path of ntttcp.exe>" New-NetFirewallRule -DisplayName ntttcp -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $ntttcpPathCatatanGanti
<actual path of ntttcp.exe>dengan path aktual pada mesin uji.
Jalankan perintah berikut pada mesin uji untuk mengonfigurasi receive side scaling (RSS) pada adapter jaringan (juga disebut network interface controller).
RSS adalah teknologi driver jaringan yang memungkinkan distribusi paket secara efisien di antara antrian penerima pada beberapa core CPU untuk meningkatkan kinerja jaringan dan memungkinkan pemrosesan jaringan secara konkuren. Dalam perintah tersebut:
Jika mesin uji memiliki hingga 16 core CPU, atur jumlah antrian penerima RSS sesuai dengan jumlah core CPU untuk memastikan setiap core CPU memiliki antrian penerima RSS independen untuk memproses traffic jaringan.
Jika mesin uji memiliki lebih dari 16 core CPU, nonaktifkan RSS. Banyak adapter jaringan hanya mendukung hingga 16 antrian RSS. Jika Anda menggunakan RSS pada mesin uji yang memiliki lebih dari 16 core CPU, alokasi sumber daya mungkin tidak merata atau kompleksitas manajemen meningkat.
$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>sesuai kebutuhan. Anda dapat menjalankan perintahGet-NetAdapter | Select-Object Nameuntuk mendapatkan nama tersebut.Setelah mengubah konfigurasi RSS adapter jaringan, Anda harus merestart layanan adapter jaringan, yang dapat mengganggu koneksi jaringan pada adapter tersebut. Tunggu hingga koneksi jaringan dipulihkan sebelum melanjutkan ke langkah berikutnya.
Jalankan perintah berikut pada mesin uji untuk mempersiapkan penerimaan 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 & <actual 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<actual path of ntttcp.exe on the test machine>sesuai kebutuhan.Jalankan perintah berikut pada mesin uji tambahan untuk mengirim 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>(yang dapat Anda peroleh dengan menjalankan perintahipconfig),<threadNum of the test machine>(yang dapat Anda peroleh dengan menjalankan perintah$cpuNum), dan<actual path of ntttcp.exe on the auxiliary test machine>sesuai kebutuhan.Lihat bandwidth jaringan hasil pengujian pada mesin uji.
Gambar berikut menunjukkan contoh pengujian. Nilai
Throughput(MB/s)menunjukkan bandwidth jaringan.
Uji latensi jaringan
Instans Linux
Hubungkan ke mesin uji dan mesin uji tambahan.
Untuk informasi selengkapnya, lihat Connect to a Linux instance using Workbench.
Pada mesin uji dan mesin uji 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 installJalankan perintah berikut pada mesin uji untuk mengecek Alamat IP pribadi mesin uji:
ifconfig || ip addr
Jalankan perintah berikut pada mesin uji untuk menjalankan layanan.
sockperf sr --tcp --daemonizeJalankan perintah berikut pada mesin uji tambahan untuk mengirim traffic ke mesin uji:
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 Alamat IP pribadi mesin uji yang Anda peroleh pada langkah sebelumnya.Lihat latensi jaringan hasil pengujian pada mesin uji.
Gambar berikut menunjukkan contoh pengujian:
Nilai yang diawali dengan
avg-latencymenunjukkan latensi rata-rata dalam mikrodetik (μs).Nilai yang diawali dengan
percentile 99.000menunjukkan latensi persentil ke-99 dalam μs.

Instans Windows
Hubungkan ke mesin uji dan mesin uji tambahan.
Untuk informasi selengkapnya, lihat Use Workbench to log on to a Windows instance.
Instal alat pengujian dan nonaktifkan firewall pada mesin uji dan mesin uji tambahan.
Unduh alat latte.exe dan catat path tempat alat tersebut disimpan.
Buka kotak dialog Run. Masukkan powershell dan klik OK untuk menjalankan PowerShell.
Untuk mencegah firewall memblokir koneksi ke mesin uji dan mesin uji tambahan, jalankan perintah berikut pada mesin-mesin tersebut untuk menonaktifkan firewall:
Set-NetFirewallProfile -Profile * -Enabled:falseAtau, Anda dapat menambahkan aturan inbound untuk mengizinkan paket latte.exe melewati firewall.
$lattePath = "<Path of latte.exe>" New-NetFirewallRule -DisplayName Latte -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $lattePathCatatanGanti
<actual path of latte.exe>dengan path latte.exe pada mesin uji.
Jalankan perintah berikut pada mesin uji untuk mempersiapkan penerimaan 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>(yang dapat Anda peroleh dengan menjalankan perintahGet-NetAdapter | Select-Object Name) dan<actual path of latte.exe on the test machine>sesuai kebutuhan.Tentukan nilai untuk
<communication port>. Pastikan nomor port sama pada mesin uji dan mesin uji tambahan.
Jalankan perintah berikut pada mesin uji tambahan untuk mengirim 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>(yang dapat Anda peroleh dengan menjalankan perintahipconfig) dan<actual path of latte.exe on the auxiliary test machine>dengan nilai yang benar.Tentukan nilai untuk
<communication port>. Nomor port harus sama pada mesin uji dan mesin uji tambahan.
Lihat latensi jaringan hasil pengujian pada mesin uji.
Gambar berikut menunjukkan contoh pengujian. Nilai
Latency(usec)menunjukkan latensi rata-rata transmisi data dalam mikrodetik (μs).