2011-02-01 1 views
0

Ma question concerne les interruptions et comment sont-elles transmises lorsque l'invité s'exécute en KVM?Que se passe-t-il sur une interruption lorsque l'invité est en cours d'exécution?

Disons que lorsque kvm appelle vmentry ou vmresume, le code invité commence à s'exécuter. Maintenant, quand une interruption externe dit interruption de minuterie se produit, l'invité provoquera un vmexit. Après Vmexit, l'instruction suivante dans kvm sera exécutée ou l'appelant d'interruption de l'hôte sera appelé. Si l'instruction suivante dans kvm est appelée, alors kvm peut faire ce qu'il veut, puis appeler le gestionnaire d'interruption de l'hôte approprié.

Merci,

+0

Il fonctionnera toujours sous le processus du noyau, pourquoi les processus ou les droits de l'espace utilisateur auraient-ils quelque chose à voir avec l'espace noyau? – leppie

Répondre

1

Sur Intel VT-x, toutes les interruptions provoquent un piège dans le système d'exploitation hôte. L'hôte déterminera alors si l'interruption est:

  • Pour lui-même (dans ce cas, il va la traiter, ce qui peut-être KVM à s'asseoir non planifié depuis un certain temps); ou

  • Pour l'invité, auquel cas il informera KVM de l'interruption. À son tour, KVM injectera l'interruption dans l'invité. (Notez que cette partie de KVM s'exécute en mode noyau, mais je suppose que vous considérez toujours ceci comme étant KVM).

Dans les deux cas, le système d'exploitation hôte prend le contrôle en premier. Un peu plus sans rapport, mais une extension de VT-x qui rendrait les gars de la virtualisation plus heureux est que certaines interruptions puissent être envoyées directement à l'invité, évitant ainsi le piège dans l'hôte (et la pénalité de performance associée). Hélas, cela ne semble pas encore sur les cartes.

+0

Merci pour la réponse. En ce qui concerne votre deuxième point, je pense que c'est possible quand il y a un appareil relais. Comme l'hôte ne le sait pas, le gestionnaire d'interruption invité sera toujours appelé. – zombie

+0

Actuellement sur VT-x toutes les interruptions se piègent dans l'hôte, qui doit les transmettre à l'invité si nécessaire. Cela provoque malheureusement de réels problèmes de performances et, espérons-le, sera amélioré par Intel lors d'une révision ultérieure de VT-x. – davidg

+0

Re: votre amélioration suggérée, que se passerait-il si l'invité n'était pas en cours d'exécution lorsque l'interruption est arrivée? – caf

Questions connexes