是否需要DisablePagingExecutive以允许xPerf在64位Windows上运行的32位应用程序的stackwalk

use*_*574 3 xperf

我有两个问题:

  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. xperf64位操作系统上收集32位进程的数据时,我应该使用x86还是x64版本?

Bru*_*son 6

如果您使用的是64位Windows,则应将DisablePagingExecutive设置为1并使用64位版本的WPT.

需要64位版本的WPT,因为32位版本甚至不能安装在64位Windows上.

需要将DisablePagingExecutive设置为1,因为即使是32位程序也可以调用64位内核.为了获得包含内核代码的完整调用堆栈,您需要将元数据锁定到不可分页的内存中,这就是设置DisablePagingExecutive所做的事情.

只需设置它.它不会花费太多(它使用更多的内存),如果你设置它,你不需要担心它.

最简单的设置方法是使用跟踪记录UI.wprui是一个选择(它附带Windows性能工具包),但我更喜欢UIforETW.详情请访问https://randomascii.wordpress.com/2015/09/24/etw-central/