Processore lento con macchine multiprocessore

0 Flares Twitter 0 Facebook 0 LinkedIn 0 Email -- 0 Flares ×

Può capitare che un sistema virtualizzato non risca a raggiungere il 100% di carico processore, e analizzandone il comportamento si scopre che l’idle time del processore è elevato.

Ho visto spesso nelle aziende due modi di affrontare il problema:

– assegnare una sola cpu alla VM per evitare lo switching tra le vCPU

– impostare la cpu affinity per forzare l’uso di uno specifico core fisico

Queste soluzioni sono corrette? NO. La prima ovviamente limita la potenza che si può assegnare a una VM, e prima o poi capiterà di dover avere macchine smp. La seconda crea notevoli problemi sia alle altre VM ospitate in quell’host (potrebbero performare meglio o peggio a seconda che usino i core liberi o quelli con l’affinity) sia a sistemi come vmotion e drs.

La soluzione corretta è modificare il file vmx della VM (quindi dovremo prevedere un fermo macchina) e impostiamo questi due parametri:

monitor.idleLoopSpinBeforeHalt = true
monitor.idleLoopMinSpinUS = N

dove N sarà un valore inferiore a 2000 (ad esempio 100 o 250…).  Non mettete parametri elevati, altrimenti la macchina genererà un idle time ancora maggiore!