問題描述
新有了一臺機子,之前perf用的挺好的,新機子上出現了根本沒有Hardware event list的情況。 如下:
xxx@ubuntu:~$ perf list hw
List of pre-defined events (to be used in -e):
xxx@ubuntu:~$ sudo perf stat -a sleep 5
Performance counter stats for 'system wide':
20007.670689 cpu-clock (msec) # 4.000 CPUs utilized
612 context-switches # 0.031 K/sec
46 cpu-migrations # 0.002 K/sec
60 page-faults # 0.003 K/sec
<not supported> cycles
<not supported> instructions
<not supported> branches
<not supported> branch-misses
5.002194702 seconds time elapsed
顯然 像 cycles instructions 這些顯示爲<not supported>的Hardware event沒有被支持。我的數據裏頭最需要的是這兩個指標,這兩個指標也是最基礎的,肯定會被各個CPU所支持的。那麼一定是哪裏出了問題。(由於操作系統裝機不是自己裝的,我只能從軟件和驅動的角度去解決問題=>這個flag最終還是倒了)
基本信息
涉及到CPU核的問題,自然不同代數的CPU會有不一樣的硬件支持情況,讓我們輸出一下CPU信息。(我手上有兩個新機型)
xxx@ubuntu:~$ cat /proc/cpuinfo
***
model name : Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
***
model name : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
## 注意這裏所記錄的不是該指令的完整輸出結果,我只是截取了輸出中我感興趣的信息
讓我們去查詢一下Intel 的技術參考手冊。看看裏頭對於PMU(performance monitoring unit)的支持情況。【因爲perf對於信息的採集基於PMU硬件的支持】
這兩個CPU model不一樣,但是同屬
Xeon E5-2600 CPUs 家族
微體系架構爲:Sandy Bridge-EP
查看操作系統情況
spa@ubuntu:~$ sudo dmidecode -s system-manufacturer
VMware, Inc.
spa@ubuntu:~$ sudo dmidecode -s system-product-name
VMware Virtual Platform
OH NO!!
原因
Oh,no. 感謝硬件管理人員的辛勤工作。可惜還是給我裝了個虛擬機,而不是物理機。
1. 如果不重裝,我需要虛擬機權限去重新設置CPU 性能數據的透傳(1.我沒有權限,2.我太菜,沒設置過透傳)
可能有關的文檔如下(我沒有親自試過,留個參考):https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.vsphere.vm_admin.doc%2FGUID-F920A3C7-3B42-4E78-8EA7-961E49AF479D.html
2. 重新聯繫管理人員把操作系統裝在裸的物理機上。後續驗證loading...