Ralph- a écrit :
si ton CPU est bloqué par des IO, l'ensemble de la machine se bloque quasiment, alors que les programme récent profite pas mal de 2 à 4 cores en général.
|
Faux (en partie) !
Le principe de base de l'état d'un process est le suivant :
Un ordonnanceur établit quel process est élu. Pour être élu, le process doit être en statut prêt. Si il n'est pas dans ce statut, alors il passe au process suivant.
Il existe ainsi trois statuts de process (simplifié) :
- Elu : c'est le process qui tourne actuellement. Il ne peut y en avoir qu'un par (v)Core (on oublie ici l'Hyper-threading, etc).
- Prêt : c'est un process qui est actuellement en attente d'être élu. Son job est terminé, et il n'a plus besoin que du CPU pour continuer sa routine.
- Bloqué : ce process ne peut pas être élu. Il est bloqué car il est en attente d'une ressource externe (lecture disque dur, USB, etc). Le DMA est alors chargé de rapatrier les infos nécessaire du périphérique vers la mémoire où réside le process. Quand le DMA a terminé son job, il positionne un flag pour le process pour qu'au prochain tick horloge, l'ordonnanceur place le process de bloqué à prêt.
Donc grosso-modo, et c'est une discussion que j'ai déjà eu ici en interne, quand une VM est vachement lente, et que le total CPU usage du host est vraiment bas, il faut voir le soucis ailleurs. Il se peut que le nombre de vCore assigné est trop bas (1vCore par exemple), mais souvent ce sont les temps d'accès au VHD qui rend la VM très lente (si on ne prend pas en compte l'état de la mémoire, le swaping etc).
Message édité par Dysnome le 08-09-2014 à 14:05:26