我試圖在主機上使用Intel-PT,而我在客戶機中運行一般軟件程序。所以我期望在主機上運行的Intel-PT將記錄所有相關的數據包(如PIP,FUP,TSC等)以及所有基於VM的數據包,如VMCS。當KVM-QEMU打開時,Intel-PT不記錄任何數據包
我用下面的命令 -
./perf kvm --host --guest --guestkallsyms=guest-kallsyms --guestmodules=guest-modules record -e intel_pt//
客kallsyms的評價和模塊是我從來賓複製到我的主機kallsyms和模塊文件。
然後我將啓動我的虛擬機。我將在客機上運行一個程序。程序執行完成後,我將在主機上按Ctrl + C(SIGINT)停止錄製。
我看到,當我嘗試使用PERF報告讀取使用下面的命令生成的文件 -
./perf kvm report -i perf.data.kvm
它返回「NO樣品中發現的。」這意味着Intel-PT未能記錄任何樣本。
注意:我發現對於我的處理器,MSR MSR_IA32_VMX_MISC
中的值的位14爲0。根據英特爾文檔,此位應該爲1,Intel-PT將用於VMX操作。這是否會以任何方式影響Intel爲何不記錄任何樣品?
即使虛擬機啓動,INTEL-PT工作嗎?或者是我的記錄數據的方法錯誤?
編輯:我正在使用Linux Kernel 4.11.3,具有Ubuntu 17.04和支持Intel-PT的Broadwell CPU。
我認爲英特爾PT必須在UEFI中啓用,因爲它傾向於導致安全問題。你確認處理器支持它,它已啓用?另外,如果PT可用且已啓用,則可能需要以root用戶身份運行命令。(我認爲我閱讀了英特爾的白皮書,但目前我找不到它)。 – jww
嗨@jww,感謝您的提供。我有PT可用和啓用,因爲我有以前用它來分析普通用戶空間程序。然而,我像你所說的那樣將命令作爲「sudo」運行,我有趣地遇到了分段錯誤。 –
PT不能與虛擬化功能一起使用。我不能說現在如果它是所有CPU的限制,或者只是像Broadwell這樣的早期實現。 – 0andriy