Elevata latenza di ping su una macchina virtuale Windows Server 2012 su Microsoft Hyper-v ( VMQ )

Elevata latenza di ping su una macchina virtuale Windows Server 2012 su Microsoft Hyper-v

Recentemente mi è capitato di dovermi scontrare con un fastidioso problema in ambiente Microsoft Hyper-V: nello sfogliare le risorse di alcune macchine virtuali con sistema operativo Microsoft Windows 2012 R2 si notava un estrema lentezza.

Per sfogliare le risorse si intende :

  • accesso ad un database SQL
  • ping sulla macchina con latenze di 200/800ms
  • sfogliare e accedere a share di rete condivise
  • accesso in RDP

Dopo la diagnostica del caso a livello di networking e di motore SQL ho escluso un eventuale problema sul sistema operativo e sugli applicativi e ho iniziato ad indagare al trove.

L’indizio più significativo che mi  ha fatto individuare il problema è stata l’estrema latenza sul ping; difatti se si pingava l’host Hyper-v si aveva un risultato accettabile e nella norma :

Risposta da 192.168.1.99: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.99: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.99: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.99: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.99: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.99: byte=32 durata=1ms TTL=128

se si pingava la VM :

Risposta da 192.168.1.100: byte=32 durata=77ms TTL=128
Risposta da 192.168.1.100: byte=32 durata=92ms TTL=128
Risposta da 192.168.1.100: byte=32 durata=706ms TTL=128
Risposta da 192.168.1.100: byte=32 durata=920ms TTL=128
Risposta da 192.168.1.100: byte=32 durata=439ms TTL=128

 

Chiaro che con queste performance i problemi di accesso al database e alla rete erano spiegati.

Il problema di questo rallentamento è dato da una funzionalità del’hyper-V chiamata :

VIRTUAL MACHINE QUEUE

Le code delle macchine virtuali sono state introdotte in Windows Server 2008. Lo scopo di questa funzione era migliorare le prestazioni di rete delle macchine virtuali che ricevono molto traffico in entrata, fornendo un accesso più diretto alla scheda NIC hardware.

Per citare direttamente da Microsoft:

“When VMQ is enabled, a dedicated queue is established on the physical network adapter for each virtual network adapter that has requested a queue. As packets arrive for a virtual network adapter, the physical network adapter places them in that network adapter’s queue. When packets are indicated up, all the packet data in the queue is delivered directly to the virtual network adapter. Packets arriving for virtual network adapters that don’t have a dedicated queue, as well as all multicast and broadcast packets, are delivered to the virtual network in the default queue. The virtual network handles routing of these packets to the appropriate virtual network adapters as it normally would.”

 

 

Bene, per risolvere il problema è bastato spegnere questa funzionalità!

Per disattivare le VMQ è necessario agire direttamente sulla scheda di rete associata al commutatore virtuale di Hyper-v, andandone ad aprire le proprietà :

 

 

Clicchiamo sul tasto “Configura” e poi il tab “Avanzate”

Individuiamo la voce “Code macchine virtuali” e impostiamo come valore “Disabilitata”

 

 

Fatto questo possiamo tornare ai nostri test eseguendo nuovamente il ping sulla Virtual Machine e scopriamo di avere un risultato normale e accettabile :

Risposta da 192.168.1.100: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.100: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.100: byte=32 durata<1ms TTL=128

Risposta da 192.168.1.100: byte=32 durata<1ms TTL=128

Anche l’accesso al database e l’accesso alla rete torna ad essere normale.

 

 

ISCRIVITI ALLA NEWSLETTER DI PC-GURU.IT

Grazie all’iscrizione ti informerò ogni volta che pubblicherò un nuovo contenuto.

Non perderti nemmeno un articolo!

Iscriviti alla nostra newsletter inserendo la tua mail qui :


 

 

 

 

 

 

Author: admin

Share This Post On

Submit a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *