VMware Global Community
foreach
Contributor
Contributor

cpu, core e utilizzo

Buongiorno a tutti,

ho un nodo fisico con queste caratteristiche:

CPU Intel Xeon L5640

Processor Sockets 2

Processor Cores per Socket 6

Logical Processors 24

Hyperthreadind Enabled

Nel nodo fisico attualmente ci sono 2 macchine virtuali. Una che usa pochissime risorse e un altra che dovrebbe usare il più possibile tutte le risorse rimanenti (è una macchina virtuale con un database sopra MySql 5.1).

Mysql 5.1 non è multicore quindi a livello della VM arriva a usare il 100% di un singolo core anche se il nodo fisico ha più potenza.

Come posso dargli più CPU?

Girando su internet pare che la variabile "cpuid.coresPerSocket" potrebbe aiutarmi. Che dite? Se dò un singolo core alla macchina ma poi metto "cpuid.coresPerSocket = 8" riesco così a sfruttare 8 core e farne vedere solo una alla VM?

Grazie

0 Kudos
17 Replies
Tinto1970
Commander
Commander

penso che con quel parametro puoi solo dare più core per un socket, quindi simulare un solo processore con tanti core (4, 6... come nel fisico).

Ma se l'applicazione usa comunque e sempre un solo core, non cambia niente, temo.

--
Alessandro aka Tinto VCP-DCV 2023 | VVSPHT 2023 | VMCE 2024 | vExpert 2024 | Veeam Legend
please give me a "Kudo" if you find my answer useful
www.linkedin.com/in/tinivelli
my blog: https://blog.tinivelli.com
0 Kudos
fbonez
Expert
Expert

Ciao,

Se il mySQL è single thread, lavorerà solo su un core/cpu.

Non puoi farci nulla.

-- If you find this information useful, please award points for "correct" or "helpful". | @fbonez | www.thevirtualway.it
0 Kudos
ldelloca
Virtuoso
Virtuoso

Ciao,

MySQL in se è multi-threaded, questo è sicuro. Può essere che le singole query che esegue non vengano splittate in multithread, ma su queste cose non sono espertissimo. Ma in se il core è sicuramente multithreaded....

Ciao,

Luca.

Luca Dell'Oca | vExpert 2011-2012-2013-2014-2015-2016-2017, VCAP-DCD, CISSP #58353 | http://www.virtualtothecore.com | @dellock6 | http://www.linkedin.com/in/lucadelloca | If you find this post useful, please consider awarding points for "Correct" or "Helpful"
0 Kudos
fbonez
Expert
Expert

@Luca, il mio era un discorso generale sulle applicazioni single thread.

@foreach Il parametro di cui parli, serve a far diventare multi core la vCpu della VM.

Questo per sopperire alle limitazioni di alcuni software licenziati a socket.

http://kb.vmware.com/kb/1010184

Ciao

-- If you find this information useful, please award points for "correct" or "helpful". | @fbonez | www.thevirtualway.it
0 Kudos
Tinto1970
Commander
Commander

assunto che quello che volevi fare non si può Smiley Happy sei sicuro che il collo di bottiglia sia la cpu? Rileggendo con calma il tuo post una cosa mi preoccupa: non citi la ram che di solito è la cosa più importante, assieme al tuning che è strettamente correlato.

Se ci illustri meglio il problema, il tipo di query che sono lente etc etc forse qualche idea ci viene. Un po' con mysql ci ho giocato...

--
Alessandro aka Tinto VCP-DCV 2023 | VVSPHT 2023 | VMCE 2024 | vExpert 2024 | Veeam Legend
please give me a "Kudo" if you find my answer useful
www.linkedin.com/in/tinivelli
my blog: https://blog.tinivelli.com
0 Kudos
delbinos
Contributor
Contributor

Buondi

solitamente i DB lavorano molto in RAM, per essere piu veloci..

nn è che la cpu  è utilizzata da altri processi?

stefano

0 Kudos
foreach
Contributor
Contributor

Vi ringrazio per le risposte.

Il mio dubbio principale era proprio se possibile unire più core e farli vedere come uno solo alla VM.....

Risposta...non è possibile  Smiley Sad

Grazie per i consigli!

0 Kudos
max_esprient
Enthusiast
Enthusiast

vSphere è un sistema di virtualizzazione (non di emulazione) e quindi esiste un legama 1=1 tra le cpu virtuali che dai alla VM e i core (o logical CPU se usi HT) fisici. Se vuoi usarecpu in parallelo devi dare più cpu alla VM, sarà poi cura del S.O. essere in grado di gestirle e delle tua applicazioni la capacità di poterle sfruttare. In fondo capiterebbe la stessa cosa se tu installassi la stessa applicazione (MySql) su un server fisico multicore.

Max

0 Kudos
frapposelli
Enthusiast
Enthusiast

MySQL è multithreaded il problema è che le singole query non vengono spezzate ma eseguite da un singolo thread, morale della favola, devi cambiare le query per farle andare più veloci (o fare caching aggressivo in RAM), una alternativa è usare librerie come questa per gestire query parallele: http://code.google.com/p/shard-query/

0 Kudos
mp_roma
Contributor
Contributor

Ciao a tutti,

scusate se mi attacco a un thread già aperto, ma la domanda che volevo fare proprio relativa al commento di un utente...

Quindi, se ho capito bene, in un'infrastruttura con HT a una vcpu corrisponde un processore logico? Interamente dedicato?

Ciao e grazie

0 Kudos
GiuseppeG
Expert
Expert

Ciao,

una virtual cpu (vista dalla VM come un singolo core) corrisponde a un contesto di esecuzione in esecuzione su un core fisico (nel caso di HT abilitato e' in realta' un core logico).

Devi pero' pensare alla vCPU come a un processo che puo' essere in esecuzione, in ready, in wait...

Se hai una sola vCPU la tua VM avra' un solo contesto di esecuzione alla volta, per cui sara' schedulato su un singolo core, ma il core NON è dedicato a quella vCPU. Anzi, il contesto di esecuzione della tua vCPU puo' essere schedulato prima su un core e poi su un altro, in base alle decisioni dello scheduler di ESXi.

Il limite superiore e' che la tua vCPU richieda tutto un core: ESXi lascia "vedere" le cpu fisiche e non "spalma" su piu' core in parallelo la singola cpu.

Se hai ancora dubbi, chiedi (non e' detto che si stato chiarissimo Smiley Happy )

Giuseppe

Giuseppe | vExpert 2011, 2012 | @gguglie | http://virtualbyte.wordpress.com | | If you find this post useful, please consider awarding points for "Correct" or "Helpful"
0 Kudos
mp_roma
Contributor
Contributor

Ciao Giuseppe,

per prima cosa grazie per la pronta risposta...

Non mi è molto chiara, data la mia ignoranza, questa frase:

"Devi pero' pensare alla vCPU come a un processo che puo' essere in esecuzione, in ready, in wait..."

Inoltre in quest'altra "Se hai una sola vCPU la tua VM avra' un solo contesto di esecuzione alla  volta, per cui sara' schedulato su un singolo core, ma il core NON è  dedicato a quella vCPU" quando parli di singolo core (in caso di HT) ti riferisci sempre al processore logico?

Purtroppo, ribadisco, sono totalmente ignorante in materia...sto studiando i vari doc di vmware (tipo il resource management) ma alcune cose proprio non riesco a capirle (oltre a questa il concetto di virtualizzazione della ram software-based o hardware-based Smiley Happy )

Ciao e grazie per la pazienza

0 Kudos
Tinto1970
Commander
Commander

(oltre a questa il concetto di virtualizzazione della ram software-based o hardware-based

magari puoi aprire un thread a parte, così viene più facile da ricercare per chi in futuro può essere interessato all'argomento Smiley Wink

--
Alessandro aka Tinto VCP-DCV 2023 | VVSPHT 2023 | VMCE 2024 | vExpert 2024 | Veeam Legend
please give me a "Kudo" if you find my answer useful
www.linkedin.com/in/tinivelli
my blog: https://blog.tinivelli.com
0 Kudos
mp_roma
Contributor
Contributor

Grazie Tinto...

infatti non avevo intenzione di continuare la discussione qui...anche perchè si parla di CPU Smiley Happy

0 Kudos
GiuseppeG
Expert
Expert

Ciao,

se apri un nuovo topic riprendiamo il discorso li Smiley Happy

Intanto ti segnalo questo documento: http://www.vmware.com/files/pdf/perf-vsphere-cpu_scheduler.pdf e' "datato" dato che si riferisce ancora alla versione 4, ma i concetti sono ancora validi.

Per le domande specifiche: si, quando parlo di core intendevo anche core logico in caso di HT attiva.

Per quanto riguarda "Devi pero' pensare alla vCPU come a un processo che puo' essere in esecuzione, in ready, in wait..." mi sto riferendo ai concetti di scheduling della cpu indipendemente dal contesto virtuale: e' un tema trattato normalmente nei corsi di sistemi operativi delle varie facolta' di informatica/ingegneria informatica. Se googli un po' troverai su vari siti universitari numerose presentazioni sull'argomento.

Non te ne segnalo una in particolare perche' il mio preferito resta il libro di Tanenbaum Smiley Happy

Giuseppe

Giuseppe | vExpert 2011, 2012 | @gguglie | http://virtualbyte.wordpress.com | | If you find this post useful, please consider awarding points for "Correct" or "Helpful"
0 Kudos
mp_roma
Contributor
Contributor

Di nuovo grazie Giuseppe...

Purtroppo come ti dicevo sono proprio le basi a mancarmi Smiley Sad Vabbè cercherò di trovare qualcosa di "comprensibile" in rete...grazie ancora!!!

0 Kudos
GiuseppeG
Expert
Expert

Se mi permetti un po’ di autopromozione, ti segnalo per la parte di gestione della memoria la mia serie di post di qualche tempo fa (riferiti alla 4.1, ma i concetti restano validi):

http://virtualbyte.wordpress.com/2010/11/08/la-gestione-della-memoria-in-vmware-esx-4-1-parte-1/

http://virtualbyte.wordpress.com/2010/11/16/la-gestione-della-memoria-in-vmware-esx-4-1parte-2/

http://virtualbyte.wordpress.com/2010/11/28/la-gestione-della-memoria-in-vmware-esx-4-1-parte-3/

Non ho mai fatto una serie di post per la gestione della cpu, magari potrebbe essere un’idea ☺

Giuseppe

Giuseppe | vExpert 2011, 2012 | @gguglie | http://virtualbyte.wordpress.com | | If you find this post useful, please consider awarding points for "Correct" or "Helpful"