在使用perf與Intel-PT事件時,我遇到了反覆出現的問題。我目前正在執行一個英特爾(R)至強(R)CPU E5-2620 v4 @ 2.10GHz機器的分析,其x86_64架構和32個硬件線程啓用了虛擬化。我特別使用來自SpecCPU2006的程序/源代碼進行分析。從SPECCpu2006編譯的二進制文件上運行帶有Intel-PT事件的perf記錄會崩潰服務器機器
我特別觀察了我第一次從SpecCPU2006編譯好的二進制文件之一進行剖析,一切工作正常和perf.data文件被產生,這是預期與英特爾-PT。由於SpecCPU2006程序的計算量非常大(任何時候都使用100%的CPU),因此對於大多數程序來說,perf.data文件顯然很大。我大致獲得7-10 GB perf.data大多數配置文件的程序文件。
但是,當我嘗試在同一個編譯二進制上進行第二次性能分析時,第一次成功完成後 - 我的服務器機器凍結。有時候,當我嘗試第三次/第四次分析時(第二次或第三次分析成功完成後)會發生這種情況。這種行爲是非常不可預測的。現在除非我重新啓動機器,否則我無法再分析更多的二進制文件。
我也發佈了服務器錯誤日誌,當我看到計算機已停止響應時,就會得到這些錯誤日誌。
顯然有一個錯誤信息,說固定遞歸的錯,但需要重新啓動!
這種情況發生在足夠特別大的SpecCPU2006二進制文件中,這些文件需要超過1分鐘才能運行而無需執行。
有什麼特別的原因可能會發生這種情況嗎?這不應該由於CPU使用率過高而發生,因爲在沒有perf或perf的情況下運行程序,但是任何其他硬件事件(perf列表可以看到)成功完成。這似乎只發生在Intel-PT。
請指導我使用步驟解決此問題。謝謝。
任何人都可以幫助我或至少引導我嗎? –
Kalita,**你的內核版本是什麼?**「修復遞歸故障」是來自linux內核的消息,它是災難性的故障。你可以發佈完整的內核錯誤消息(因爲文本不像圖片;需要更多文本;它可能保存在/ var/log/messages或附近的其他文件中)?你可以升級你的內核到更新的版本嗎?在哪裏使用NFS,你不能使用它?什麼是精確的perf命令,你能設置較低的分析頻率嗎? (10GB的perf.data文件聽起來太龐大,無法用於分析) – osgx
嗨@osgx謝謝!現在已經解決了。有一個空指針解引用問題發生在結構體'perf_event'的成員(我從'var/log/syslog'中獲得了這個)。如果我在早期執行「perf record」之前就開始捕獲數據包,則可能發生這種情況。這已在內核版本4.10中得到解決。我正在使用內核版本4.4 –