当分页文件与操作系统驱动器分离时,为什么 Windows 7 不会记录崩溃详细信息,我可以对此做些什么吗?

Auf*_*nde 5 windows-7 virtual-memory

我有一个专门用于虚拟内存分页文件的辅助硬盘驱动器(一个单独的物理设备,而不是一个逻辑分区)。该驱动器比我的 RAM 大 3.5 倍,因此它足够大。

当我配置 Windows 7 的虚拟内存以将分页文件放在第二个硬盘上而不是与操作系统相同的驱动器上时,我被警告,

如果禁用分页文件或将初始大小设置为小于 800 兆字节并且出现系统错误,Windows 可能不会记录有助于识别问题的详细信息。你要继续吗?

因此,换句话说,如果出现蓝屏死机,我将无法调查原因,因为我将分页文件放在了更有效的位置。

我从网上搜索能找到的最好解释是,Windows 只是不想在与操作系统位置分开的驱动器上进行错误转储。 任何人都可以给我一个少废话的解释吗?

我不想告诉 Windows,“当然,继续管理主驱动器上的分页文件” 这样我就可以获得调试转储,因为这完全违背了物理分离分页文件的目的。 是否有解决方法可以将我的分页文件放在单独的驱动器上并仍然获得错误转储?

Jam*_*han 7

这个答案是针对OP问题的第二部分——“我可以为此做点什么吗?” 是的!

Windows Vista 及更高版本允许您指定称为“专用转储文件”的内容。(我将简称为 DDF。)

将其视为页面文件,但操作系统被告知永远不要将其用作页面文件(从而将实际的页面文件 I/O 保留在分页驱动器上)。但因为它“就像一个页面文件”,操作系统可以在出现 BSOD 时使用它来临时存储转储信息。重新启动后,它将被复制到您以正常方式指定的转储文件中。

更重要的是,DDF 甚至不必位于您的启动分区上!它可以位于“任何可以支持页面文件的本地卷”上。(这消除了可移动驱动器,例如 USB 上的任何驱动器和 Windows 集群存储。)

设置起来很简单,但没有 UI,因此确实需要调整注册表。

在注册表项中,创建一个名为REG_SZ 类型的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl值。DedicatedDumpFile将字符串设置为 DDF 所在位置的完整路径。您不必自己预先创建该文件。例如,C:\DUMPTEMP.SYS

默认情况下,操作系统将其大小设置为 RAM + 256 MB。您可以使用同一注册表项下的另一个注册表值手动指定大小:值名称DumpFileSize,类型 REG_DWORD,值 = 您想要的大小(以兆字节为单位)。这些将是微软风格的“二进制兆字节”。因此,如果您希望它是“4 GB”,实际上是“4 GiB”,则应该使用 1024 作为此处的值。

更多信息请参阅这篇 MSDN 文章

不过,当我在这里时,如果我没有指出“物理上分离的分页文件”通常没有什么区别,除非你经常访问它......如果你经常访问它,那会很重要添加RAM更有效。

您的所有进程正在使用的所有 exe、dll 和其他映射文件?实际上,这些也是页面文件!因此,将页面文件移动到另一驱动器只会隔离该文件的分页 I/O。您的系统仍将从操作系统驱动器上的所有其他内存映射文件进行分页,在某些情况下还会对这些文件进行分页。

同样,禁用页面文件并不会消除磁盘分页(当然也不会关闭虚拟内存) - 它只会消除操作系统分页的数百个文件中的一个。

然而,将唯一的页面文件移动到磁盘本身确实允许您使用该驱动器的磁盘 I/O 性能计数器来找出系统实际执行了多少页面文件 I/O。没有其他方法可以做到这一点,因为 PerfMon 计数器(例如“页面读取 I/O”)确实包括所有内存映射文件(例如 exe 和 dll)的页面读取 I/O。


LMi*_*er7 5

我相信原因是为了有更好的机会创建可靠的故障转储。发生 BSOD 时,系统处于不稳定状态,根本原因或其全部影响尚不清楚。该系统当然无法做出这样的判断,就像不能相信精神科医生可以对自己的精神状态做出判断一样。

因此,在进行故障转储时,保持事情尽可能简单非常重要。毕竟,BSOD 的根本原因可能在于文件系统本身。因此,故障转储会写入系统驱动器上的页面文件,而不是写入新创建的文件。我相信这是绕过文件系统完成的。写入另一个驱动器上的页面文件会使事情变得复杂。如果出现任何问题,其他文件或文件系统本身可能会损坏,并使问题变得更糟。

在 BSOD 后重新启动期间,系统被认为处于稳定状态,并且故障转储从页面文件复制到其最终目的地。然后页面文件可以恢复其正常功能。

  • “我相信这是绕过文件系统完成的”。正确的。来自 Windows Internals,C14“Crashdmp.sys,在磁盘微型端口驱动程序和任何所需的筛选驱动程序的支持下,将转储信息直接写入磁盘上由分页文件占用的扇区,绕过文件系统驱动程序和存储驱动程序堆栈(其中可能已损坏,甚至导致了崩溃)。” (3认同)