AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 12150
Accepted
SqlRyan
SqlRyan
Asked: 2009-05-26 21:32:26 +0800 CST2009-05-26 21:32:26 +0800 CST 2009-05-26 21:32:26 +0800 CST

DisablePagingExecutive 注册表更改是否有任何实际影响?

  • 772

在过去的许多机器上,在不同版本的 Windows(2000、XP 和无 Vista)上,我启用了 DisablePagingExecutive 以尝试提高性能。在每种情况下,我都有足够的记忆力,在当前情况下尤其如此。但是,在启用此注册表调整并重新启动后,我在一段时间后检查了任务管理器,即使我有 2GB 的可用物理内存,我仍然显示大量内核分页到磁盘。

有没有人成功使用过这个调整?曾经?当我检查任务管理器(性能选项卡 - >“内核内存”部分)时,也许我正在查看错误的指示器,但我想阻止 Windows 将所有可能的内容分页到磁盘,特别是考虑到提供的内存量这几天台式机。似乎应该存在“除非存在极大的内存压力,否则不要分页到磁盘”选项 - 有吗?

windows performance windows-registry
  • 8 8 个回答
  • 35810 Views

8 个回答

  • Voted
  1. Best Answer
    Larry Miller
    2009-08-20T08:07:55+08:002009-08-20T08:07:55+08:00

    互联网上有大量关于此功能的混淆。该设置仅影响称为执行程序的内核部分,然后仅影响可分页的部分。内核的其他部分完全不受此设置的影响。

    内核分页的工作方式与任何其他分页相同。经常访问的代码和数据将保存在 RAM 中,而其余的将保留在磁盘上——它所属的地方。系统不会从 RAM 中删除内核的任何部分,除非它找到了更好的用途。微软对分页系统进行了大量的研究和测试。

    在内核的上下文中,“非分页”是指在任何情况下都不能被分页的代码和数据。“分页”是指必要时可以分页的代码和数据。从任务管理器中无法得知实际被分页了多少。部分被分页的代码一开始就没有从磁盘读取,因为它还不需要。并非所有内核都被频繁访问。您不应期望分页和非分页号码会受到相关设置的影响。

    注意:当代码被调出时,它通常不会被复制到页面文件中。这不是必需的,因为它可以简单地从原始文件重新加载。这适用于大多数代码,而不仅仅是 kerenl。

    使用合理数量的 RAM,该设置基本上不会做任何事情。它只是防止系统分页它不想分页的数据。

    • 13
  2. Will Dean
    2009-05-27T02:09:21+08:002009-05-27T02:09:21+08:00

    我不确定你是否意识到这一点,但页面错误是 Windows 用来加载可执行代码的机制。因此,例如,将 DLL 映射到虚拟内存,然后根据需要使用页面错误从磁盘进行实际加载。页面文件不参与其中。

    所以很多你认为“分页到磁盘”的东西可能是最初在磁盘上的东西。

    • 4
  3. Roland Pihlakas
    2016-06-27T11:46:07+08:002016-06-27T11:46:07+08:00

    只是添加此设置的另一个用途:xperf堆栈遍历需要它。

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

    禁用寻呼执行器

    为了在 64 位 Windows 上进行跟踪,您需要设置 DisablePagingExecutive 注册表项。这告诉操作系统不要将内核模式驱动程序和系统代码分页到磁盘,这是使用 xperf 获取 64 位调用堆栈的先决条件,因为 64 位堆栈遍历依赖于可执行映像中的元数据,并且在某些情况下xperf 堆栈遍历代码不允许触摸分页页面。

    关于设置的另一条信息。这句话可以在互联网上找到,我不知道它的主要来源。

    DisablePagingExecutive 仅适用于 ntoskrnl.exe。它不适用于 win32k.sys(比 ntoskrnl.exe 大得多!)、其他驱动程序的可分页部分、分页池,当然还有文件系统缓存。所有这些都存在于内核地址空间中并被分页到磁盘。在低内存系统上,这可能会强制应用程序代码进行不必要的分页并降低性能。如果您的工作负载有足够的 RAM,是的,这不会受到伤害,但话又说回来,如果您的工作负载有足够的 RAM,那么系统无论如何都不会分页很多这些东西。此设置在调试驱动程序时很有用,通常建议仅在运行有限的知名应用程序集的服务器上使用

    因此可以得出结论,除了xperf-usage 之外,它的好处是模糊的:本质上,它限制了一些“几乎随机”的内容,无法进行分页和进一步思考 -因此导致其他内容被更频繁地分页。

    • 4
  4. Froosh
    2009-05-28T16:38:46+08:002009-05-28T16:38:46+08:00

    DisablePagingExecutive 调整不会停止分页,其目的是防止“执行”(即内核本身)被分页,从而导致整个系统变慢,而不仅仅是单个分页应用程序。

    您可以尝试通过删除系统属性(或 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles)中的所有页面文件来完全禁用分页。这对我来说效果很好,但是当你用完物理内存时事情会变得相当不愉快,并且你必须有一个页面文件来调试 STOP 错误。

    • 2
  5. Larry Miller
    2012-02-14T14:53:19+08:002012-02-14T14:53:19+08:00

    系统级组件,例如内核、执行程序和设备驱动程序,可以从两个池中分配内存。这些是分页池,可以由内存管理器决定分页,以及必须始终保留在 RAM 中的非分页池。开发人员根据自己的需要决定使用什么池。建议尽可能使用分页池,因为这使系统内存管理器具有最大的灵活性。这两个池的大小都是有限的,特别是在 32 位系统中,这些限制可能会造成问题。分页池要大得多。如果过度使用非分页池,可能会达到大小限制,这将导致一些严重的系统问题。

    任务管理器中标记为“分页”和“非分页”内核内存的项目显示了这些池的分配。它与实际调出多少内存的动态状态完全无关。“DisablePagingExceutive”注册表项会影响部分分页池的动态分页状态,因此询问管理器永远不会显示其效果。

    • 1
  6. WestdoX
    2018-09-07T23:09:17+08:002018-09-07T23:09:17+08:00

    如果您对系统设置进行更改,您需要了解此信息或其等效信息,以便了解对系统设置的更改会产生什么类型的结果,结果可能是积极的、中性的或消极的系统性能。

    您可以做的是在 Windows 中打开“资源监视器”。转到搜索工具并搜索“资源监视器”。或者打开运行命令工具(我假设任何阅读本文的人都知道如何操作)并输入“resmon”。

    使用此工具可以监控各种系统活动,例如 CPU 活动、内存活动和硬盘活动。如果您还不熟悉“资源监视器”包含的信息,那么请稍微研究一下,因为您需要熟悉它才能运行测试,这将帮助您衡量系统设置更改所产生的结果类型。

    基本思想是在让计算机系统运行某些任务时运行“资源监视器”,以测量更改系统设置所产生的与性能相关的结果。运行使用您尝试测试其性能的系统资源的任务。例如,有些任务可以测试处理器、RAM 内存、硬盘、图形处理器单元或网络设备。使用 google 了解如何测试您要测试的计算机资源的性能。

    例如,如果您对系统设置“禁用分页执行”进行了更改,您可以对计算机资源运行测试并使用“资源监视器”来测量更改产生的结果类型(如果有任何更改)。

    然后在数据之间进行比较,看看旧系统设置和您更改的新系统设置之间是否有任何显着差异。

    您可能并不总是需要使用“资源监视器”,因为一些测试系统资源性能的方法会随软件为您提供监控和测量。

    关键是您要遵循一种系统的方法来查看相对于您要求计算机执行的任务,更改是否对系统性能有任何影响。

    更改一项设置。测试它的性能变化。确定测试结果。根据结果​​,决定是否将设置更改回原来的设置或其他设置,或者将其保留在原处。1)设置 2)测试 3)结果 4)决定。

    您可以使用这种逻辑推演方法进行各种系统设置调整,包括“禁用寻呼执行”。

    快乐调整。

    • 1
  7. Smirk24
    2018-12-17T22:15:46+08:002018-12-17T22:15:46+08:00

    有很多!关于这篇文章的非常好的信息,我印象深刻。我注意到值为 1 的 DisablePagingExecutive 最好在桌面的第一个站点完成从 xp 到 Windows 10、32 位到 64 位的任何 Windows 版本的全新安装(只要主板上有足够的内存)但是在值 1 应用于 DisablePagingExecutive 之后。

    同样如上所述,这些调整通常在 Windows 服务器中进行,但在调试时也很方便。

    这些修改的使用风险自负,因此请考虑上面每个人提到的内容,谷歌提到的每个键都没有什么坏处,这些键是 DisablePagingExecutive。

    确保你有足够的内存。没有足够的 ram 会导致系统出现您不想处理的问题,并且可能会导致系统出现蓝屏 (bsod)。

    4gb 的 ram 将是我在上面应用这些调整的最低要求,如果你不使用使用大量 ram 的密集应用程序,或者如果你做任何游戏,那么最好不要管这些。

    (XP:至少 256 mb 的内存)

    在您在注册表中执行任何操作之前,最好将注册表备份到存储设备,而不是操作系统硬盘驱动器或任何类型的单独存储,以便您可以在需要时恢复注册表。

    我上面的信息确实跨越了 T 并点了 i。

    注意:与 DisablePagingExecutive 一起使用的另一个很好的调整是位于 Lanman 服务器/参数中的“大小”。“大小”注册表项有助于减轻硬盘驱动器的压力。您会注意到,一旦添加此键并将其值更改为 3,您的应用程序启动速度会有些慢,但是当您将 DisablePagingExecutive 设置为 1 并将 Size 值设置为 3 时,您最常用的应用程序或应用程序密集型 I/O 部分被放置在 ram 的缓存部分中,这反过来使应用程序加载更快。

    在应用 DisablePagingExecutive=1 和 Size=3 后,使用 passmark 性能测试我看到了相当大的改进。

                        Make sure to backup your system.
    
    • 1
  8. Björn Schacht
    2021-02-15T10:01:29+08:002021-02-15T10:01:29+08:00

    它按照它所说的去做,不要分页内核或驱动程序代码。

    它只是确保内核和驱动程序始终存在于内存中。

    回到您拥有奔腾 6xx 和 256 mb ram 的那一天,如果您的某些驱动程序代码或内核代码将被换掉,那么如果您有更多的 mb,那将会有所不同,但现在它的韦恩 Windows 无论如何都如此臃肿10GB 嗨。

    • 0

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve