Hyper Threading e macchine virtuali?


15

Ho già esaminato questo thread: Hyper-V e Hyper-threading: attivato o disattivato? , ma l'unica risposta è specifica per Windows ....

Sto costruendo un server VM (usando Proxmox VE se questo fa la differenza) e mi chiedevo come l'hyper threading possa influenzare le macchine virtuali ...

In particolare, se massimizzo il numero di macchine virtuali, l'hyper threading potrebbe aiutare o compromettere le prestazioni?

Inoltre, le macchine virtuali più grandi saranno un Terminal Server con ~ 30 client (4 core / 8 GB di RAM) e un file server se questo aiuta.

Aggiornamento: il server è un Dell R410 con un RAID 10 da 1 TB, 32 GB di RAM e doppio Intel Xeon E5530 (non sono sicuro del modello esatto, ma era un E55xx con 2+ Ghz)

Aggiornamento: la maggior parte delle macchine virtuali sarà su KVM.


Fornisci le specifiche del server che intendi utilizzare.
ewwhite,

Anche curioso. Perché Promox VE contro ESXi?
ewwhite,

Probabilmente a causa del limite ESXI di 16 GB di RAM sulla licenza gratuita
Tacticus,

3
Ho scelto Proxmox su ESXi perché Proxmox ha alcune funzionalità extra come la gestione completa da una GUI Web, il clustering, le specifiche del server non sono artificialmente limitate dalle licenze e alcune altre che non ricordo del tutto. Inoltre, 2.0 includerà l'autenticazione AD che è molto utile per noi, non sono sicuro che ESXi lo faccia ...
Soviero,

1
Hai visto oVirt?
dyasny,

Risposte:


12

In generale, lascio HyperThreading ON per server host VM (VMWare ESXi, KVM, HyperV, ecc.). Questo vale per Intel Nehalem e CPU più recenti (serie 5500 e successive). Discussioni aggiuntive disponibili per la pianificazione di più macchine virtuali.

Puoi anche rivalutare il dimensionamento dei tuoi sistemi guest. In genere, è meglio iniziare in piccolo sull'allocazione della CPU con macchine virtuali. Dato che stai parlando di un terminal server, in realtà lo sposterei su 2 CPU virtuali anziché su 4 vCPU. È più facile per l'hypervisor pianificare il tempo della CPU per le VM con un numero di core inferiore . La RAM è comunque critica, quindi assicurati di renderne disponibili molte.

Vedi: http://omtconcepts.com/wp/?p=14


In che modo esattamente due thread sono più veloci di quattro?
Soviero,

3
Non più veloce ... Più facile da programmare. Vedi la mia modifica. La macchina citata avrà 8 core totali (16, con HyperThreading). Cercare di trovare le risorse per pianificare un guest a 4 vCPU è più difficile delle 2 vCPU. Avrai più contese (e quindi, prestazioni inferiori). Se si prevede di eseguire altri guest virtuali su questo server, ha senso utilizzare 1 e 2 guest vCPU.
ewwhite,

3
Il tuo punto sulla pianificazione si applica solo agli hypervisor che eseguono una "pianificazione di gruppo" in cui tentano di eseguire contemporaneamente un'approssimazione di "tutti o nessuno" dei processori virtuali. Per gli hypervisor che lo fanno, l'aggiunta di più processori virtuali renderà la VM più difficile da pianificare. Capisco che Kevin abbia aggiornato la sua domanda per stipulare che vuole usare KVM, principalmente. Ma voglio sottolineare che Hyper-V non fa la pianificazione delle bande. Si basa sulla paravirtualizzazione del sistema operativo guest per evitare la necessità di pianificare le gang.
Jake Oshins,

Non lo sapevo di Hyper-V, ma questo vale per gli altri principali hypervisor.
ewwhite,

1
KVM non pianifica in gruppo. In effetti, solo VMWare lo fa, e anche loro hanno aggiunto alcuni meccanismi per rilassare la follia di pianificazione della banda in v5
dyasny

4

Dipende davvero. Se, come stai dicendo, stai per "massimizzare", che suppongo significhi sovrallocare la CPU (assegnare più core di CPU virtuali di quelli che hai a disposizione, o esattamente quanti ne hai disponibili), allora HT dovrebbe sicuramente essere su.

Se non stai sovrallocando, di solito è meglio testare sotto i tuoi carichi specifici - a volte HT può effettivamente danneggiare le prestazioni.


Ho intenzione di allocare esattamente tutti i core / thread disponibili, ma non ho intenzione di allocare troppo.
Soviero,

Pensi che il sistema operativo host non abbia bisogno di tempo per la CPU? E se si allocano tutti i V-core quanti sono i thread con HT attivo, in realtà si sta sovrallocando di almeno il 70-80%, perché anche quando HT aumenta le prestazioni, di solito è del 20-30% superiore, non di 100%, come si potrebbe presumere dal conteggio dei thread.
dyasny,

Ok, quindi non più di 12 "core" (75% su 16) assegnati?
Soviero,

1
Immagino di non essere stato abbastanza chiaro. È possibile eseguire l'allocazione eccessiva e, a seconda dei carichi nelle macchine virtuali, la CPU potrebbe non diventare affatto il collo di bottiglia. Inoltre, non dovresti mai assegnare più CPU a una VM di quante ne abbia assolutamente bisogno, perché più CPU ha la VM, più difficile è pianificare, così molti v-cpus possono effettivamente ostacolare le prestazioni. Per quanto riguarda il 20% di aumento delle prestazioni dell'hyperthreading - questo non è un valore assoluto, il numero può essere leggermente più alto, più basso, zero o addirittura negativo - a seconda dei carichi della VM.
dyasny,

Oh va bene. Grazie.
Soviero,

3

Esistono molte variabili che influiscono sulle prestazioni della VM. HT è solo una delle altre variabili ma dipende anche dalla configurazione della VM.

Una delle variabili che influiscono su HT dipende dal tipo di Hypervisor utilizzato.

Se stai usando macchine virtuali leggere come VZ, VServer, ecc., Allora è abbastanza ovvio che HT porterebbe vantaggi adeguati poiché queste VM non sono in realtà strettamente isolate e sono più come eseguire software multi-thread.

Se si utilizzano macchine virtuali pesanti come KVM, Xen HVM, ecc., È possibile che HT interferisca con le cose, ad esempio quando a una VM vengono allocate due CPU ma finisce per usare una HT ciascuna su core diversi.

Quindi, la cosa migliore da fare è ancora testare la tua configurazione per vedere cosa ti si addice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.