
Originariamente Scritto da
Antonio
Ciao,
KVM utilizza lo scheduler del kernel linux per gestire le VM (ogni vm è vista come un processo a se stante); se ci sono più VM che core a disposizione avrai ovviamente 1 core assegnato a 2 o più VM e, purtroppo, non avrai fair share delle CPU da parte delle VM (e non è possibile neanche assegnare XX% di CPU a VM).
E' un pò come se le vm si rubassero cicli cpu a vicenda, questo significa che se hai 2VM su una cpu ed una di queste si appropria della CPU per calcoli intensivi, all'altra VM non resta che aspettare e sperare che la prima VM diminuisca l'uso della CPU.
Seeweb ha aggirato il problema non facendo overbooking della CPU, quindi presumibilmente si avranno ad esempio 8VM su un server octacore
EDIT: naturalmente con xen e vmware ciò non accade perché è il virtualizzatore che gestisce CPU, ram e quant'altro (con maggiore overhead rispetto a kvm, come è logico attendersi). Ci vorrebbe uno scheduler per il kernel linux fatto appositamente per essere usato con KVM, ma non mi sembra ci sia una cosa del genere attualmente (mi piacerebbe essere smentito se qualcuno sa qualcosa

).
Giusto per far capire che non sono io paranoico:
CFS Optimizations to KVM Threads on Multi-Core Environment
Conferenza di metà dicembre 2009 che tratta il problema e spiega che con KVM non è che sia molto fair lo scheduler linux (in realtà il fatto è che trattando le vm come normali processi sorgono diversi problemi)
Segnalibri