Testare la latenza di rete delle macchine virtualiTest VM network latency

Per ottenere risultati più accurati, misurare la latenza di rete della macchina virtuale (VM) di Azure con uno strumento progettato per l'attività.To achieve the most accurate results, measure your Azure virtual machine (VM) network latency with a tool that's designed for the task. Gli strumenti disponibili pubblicamente, ad esempio SockPerf (per Linux) e latte. exe (per Windows), possono isolare e misurare la latenza di rete escludendo altri tipi di latenza, ad esempio la latenza dell'applicazione.Publicly available tools such as SockPerf (for Linux) and latte.exe (for Windows) can isolate and measure network latency while excluding other types of latency, such as application latency. Questi strumenti si concentrano sul tipo di traffico di rete che influiscono sulle prestazioni dell'applicazione (in particolare Transmission Control Protocol [TCP] e il traffico UDP (User Datagram Protocol).These tools focus on the kind of network traffic that affects application performance (namely, Transmission Control Protocol [TCP] and User Datagram Protocol [UDP] traffic).

Altri strumenti comuni di connettività, ad esempio ping, possono misurare la latenza, ma i risultati potrebbero non rappresentare il traffico di rete usato nei carichi di lavoro reali.Other common connectivity tools, such as Ping, might measure latency, but their results might not represent the network traffic that's used in real workloads. Ciò è dovuto al fatto che la maggior parte di questi strumenti utilizza il Internet Control Message Protocol (ICMP), che può essere trattato in modo diverso dal traffico dell'applicazione e i cui risultati potrebbero non essere applicabili ai carichi di lavoro che utilizzano TCP e UDP.That's because most of these tools employ the Internet Control Message Protocol (ICMP), which can be treated differently from application traffic and whose results might not apply to workloads that use TCP and UDP.

Per un test accurato della latenza di rete dei protocolli usati dalla maggior parte delle applicazioni, SockPerf (per Linux) e latte. exe (per Windows) producono i risultati più rilevanti.For accurate network latency testing of the protocols used by most applications, SockPerf (for Linux) and latte.exe (for Windows) produce the most relevant results. Questo articolo illustra entrambi gli strumenti.This article covers both of these tools.

PanoramicaOverview

Utilizzando due macchine virtuali, una come mittente e una come ricevente, viene creato un canale di comunicazione bidirezionale.By using two VMs, one as sender and one as receiver, you create a two-way communications channel. Con questo approccio, è possibile inviare e ricevere pacchetti in entrambe le direzioni e misurare il tempo di round trip (RTT).With this approach, you can send and receive packets in both directions and measure the round-trip time (RTT).

È possibile usare questo approccio per misurare la latenza di rete tra due macchine virtuali o persino tra due computer fisici.You can use this approach to measure network latency between two VMs or even between two physical computers. Le misurazioni di latenza possono essere utili per gli scenari seguenti:Latency measurements can be useful for the following scenarios:

  • Stabilire un benchmark per la latenza di rete tra le macchine virtuali distribuite.Establish a benchmark for network latency between the deployed VMs.
  • Confrontare gli effetti delle modifiche alla latenza di rete dopo aver apportato le modifiche correlate a:Compare the effects of changes in network latency after related changes are made to:
    • Sistema operativo o software dello stack di rete, incluse le modifiche di configurazione.Operating system (OS) or network stack software, including configuration changes.
    • Un metodo di distribuzione della macchina virtuale, ad esempio la distribuzione in una zona di disponibilità o in un gruppo di posizionamento di prossimità (PPG).A VM deployment method, such as deploying to an availability zone or proximity placement group (PPG).
    • Proprietà della macchina virtuale, ad esempio la rete accelerata o le modifiche alle dimensioni.VM properties, such as Accelerated Networking or size changes.
    • Una rete virtuale, ad esempio le modifiche di routing o filtro.A virtual network, such as routing or filtering changes.

Strumenti per il testTools for testing

Per misurare la latenza, sono disponibili due opzioni dello strumento diverse:To measure latency, you have two different tool options:

Usando questi strumenti, è possibile garantire che vengano misurati solo i tempi di recapito del payload TCP o UDP e non i tipi di pacchetti ICMP (ping) o altri tipi di pacchetti che non vengono usati dalle applicazioni e non influiscono sulle prestazioni.By using these tools, you help ensure that only TCP or UDP payload delivery times are measured and not ICMP (Ping) or other packet types that aren't used by applications and don't affect their performance.

Suggerimenti per la creazione di una configurazione di macchina virtuale ottimaleTips for creating an optimal VM configuration

Quando si crea la configurazione della macchina virtuale, tenere presenti le raccomandazioni seguenti:When you create your VM configuration, keep in mind the following recommendations:

  • Usare la versione più recente di Windows o Linux.Use the latest version of Windows or Linux.
  • Abilitare la rete accelerata per ottenere risultati ottimali.Enable Accelerated Networking for best results.
  • Distribuire le VM con un gruppo di posizionamento di prossimità di Azure.Deploy VMs with an Azure proximity placement group.
  • Le macchine virtuali di dimensioni maggiori offrono in genere prestazioni migliori rispetto alle VM più piccoleLarger VMs generally perform better than smaller VMs.

Suggerimenti per l'analisiTips for analysis

Quando si analizzano i risultati dei test, tenere presenti le raccomandazioni seguenti:As you're analyzing test results, keep in mind the following recommendations:

  • Stabilire una linea di base in anticipo, non appena vengono completate la distribuzione, la configurazione e le ottimizzazioni.Establish a baseline early, as soon as deployment, configuration, and optimizations are complete.
  • Confrontare sempre i nuovi risultati con una baseline o, in caso contrario, da un test a un altro con modifiche controllate.Always compare new results to a baseline or, otherwise, from one test to another with controlled changes.
  • Ripetere i test ogni volta che le modifiche vengono osservate o pianificate.Repeat tests whenever changes are observed or planned.

Testare le macchine virtuali che eseguono WindowsTest VMs that are running Windows

Ottenere latte. exe nelle VMGet latte.exe onto the VMs

Scaricare la versione più recente di latte. exe.Download the latest version of latte.exe.

Si consiglia di inserire Lattes. exe in una cartella separata, ad esempio c:\Tools.Consider putting latte.exe in separate folder, such as c:\tools.

Consenti latte. exe attraverso Windows Defender FirewallAllow latte.exe through Windows Defender Firewall

Nel ricevitorecreare una regola Consenti in Windows Defender Firewall per consentire l'arrivo del traffico latte. exe.On the receiver, create an Allow rule on Windows Defender Firewall to allow the latte.exe traffic to arrive. È più semplice consentire l'intero programma di caffellatte. exe per nome, anziché consentire porte TCP specifiche in ingresso.It's easiest to allow the entire latte.exe program by name rather than to allow specific TCP ports inbound.

Consentire a caffellatte. exe di usare Windows Defender Firewall eseguendo il comando seguente:Allow latte.exe through Windows Defender Firewall by running the following command:

netsh advfirewall firewall add rule program=<path>\latte.exe name="Latte" protocol=any dir=in action=allow enable=yes profile=ANY

Ad esempio, se è stato copiato latte. exe nella cartella c:\Tools , si tratta del comando seguente:For example, if you copied latte.exe to the c:\tools folder, this would be the command:

netsh advfirewall firewall add rule program=c:\tools\latte.exe name="Latte" protocol=any dir=in action=allow enable=yes profile=ANY

Esegui test di latenzaRun latency tests

  • Sul ricevitoreavviare latte. exe (eseguirlo dalla finestra cmd, non da PowerShell):On the receiver, start latte.exe (run it from the CMD window, not from PowerShell):

    latte -a <Receiver IP address>:<port> -i <iterations>
    

    Circa 65.000 iterazioni è sufficientemente lungo da restituire risultati rappresentativi.Around 65,000 iterations is long enough to return representative results.

    Qualsiasi numero di porta disponibile funziona correttamente.Any available port number is fine.

    Se la macchina virtuale ha un indirizzo IP di 10.0.0.4, il comando avrà un aspetto simile al seguente:If the VM has an IP address of 10.0.0.4, the command would look like this:

    latte -a 10.0.0.4:5005 -i 65100

  • Sul mittenteavviare latte. exe (eseguirlo dalla finestra cmd, non da PowerShell):On the sender, start latte.exe (run it from the CMD window, not from PowerShell):

    latte -c -a <Receiver IP address>:<port> -i <iterations>
    

    Il comando risultante è identico a quello del ricevitore, tranne che per l'aggiunta di  -c per indicare che si tratta del cliento del mittente:The resulting command is the same as on the receiver, except with the addition of -c to indicate that this is the client, or sender:

    latte -c -a 10.0.0.4:5005 -i 65100

Attendere i risultati.Wait for the results. A seconda della distanza tra le macchine virtuali, il completamento del test può richiedere alcuni minuti.Depending on how far apart the VMs are, the test could take a few minutes to finish. Si consiglia di iniziare con meno iterazioni per verificare la riuscita prima di eseguire test più lunghi.Consider starting with fewer iterations to test for success before running longer tests.

Testare le macchine virtuali che eseguono LinuxTest VMs that are running Linux

Per testare le macchine virtuali che eseguono Linux, usare SockPerf.To test VMs that are running Linux, use SockPerf.

Installare SockPerf nelle VMInstall SockPerf on the VMs

Nelle VM Linux, sia mittente che ricevitore, eseguire i comandi seguenti per preparare SockPerf nelle VM.On the Linux VMs, both sender and receiver, run the following commands to prepare SockPerf on the VMs. Sono disponibili comandi per le distribuzioni principali.Commands are provided for the major distros.

Per Red Hat Enterprise Linux (RHEL)/CentOSFor Red Hat Enterprise Linux (RHEL)/CentOS

Eseguire i comandi seguenti:Run the following commands:

#RHEL/CentOS - Install Git and other helpful tools
    sudo yum install gcc -y -q
    sudo yum install git -y -q
    sudo yum install gcc-c++ -y
    sudo yum install ncurses-devel -y
    sudo yum install -y automake
    sudo yum install -y autoconf

Per UbuntuFor Ubuntu

Eseguire i comandi seguenti:Run the following commands:

#Ubuntu - Install Git and other helpful tools
    sudo apt-get install build-essential -y
    sudo apt-get install git -y -q
    sudo apt-get install -y autotools-dev
    sudo apt-get install -y automake
    sudo apt-get install -y autoconf

Per tutte le distribuzioniFor all distros

Copiare, compilare e installare SockPerf in base ai passaggi seguenti:Copy, compile, and install SockPerf according to the following steps:

#Bash - all distros

#From bash command line (assumes Git is installed)
git clone https://github.com/mellanox/sockperf
cd sockperf/
./autogen.sh
./configure --prefix=

#make is slower, may take several minutes
make

#make install is fast
sudo make install

Eseguire SockPerf nelle macchine virtualiRun SockPerf on the VMs

Al termine dell'installazione di SockPerf, le macchine virtuali sono pronte per l'esecuzione dei test di latenza.After the SockPerf installation is complete, the VMs are ready to run the latency tests.

Innanzitutto, avviare SockPerf sul ricevitore.First, start SockPerf on the receiver.

Qualsiasi numero di porta disponibile funziona correttamente.Any available port number is fine. In questo esempio viene usata la porta 12345:In this example, we use port 12345:

#Server/Receiver - assumes server's IP is 10.0.0.4:
sudo sockperf sr --tcp -i 10.0.0.4 -p 12345

Ora che il server è in ascolto, il client può iniziare a inviare pacchetti al server sulla porta su cui è in ascolto (in questo caso, 12345).Now that the server is listening, the client can begin sending packets to the server on the port on which it is listening (in this case, 12345).

Circa 100 secondi sono sufficientemente lunghi per restituire risultati rappresentativi, come illustrato nell'esempio seguente:About 100 seconds is long enough to return representative results, as shown in the following example:

#Client/Sender - assumes server's IP is 10.0.0.4:
sockperf ping-pong -i 10.0.0.4 --tcp -m 350 -t 101 -p 12345  --full-rtt

Attendere i risultati.Wait for the results. A seconda della distanza delle macchine virtuali, il numero di iterazioni può variare.Depending on how far apart the VMs are, the number of iterations will vary. Per verificare l'esito positivo prima di eseguire test più lunghi, provare a iniziare con test più brevi di circa 5 secondi.To test for success before you run longer tests, consider starting with shorter tests of about 5 seconds.

Questo esempio di SockPerf usa una dimensione del messaggio di 350 byte, che è tipica per un pacchetto medio.This SockPerf example uses a 350-byte message size, which is typical for an average packet. È possibile regolare le dimensioni in un livello superiore o inferiore per ottenere risultati che rappresentano in modo più accurato il carico di lavoro in esecuzione nelle macchine virtuali.You can adjust the size higher or lower to achieve results that more accurately represent the workload that's running on your VMs.

Passaggi successiviNext steps