Use o Netperf e o sockperf para testar a taxa de encaminhamento de pacotes (PPS), a largura de banda e a latência de rede das instâncias ECS.
Para evitar perda de dados, teste o desempenho de rede em novas instâncias ECS sem dados.
As métricas dos tipos de instância são verificadas em ambiente de teste. O desempenho real pode variar conforme fatores como carga da instância e modelo de rede.
Pré-requisitos
Preparações
-
Crie instâncias ECS para os testes. Consulte Iniciar instâncias ECS personalizadas.
ImportanteUse instâncias do mesmo tipo para garantir resultados precisos e comparáveis.
Certifique-se de que todas as instâncias de teste estejam na mesma Virtual Private Cloud (VPC), conectadas ao mesmo vSwitch e no mesmo grupo de segurança.
Ambientes de exemplo
As tabelas a seguir listam os tipos e as quantidades recomendados de instâncias para máquinas de teste e máquinas auxiliares. Selecione as máquinas como servidores ou clientes conforme o cenário de teste.
-
Testar a taxa de encaminhamento de pacotes (apenas instâncias Linux)
NotaNão há ferramentas disponíveis para testar a taxa de encaminhamento de pacotes de instâncias Windows.
Taxa de encaminhamento de pacotes inferior a 6.000.000 pps
Item de teste
Máquina de teste
Máquina auxiliar de teste
Tipo de instância
ecs.g7.large
ecs.g7.large
Imagem
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Número de instâncias
1
1
Rede
Endereços IP públicos atribuídos.
Taxa de encaminhamento de pacotes superior a 6.000.000 pps e inferior a 20.000.000 pps
Item de teste
Máquina de teste
Máquina auxiliar de teste
Tipo de instância
ecs.g7.16xlarge
ecs.g7.16xlarge
Imagem
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Número de instâncias
1
3
Rede
Endereços IP públicos atribuídos.
Taxa de encaminhamento de pacotes superior a 20.000.000 pps
Item de teste
Máquina de teste
Máquina auxiliar de teste
Tipo de instância
ecs.g7.32xlarge
ecs.g7.32xlarge
Imagem
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Número de instâncias
1
3
Rede
Endereços IP públicos atribuídos.
-
Testar largura de banda e latência de rede
Instância Linux
Item de teste
Máquina de teste
Máquina auxiliar de teste
Tipo de instância
ecs.g7.large
ecs.g7.large
Imagem
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
Número de instâncias
1
1
Rede
Endereços IP públicos atribuídos.
Instância Windows
Item de teste
Máquina de teste
Máquina auxiliar de teste
Tipo de instância
ecs.g7.large
ecs.g7.large
Imagem
Windows Server 2022
Windows Server 2022
Número de instâncias
1
1
Rede
Endereços IP públicos atribuídos.
Procedimento
Testar a taxa de encaminhamento de pacotes (apenas Linux)
Não há ferramentas disponíveis para testar a taxa de encaminhamento de pacotes em instâncias Windows.
Taxa de encaminhamento de pacotes inferior a 6.000.000 pps
-
Conecte-se à máquina de teste e às máquinas auxiliares. Consulte Fazer login em uma instância Linux usando o Workbench.
-
Baixe o pacote de instalação do Netperf em ambas as máquinas:
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz -
Instale o Netperf e o sar em ambas as máquinas.
-
Descompacte o pacote de instalação do Netperf:
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gz -
Verifique a versão do GNU Compiler Collection (
GCC).gcc -v 2>&1 -
Se o
GCCfor posterior à versão V10 em qualquer máquina, execute as operações a seguir para garantir a compilação correta. Caso contrário, ignore esta etapa.-
Abra o arquivo
nettest_omni.c.cd netperf vim src/nettest_omni.c -
Pressione i para entrar no modo de inserção e exclua as seguintes variáveis declaradas de
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 */ Pressione Esc, insira
:wqe pressione Enter para salvar e fechar o arquivo.
-
-
Instale o Netperf e o sar.
cd netperf sudo ./configure sudo make && sudo make install
-
-
Inicie 64 serviços netserver na máquina de teste:
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf > /dev/null 2>&1 & done -
Obtenha o endereço IP privado da máquina de teste:
ifconfig || ip addr
-
Envie tráfego para a máquina de teste a partir da máquina auxiliar:
#!/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 & doneSubstitua
<Private IP address of the test machine>pelo endereço IP privado real obtido na etapa anterior.
-
Teste a taxa de encaminhamento de pacotes na máquina de teste:
sar -n DEV 1Verifique a coluna
rxpck/s. O valor derxpck/sindica os pacotes recebidos por segundo. Neste exemplo, o valor é aproximadamente 940.000.
Taxa de encaminhamento de pacotes superior a 6.000.000 pps e inferior a 20.000.000 pps
-
Conecte-se à máquina de teste e às máquinas auxiliares. Consulte Fazer login em uma instância Linux usando o Workbench.
-
Instale o sockperf nas quatro máquinas (três auxiliares e uma de teste):
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 -
Obtenha o endereço IP privado da máquina de teste:
ifconfig || ip addr
-
Envie tráfego para a máquina de teste a partir de cada máquina auxiliar:
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 & doneSubstitua
<Private IP address of the test machine>pelo valor real.run_timeespecifica a duração do tráfego. -
Teste a taxa de encaminhamento de pacotes nas quatro máquinas:
sar -n DEV 1Verifique a coluna
rxpck/sna máquina de teste. O valor derxpck/sindica os pacotes recebidos por segundo. Neste exemplo, o valor é aproximadamente 12.000.000 pps.
Taxa de encaminhamento de pacotes superior a 20.000.000 pps
-
Conecte-se à máquina de teste e às máquinas auxiliares. Consulte Fazer login em uma instância Linux usando o Workbench.
-
Instale o sockperf nas quatro máquinas (três auxiliares e uma de teste):
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 -
Vincule solicitações de interrupção (IRQs) aos núcleos da CPU na máquina de teste.
Vincular IRQs a núcleos específicos da CPU reduz a troca de contexto e melhora a eficiência do processamento de pacotes em altas taxas de PPS.
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 -
Obtenha o endereço IP privado da máquina de teste:
ifconfig || ip addr
-
Envie tráfego para a máquina de teste a partir de cada máquina auxiliar:
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 & doneSubstitua
<Private IP address of the test machine>pelo valor real.run_timeespecifica a duração do tráfego. -
Teste a taxa de encaminhamento de pacotes nas quatro máquinas:
sar -n DEV 1Verifique a coluna
rxpck/sna máquina de teste. O valor derxpck/sindica os pacotes recebidos por segundo. Neste exemplo, o valor é aproximadamente 20.000.000 pps.
Testar a largura de banda de rede
Instância Linux
-
Conecte-se à máquina de teste e à máquina auxiliar. Consulte Fazer login em uma instância Linux usando o Workbench.
-
Baixe o pacote de instalação do Netperf em ambas as máquinas:
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz -
Instale o Netperf e o sar em ambas as máquinas.
-
Descompacte o pacote de instalação do Netperf.
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gz -
Verifique a versão do
GCC.gcc -v 2>&1 -
Se o
GCCfor posterior à versão V10 em qualquer máquina, execute as operações a seguir para garantir a compilação correta. Caso contrário, ignore esta etapa.-
Abra o arquivo
nettest_omni.c.cd netperf vim src/nettest_omni.c -
Pressione i para entrar no modo de inserção e exclua as seguintes variáveis declaradas de
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 */ Pressione Esc, insira
:wqe pressione Enter para salvar e fechar o arquivo.
-
-
Instale o Netperf e o sar.
cd netperf sudo ./configure sudo make && sudo make install
-
-
Inicie 64 serviços netserver na máquina de teste:
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf 2>&1 & done -
Obtenha o endereço IP privado da máquina de teste:
ifconfig || ip addr
-
Envie tráfego para a máquina de teste a partir da máquina auxiliar:
#!/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 & doneSubstitua
<Private IP address of the test machine>pelo endereço IP privado real obtido na etapa anterior.
-
Teste a largura de banda de rede na máquina de teste:
sar -n DEV 1Verifique a coluna
rxkB/s. O valor derxkB/sindica o tamanho dos pacotes recebidos em KB/s. Multiplique por 8 para converter para Kbit/s e obter a largura de banda de rede.
Instância Windows
Conecte-se à máquina de teste e à máquina auxiliar. Consulte Conectar-se a uma instância Windows usando senha ou chave.
-
Instale as ferramentas de teste e desative o firewall em ambas as máquinas.
Baixe a ferramenta ntttcp.exe e obtenha o caminho onde ela está armazenada.
Abra a caixa de diálogo Executar. Insira powershell e clique em OK para iniciar o PowerShell.
-
Desative o firewall em ambas as máquinas para evitar conexões bloqueadas:
Set-NetFirewallProfile -Profile * -Enabled:falseComo alternativa, crie uma regra de firewall de entrada que permita o NTTTCP (ntttcp.exe) em ambas as máquinas:
$ntttcpPath = "<Path of ntttcp.exe>" New-NetFirewallRule -DisplayName ntttcp -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $ntttcpPathNotaSubstitua
<Path of ntttcp.exe>pelo valor real.
-
Configure o Receive Side Scaling (RSS) para o adaptador de rede na máquina de teste.
O RSS distribui os pacotes recebidos entre vários núcleos de CPU para melhorar o desempenho da rede. Defina as filas RSS com base na contagem de CPUs:
Se a máquina tiver até 16 núcleos de CPU, defina o número de filas de recepção RSS igual ao número de núcleos da CPU.
Se a máquina tiver mais de 16 núcleos de CPU, desative o RSS. A maioria dos adaptadores de rede suporta até 16 filas RSS; exceder esse limite pode causar alocação desigual de recursos.
$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> }NotaSubstitua
<Name of the network adapter on the test machine>pelo valor real. ExecuteGet-NetAdapter | Select-Object Namepara obter os nomes dos adaptadores.A modificação da configuração do RSS reinicia o serviço do adaptador de rede, o que pode interromper conexões. Aguarde a reconexão antes de prosseguir.
-
Prepare a máquina de teste para receber dados:
$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 300NotaSubstitua
<Name of the network adapter on the test machine>e<Path of ntttcp.exe on the test machine>pelos valores reais. -
Envie dados a partir da máquina auxiliar:
$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 100NotaSubstitua
<Private IP address of the test machine>,<Thread number of the test machine>e<Path of ntttcp.exe on the auxiliary test machine>pelos valores reais. Executeipconfigpara obter o endereço IP privado e$cpuNumpara obter o número de threads. -
Visualize a largura de banda de rede na máquina de teste.
O valor de
Throughput(MB/s)indica a largura de banda de rede.
Testar a latência de rede
Instância Linux
-
Conecte-se à máquina de teste e à máquina auxiliar. Consulte Fazer login em uma instância Linux usando o Workbench.
-
Instale o
sockperfem ambas as máquinas: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 -
Obtenha o endereço IP privado da máquina de teste:
ifconfig || ip addr
-
Inicie o sockperf na máquina de teste:
sockperf sr --tcp --daemonize -
Envie tráfego para a máquina de teste a partir da máquina auxiliar:
sockperf pp -i <Private IP address of the test machine> --tcp -t 30 -m 14 --full-log=result.jsonSubstitua
<Private IP address of the test machine>pelo valor real da etapa anterior. -
Visualize os resultados de latência de rede.
Nos dados retornados:
avg-latency: latência média em microssegundos.percentile 99.000: latência do percentil 99 em microssegundos.

Instância Windows
Conecte-se à máquina de teste e à máquina auxiliar. Consulte Conectar-se a uma instância Windows usando senha ou chave.
-
Instale as ferramentas de teste e desative o firewall em ambas as máquinas.
Baixe a ferramenta latte.exe e obtenha o caminho onde ela está armazenada.
Abra a caixa de diálogo Executar. Insira powershell e clique em OK para iniciar o PowerShell.
-
Desative o firewall em ambas as máquinas para evitar conexões bloqueadas:
Set-NetFirewallProfile -Profile * -Enabled:falseComo alternativa, crie uma regra de firewall de entrada que permita o Latte (latte.exe) em ambas as máquinas:
$lattePath = "<Path of latte.exe>" New-NetFirewallRule -DisplayName Latte -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $lattePathNotaSubstitua
<Path of latte.exe>pelo valor real.
-
Prepare a máquina de teste para receber dados:
$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 65535NotaSubstitua
<Name of the network adapter on the test machine>e<Path of latte.exe on the test machine>pelos valores reais. ExecuteGet-NetAdapter | Select-Object Namepara obter os nomes dos adaptadores.Especifique um número de porta para
<Communication port>. Use a mesma porta em ambas as máquinas.
-
Envie dados a partir da máquina auxiliar:
$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 65535NotaSubstitua
<Private IP address of the test machine>e<Path of latte.exe on the auxiliary test machine>pelos valores reais. Executeipconfigpara obter o endereço IP privado.Especifique um número de porta para
<Communication port>. Use a mesma porta em ambas as máquinas.
-
Visualize os resultados de latência de rede.
O valor de
Latency(usec)indica a latência média de rede em microssegundos.