2013-06-27 73 views
3

32位應用程序,我有兩個問題:是否需要disablepagingexecutive調整,讓xPerf到stackwalk在64位運行Windows

  1. 我發現了一個博客文章說,DisablePagingExecutive應使用xperf時設置:

    http://blogs.msdn.com/b/pigscanfly/archive/2009/08/06/stack-walking-in-xperf.aspx

    禁用分頁執行
    爲了使跟蹤在64位Windows上運行,您需要設置DisablePagingExecutive註冊表項。這告訴操作系統不要將內核模式驅動程序和系統代碼分頁到磁盤,這是使用xperf獲取64位調用堆棧的先決條件,因爲64位堆棧依賴於可執行映像中的元數據,並且在某些情況下不允許xperf堆棧行走代碼觸摸分頁出頁面。

    難道這需要收集xperf數據在64位Windows上運行32位應用程序?

  2. 在使用xperf爲64位操作系統上的32位進程收集數據時,應該使用x86還是x64版本?

回答

5

您應該設置disablepagingexecutive調整爲1和使用WPT的64位版本,如果你使用的是64位視窗。

64位版本的WPT是需要的,因爲32位版本甚至不會安裝在64位Windows上。

需要將DisablePagingExecutive設置爲1,因爲即使是32位程序也可以調用64位內核。爲了獲得包含內核代碼的完整調用堆棧,您需要將元數據鎖定到不可分頁的內存中,這是DisablePagingExecutive的設置。

只需設置它。它不會花費太多(它會使用更多的內存),如果設置它,則不需要擔心。

設置它的最簡單方法是使用跟蹤錄製UI。 wprui是一種選擇(它隨Windows Performance Toolkit提供),但我更喜歡UIforETW。 https://randomascii.wordpress.com/2015/09/24/etw-central/

+0

設置後不要忘記重新啓動。 –

0

必須使用WPT的64位版本,並且必須設置DisablePagingExecute爲1

+0

的詳細信息,並且在更改註冊表中的DisablePagingExecute的值後,建議重新啓動。 –