Risorse dedicate su VM che ospitano SQL Server


8

La mia comprensione è che uno dei maggiori vantaggi dell'utilizzo di una macchina virtuale è la possibilità di condividere risorse tra le macchine virtuali su un host. Quindi puoi avere un host con 120 CPU e inserire 5 VM con 32 CPU ciascuna. Le CPU extra vengono "condivise" tra le macchine virtuali con l'host che assegna le CPU in modo dinamico in base alle necessità. Lo stesso per la memoria.

Ho anche capito che questo è un grande no-no per le macchine virtuali che ospitano server SQL, ma gli amministratori della mia macchina virtuale non sono d'accordo. Qualcuno ha qualche prova o documentazione in un modo o nell'altro?

Non so se è importante, ma stiamo usando VMWare.


2
stranamente, abbiamo appena avuto un problema con i failover casuali su un gruppo di disponibilità virtualizzato. siamo stati sottoscritti eccessivamente sulla CPU con un tempo di attesa di ~ 8 secondi. l'ascoltatore ag ha perso il contratto di locazione del cluster e avrebbe floppato all'altro nodo HA. la difficoltà qui è che non si presenta come pressione della CPU sul guest, anche se l'errore è generalmente associato a una pressione della CPU sostenuta. questo porta al problema più grande con la virtualizzazione: sapere cosa sta succedendo e confidare che gli altri facciano lo stesso.
Scambio

Un post di blog davvero buono su hot plug vNUMA CPU VMware effetti su SQL Server di Jonathan Kehayias
Kin Shah

btw: normalmente non è "Lo stesso per la memoria". Nella maggior parte dei casi si condivide la cpu, ma poiché una quantità specifica di memoria viene allocata a ciascuna VM e questa memoria non viene condivisa. La condivisione della CPU con un SQL Server potrebbe essere OK a seconda del carico totale della CPU per tutte le VM, ma la condivisione della memoria con un SQL Server sarebbe male in quasi tutti i casi
MTilsted

@MTilsted Ci scusiamo per la confusione. Quando ho detto "Lo stesso per la memoria" intendevo specificamente che fosse couldcondiviso. Quando stavo ponendo la domanda, mi sono reso conto che potrebbe benissimo essere diverso per CPU e memoria, ma che entrambe erano un'opzione.
Kenneth Fisher,

Risposte:


15

Quello che stai chiedendo è: "Va bene se sovraccarichiamo le CPU?"

Va bene fino a quando non si verificano colli di bottiglia delle prestazioni correlati al consumo di CPU. La stessa risposta vale anche per il sovraccarico della rete: non è come se si inserissero 5 schede Ethernet da 10 Gb separate nell'host e si dedicasse una scheda per VM. La virtualizzazione è incentrata sul sovraccarico e sulla linea tra disponibilità delle risorse e requisiti delle risorse.

In generale, tuttavia, non si desidera overcommit in memoria, poiché SQL Server utilizzerà attivamente qualsiasi memoria che gli viene presentata. Piuttosto che lasciare la pagina delle VM sul disco dell'host, è meglio fare un'analisi VM by VM per capire quali VM potrebbero vivere con meno memoria e quindi configurarle con meno memoria per cominciare.


Non dimentichiamo anche l'importanza di dischi fisici dedicati e indipendenti; uno ciascuno per dati, registri e tempdb . :)
Chiramisu,

13

Il problema che vedo con l'allocazione dinamica di alcune risorse è che porta a prestazioni imprevedibili. La query di report x aveva 32 CPU disponibili ieri e funzionava in 4 minuti, oggi ne ha solo 24 e ha impiegato molto più tempo. È inoltre possibile visualizzare la latenza mentre l'ospite attende la disponibilità di altri core.

Jonathan Kehayias dà alcuni avvertimenti pratici sull'abbonamento eccessivo di CPU e memoria qui (e francamente mi fido della sua esperienza e dei suoi consigli più di un tipico amministratore di VM, senza offenderli, ma sospetto che abbia un'esperienza molto più diretta con la combinazione):


11

La mia comprensione è che un certo livello di impegno eccessivo della CPU può essere perfettamente OK, ma ciò dipende totalmente dai requisiti del carico di lavoro di tutti gli ospiti. Dai un'occhiata al blog di David Klee per molte buone informazioni sulle VM. In particolare http://www.davidklee.net/articles/sql-server-articles/cpu-overcommitment-and-its-impact-on-sql-server-performance-on-vmware/ per la spiegazione del sovraccarico della CPU e il suo impatto su SQL Server.

Il sovraccarico di memoria è un altro animale interamente e in generale, l'host di macchine virtuali non deve essere sottoposto a commit eccessivo in memoria se è in esecuzione SQL Server. Ancora una volta userò David Klee come riferimento. http://www.davidklee.net/2013/11/04/lock-pages-in-memory-in-sql-server-on-vmware-why-or-why-not/ dove spiega gli effetti della memoria -impegno.

Spero che sia di aiuto.

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.