Condividi tramite


Considerazioni sulle macchine virtuali Linux

Per le macchine virtuali Linux e BSD è necessario fare alcune considerazioni aggiuntive rispetto alle macchine virtuali Windows in Hyper-V.

La prima considerazione riguarda la presenza di Integration Services o il fatto che la macchina virtuale sia in esecuzione solo su hardware emulato senza riconoscimento dei dati. Una tabella delle versioni Linux e BSD che includono Integration Services predefiniti o scaricabili è disponibile in Macchine virtuali Linux e FreeBSD supportate per Hyper-V in Windows. Queste pagine contengono griglie delle funzionalità Hyper-V disponibili per le versioni di distribuzione Linux e note su tali funzionalità, ove applicabile.

Anche quando il guest esegue Integration Services, può essere configurato con hardware legacy che non offre le migliori prestazioni. Ad esempio, è possibile configurare e usare una scheda Ethernet virtuale per il guest anziché usare una scheda di rete legacy. Con Windows Server 2016 sono disponibili anche reti avanzate come SR-IOV.

Prestazioni di rete Linux

Per impostazione predefinita Linux abilita l'accelerazione hardware e l'offload. Se vRSS è abilitato nelle proprietà di una scheda di interfaccia di rete sull'host e il guest Linux ha la capacità di usare vRSS, la funzionalità verrà abilitata. In PowerShell questo stesso parametro può essere modificato con il comando EnableNetAdapterRSS.

Analogamente, la funzionalità VMMQ (Virtual Switch RSS) può essere abilitata nella scheda di interfaccia di rete fisica usata dalla scheda Proprietà>Configura...>Avanzate guest > impostando commutatore virtuale RSS su Abilitato o abilitando VMMQ in Powershell in base alla procedura seguente:

 Set-VMNetworkAdapter -VMName **$VMName** -VmmqEnabled $True

Nel guest è possibile eseguire un'ulteriore regolazione del TCP aumentando i limiti. Per ottenere prestazioni ottimali, la distribuzione del carico di lavoro su più CPU e la presenza di carichi di lavoro profondi producono la velocità effettiva migliore, poiché i carichi di lavoro virtualizzati avranno una latenza più elevata rispetto a quelli "bare metal".

Alcuni esempi di parametri di ottimizzazione utili nei benchmark di rete includono:

net.core.netdev_max_backlog = 30000
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 12582912 33554432
net.ipv4.tcp_rmem = 4096 12582912 33554432
net.ipv4.tcp_max_syn_backlog = 80960
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
net.ipv4.tcp_abort_on_overflow = 1

Uno strumento utile per i microbenchmark di rete è ntttcp, disponibile sia su Linux che su Windows. La versione di Linux è open source e disponibile su ntttcp-for-linux in github.com. La versione di Windows è disponibile nell'area download. Quando si ottimizzano i carichi di lavoro, è consigliabile usare il maggior numero di flussi necessari per ottenere la velocità effettiva ottimale. Usando ntttcp per modellare il traffico, il parametro -P imposta il numero di connessioni parallele usate.

Prestazioni di archiviazione Linux

Alcune procedure consigliate, tra cui le seguenti, sono elencate in Procedure consigliate per l'esecuzione di Linux in Hyper-V. Il kernel Linux dispone di diversi scheduler I/O per riordinare le richieste con algoritmi diversi. NOOP è una coda first-in first-out che passa la decisione di pianificazione all'hypervisor. È consigliabile usare NOOP come scheduler quando si esegue una macchina virtuale Linux in Hyper-V. Per modificare lo scheduler di un dispositivo specifico, nella configurazione del caricatore di avvio (/etc/grub.conf, ad esempio), aggiungere elevator=noop ai parametri del kernel e poi riavviare.

Analogamente a quanto accade nella rete, le prestazioni del guest Linux con l'archiviazione traggono il massimo vantaggio da più code con una profondità sufficiente a tenere occupato l'host. Il microbenchmarking delle prestazioni di archiviazione è probabilmente migliore con lo strumento di benchmark fio con il motore libaio.

Riferimenti aggiuntivi