2017-07-08 5 views
1

J'essaie d'utiliser Intel-PT sur l'hôte, pendant que j'exécute un logiciel général sur l'ordinateur invité. Donc, ce que je m'attends à ce que Intel-PT s'exécute dans l'hôte va enregistrer tous les paquets pertinents (comme PIP, FUP, TSC etc.) et aussi tous les paquets VM comme VMCS.Intel-PT n'enregistre pas de paquets lorsque KVM-QEMU est allumé

-je utiliser la commande ci-dessous -

./perf kvm --host --guest --guestkallsyms=guest-kallsyms --guestmodules=guest-modules record -e intel_pt//

guest-kallsyms et modules guest-sont les kallsyms et les fichiers du module I copiés à partir de l'invité sur mon hôte.

Je vais ensuite démarrer ma machine virtuelle. Je vais lancer un programme sur la machine invité. Une fois l'exécution du programme terminée, je vais appuyer sur Ctrl + C (SIGINT) dans mon hôte pour arrêter l'enregistrement.

Je vois qu'une fois que j'essaie d'utiliser le rapport perf pour lire le fichier généré à l'aide de la commande ci-dessous -

./perf kvm report -i perf.data.kvm

Il retourne « NO ÉCHANTILLONS TROUVÉS ». Cela signifie que Intel-PT n'a pas réussi à enregistrer des échantillons.

NOTE: Je trouve que le bit 14 pour la valeur dans le MSR MSR_IA32_VMX_MISC est 0, pour mon processeur. Conformément à la documentation Intel, ce bit doit être 1 pour que Intel-PT soit utilisé dans l'opération VMX. Est-ce que cela affecte d'une manière ou d'une autre la raison pour laquelle Intel-PT n'enregistre aucun échantillon?

Est-ce que INTEL-PT fonctionnera même lorsque la VM est allumée? Ou ma méthode d'enregistrement des données est-elle incorrecte?

Éditer: J'utilise Linux Kernel 4.11.3, ayant Ubuntu 17.04 et un processeur Broadwell, qui supporte Intel-PT.

+0

Je pense que Intel PT doit être activé dans l'UEFI en raison de sa propension à causer des problèmes de sécurité. Avez-vous confirmé que le processeur le supporte et qu'il est activé? En outre, vous devrez peut-être exécuter votre commande en tant que root si PT est disponible et activé.(Je pensais lire un livre blanc sur Intel, mais je ne le trouve pas pour le moment). – jww

+0

Salut @jww, merci pour l'information. J'ai PT disponible et activé car j'ai profilé les programmes d'espace utilisateur normales précédemment avec elle. Cependant, j'ai couru la commande en tant que "sudo" comme vous l'avez dit, j'ai couru intéressant dans une faute de segmentation. –

+0

PT ne peut pas être utilisé avec la virtualisation activée. Je ne peux pas dire maintenant si c'est une limitation pour tous les processeurs, ou seulement pour une implémentation précoce comme Broadwell. – 0andriy

Répondre

1

Puisque j'ai maintenant une idée claire de la raison pour laquelle Intel-PT ne fonctionne pas avec QEMU-KVM, je vais poster une réponse.

Comme je l'ai mentionné dans la question, la raison principale pour que cela ne fonctionne pas est le fait que le bit 14 pour la valeur dans le MSR MSR_IA32_VMX_MISC est 0, pour mon processeur. Conformément à la documentation Intel, ce bit doit être 1 pour que Intel-PT soit utilisé dans l'opération VMX root (entre VMXON et VMXOFF).

Le principal problème est que lorsque le bit ci-dessus est 0, une instruction VMXON fixeront les TraceEn composant de IA32_RTIT_CTL MSR à 0. Ce composant contrôle l'opération de traçage, si cela est remis à zéro, aucune donnée de traçage est écrit le tampon. Cette réinitialisation est contrôlée au niveau du matériel.

Pour effectuer cette activité, il est nécessaire d'avoir au moins un processeur Skylake. J'utilisais un système Broadwell, qui, comme il semble maintenant, ne fonctionnera pas.